npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

streamy-mcstreamface

v1.0.0

Published

Draws streaming line graphs that auto-scale and scroll to an HTML canvas.

Downloads

5

Readme

streamy-mcstreamface

Tired of JavaScript charting libraries? Want to just draw some god damn lines to visualize your streaming data, with auto-zoom and auto-scroll, but without anything fance and usless, like axes labels? You've come to the right place. Introducing Streamy McStreamface.

Demo

stonks.png Please try this very sophisticated demo to convince yourself that Streamy McStreamface is what you've always been looking for.

Please also look at the prestine source code of this demo.

Usage

First you need to get my fine code into your project. You have two choices. Option 1:

<script src="https://unpkg.com/@marioslab/streamy-mcstreamface/dist/iife/streamy-macstreamface.min.js">

That's for very cool old people like me. Every function and "class" is exposed on the global streamy object.

If you are young and don't know any better, you may want to manage your project dependencies with NPM and use a bundler with a barrel to energize minified bundles you can then throw at your kubernetes cluster or something:

npm install @marioslab/streamy-mcstreamface

And in your JavaScript or TypeScript sources, import the thing:

import * as streamy from "@marioslab/streamy-macstreamface"

Great, you can finally write some damned JavaScript code. Let's start with HTML tho. You'll need a canvas to render those beautiful lines to:

<canvas id="foo"></canvas>

Streamy McStreamface doesn't care what CSS abomination you attach to that innocent canvas. You do you.

It's time to write code. Let's start by creating the chart and some objects holding the data.

let canvas = document.querySelector("canvas");
let chart = new streamy.Chart(canvas, { padding: 10, numSamples: 400 });

You told the new chart about the padding measured in pixels, and how many samples should maximally be shown in the chart. Let's add some data.

let line = chart.addLine("my data", "green");
for (var i = 0; i < 200; i++) line.add(Math.random() * 100);

We've added a line to the chart called "my data" that will be drawn with the (CSS) color green. We've also added 200 random values to the line, just for fun.

You won't see anything on screen tho. For that, you have to tell the chart to render itself onto the canvas.

chart.render();

The chart will scale the last numSamples data points in the line to fit inside the canvas, minus the padding. That also works if you've added multiple lines to the chart.

And that's it. Keep adding data to your line(s) via line.add(value), then call chart.render(). When and how you do that is totally up to you.

Will you add feature $X

No.

Development

Install Git, Node.js, and Visual Studio Code. Then:

git clone https://github.com/badlogic/streamy-mcstreamface
cd streamy-mcstreamface
npm run dev
code.

Press F5, modify code, press CTRL+S, see the page auto-update with your changes, set some breakpoints. Just do your programmer thing.