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

time-segments.js

v0.1.1

Published

Group event data into segments of time.

Downloads

4

Readme

time-segments.js

Travis build status Dependency Status devDependency Status

Group event data into segments of time.

Motivation

Displaying data along a timeline requires grouping that data. Consider displaying events on a calendar. If the calendar has a resolution of weeks, and each week can be represented by at most one item, then all of the events for a given week will need to be grouped together.

Terminology

Event

An Event is an object with at least properties:

start - A start time
end - An end time

These two attributes can either be a moment, or a string that can be formatted into a moment. If it is the latter, you will need to pass the timeFormat option so that moment can parse the string correctly. For more, refer to the moment docs.

It is almost always the case that events will have a unique ID, and possibly other data, associated with them. This library is agnostic to that extra data.

Scale

The Scale is the resolution of the segmenting. It can be any of the resolutions supported by moment.js. A short list of examples include days, years, weeks. Moment's abbrevations are also supported, as in w for weeks.

Segments

Segments are an Object representing the groups of events. Each key of the Object is the starting unix timestamp of the segment. The value of each key is the array of events that occur during that segment.

API

This library exposes a single method. It takes in an array of Events and returns an array of Segments.

segment( events, scale [, options] )

Takes in an array of events and a scale, returns a segments Object. The default scale is weeks. Optionally pass options to configure the algorithm.

The available options are:

startAttribute - the name of each Event's start attribute
endAttribute - the name of each Event's end attribute
timeFormat - required if your start and end attributes are strings. Refer to the moment docs for more.