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

dc-rangeslide

v0.1.4

Published

Slider chart for use with dc.js

Downloads

7

Readme

rangeslide.js

Customizable range slider with labels (but without jQuery)

Table of contents

Screenshots

Rangeslide with labels and tooltip Example with different label positioning

Quick start

Several quick start options are available:

Download the latest build

Development
Production

Install From Bower

bower install rangeslide.js --save

Install From Npm

npm install rangeslide.js --save

Done!

Usage

Including files:

<link rel="stylesheet" href="/path/to/rangeslide.css">
<script src="/path/to/rangeslide.js"></script>

Required HTML structure

<div id="rangeslide" class="rangeslide"></div>

Initialization

All you need to do is invoke rangeslide on an element:

var myRangeslide = rangeslide(domNode, options);

You can also initialize with css selector string:

var myRangeslide = rangeslide("#elementId", options);

Examples

There are some example usages that you can look at to get started. They can be found in the examples folder.

Options

rangeslide.js can accept an options object to alter the way it looks and behaves. If no options object is passed default values are used. The example of a structure of an options object is as follows:

{
  data: [
  	{ name: "example1", item: "Example text" },
  	{ name: "example2", item: "Another example text" },
  	{ name: "example3", item: function() { return "And yet another example text"; }
  ],
  showLabels: true,
  showTicks: true,
  labelsPosition: "alternate",
  startAlternateLabelsFromTop: true,
  startPosition: 0,
  thumbHeight: 16,
  thumbWidth: 16,
  handlers: {
    initialized: function(rangeslideElement) {},
    valueChanged: function(data, rangeslideElement) {},
    markerClicked: function(data, markerElement) {}
  }

Here is the explanation of options object:

Option | Type | Description | Default | Options --------------------------- | ------- | ------------------------------------------------------- | ------- | ---------- | autoPlay | Boolean | Enable auto play mode | false | autoPlayDelay | Number | Delay (in miliseconds) between steps in auto play mode | 1000 | data | Array | Array of data objects (property 'name' is mandatory | [] | enableLabelClick | Boolean | Enable click on labels | true | enableMarkerClick | Boolean | Enable click on track markers | true | enableTrackClick | Boolean | Enable click on track | true | handlers | Object | Event handlers collection | {} | highlightSelectedLabels | Boolean | Enable highlighting of selected labels | false | labelsPosition | String | Position of labels on a rangeslide | 'below' | 'above', 'below', 'alternate' labelsWidth | Number | Width of labels | 60 | leftLabel | String | Text to display on left side label | "" | loop | Boolean | Enable loop when auto play mode is active | true | markerSize | Number | Size of track marker (pixels) | 14 | rightLabel | String | Text to display on right side label | "" | showLabels | Boolean | Show/hide labels | false | sideLabelsWidth | Number | Width of left and right side labels | 40 | showTrackMarkersProgress | Boolean | Indicate progress on markers | false | showTicks | Boolean | Show/hide label ticks | false | showTrackMarkers | Boolean | Show/hide track markers | false | showTrackProgress | Boolean | Indicate progress on track | false | showValue | Boolean | Show/hide value indicator | false | startAlternateLabelsFromTop | Boolean | Show first label above if labelsPosition is 'alternate' | false | startPosition | Number | Initial position of rangeslide thumb | 0 | stepSize | Number | Size of rangeslider step | 16 | thumbHeight | Number | Height of thumb element (in pixels) | 16 | thumbWidth | Number | Width of thumb element (in pixels) | 16 | tickHeight | Number | Height of label's tick (in pixels) | 16 | trackHeight | Number | Height of rangeslide track (in pixels) | 7 | valueIndicatorOffset | Number | Value indicator offset from rangeslider thumb | 5 | valueIndicatorWidth | Number | Width of value indicator (in pixels) | 32 | valueIndicatorHeight | Number | Height of value indicator (in pixels) | 32 | valuePosition | String | Position of value indicator | 'thumb' | 'above', 'below', 'thumb' valueSource | String | Source of data for value indicator | 'index' | 'index', 'name', 'item'

Data

Data collection for rangeslide is provided during instatiation or later using "data" attribute in options. Number of steps (markers) for a slider is equal to number of items passed in this attribute. Each data item is required to have at least "name" attribute (String). You can also pass additional data using "item" attribute. Below is an example of proper data setup:

rangeslide("#element" {
	data: [
    	{ name: "data1", item: "simple string data"},
        { name: "data2", item: ["data", "in", "a", "form", "of ", "an", "array"] },
        { name: "data3", item: function() { return "data in a form of a function"; } },
        { name: "data4", item: { "passing": "object", "as": "data" } },
        { name: "data5" }
    ]
})

Rangeslide constructed with the above data will have 3 steps (markers).

Methods

Methods are called on rangeslide instances. You shoud save the instances to variable to have further access to it.

Object getValue()

Get current rangeslide value.

var item = rangeslide.getValue();

DOMNode getElement()

Gets rangeslide's DOM node object.

var node = rangeslide.getElement();

void setValue(Number index)

Set rangeslide value by specifying data index.

rangeslide.setValue(2);

void setValueByName(String name)

Set rangeslide value by specifying data name. If multiple data items with the same names are found first one is set.

rangeslide.setValueByName("exampleName");

void setOption(String name, Object value)

Gets rangeslide's DOM node object.

rangeslide.setOption("autoPlay", true);

void refresh()

Manually refresh and redraw rangeslide. Invoked automatically when options change.

rangeslide.refresh();

Events

rangeslide.js provides custom events for some of it's actions. Appropriate callbacks can be specified in options.

Event | Description | Arguments ----------------- | --------------------------------------- | ------------------ | valueChanged | Fires after slider value is changed | dataItem, rangeslideElement playStart | Fires when auto play is started | dataItem, rangeslideElement playStop | Fires when auto play is stopped | dataItem, rangeslideElement initialized | Fires after slider is initialized | rangeslideElement refreshed | Fires after slider is refreshed | rangeslideElement trackClicked | Fires after slider track is clicked | dataItem, trackElement labelClicked | Fires after label is clicked | dataItem, labelElement markerClicked | Fires after track marker is clicked | dataItem, markerElement thumbDragStart | Fires when thumb dragging is initiated | dataItem, thumbElement thumbDragged | Fires when thumb is being dragged | dataItem, thumbElement thumbDraggedEnd | Fires when thumb is dropped | dataItem, thumbElement

Event handlers are passed in rangeslide options like in the example below:

rangeslide("#element" {
	handlers: {
    	"valueChanged": [function(data, element) { console.log(data); }],
        "labelClicked": [
        	function(data, element) { console.log(data); },
            function(data, element) { return data.name; },
            function(data, element) { element.style.backroundColor = "#e2e3e4"; },
        ]
    }
})

Copyright and license

Licensed under MIT license.

^ back to top