A small wrapper around crossfilter to make querying simpler
JavaScript Makefile
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.gitignore
.travis.yml
History.md
LICENSE
Makefile
README.md
component.json
index.js
package.json

README.md

Build Status

simple-filter

A small wrapper around crossfilter to make querying simpler

Installation

Install with component(1):

$ component install Wizcorp/simple-filter

Install with npm:

$ npm install simple-filter

API

Get the constructor function

var Filter = require('simple-filter');

Create a crossfilter

var data = [{object}, {object}, etc...];
var indexes = {
	id: function (value) { return value.id }
};

// both values are optional
var filter = new Filter(data, indexes);

addIndex(name, func)

Create an index name using function func.

// create an index named name for the lowercase value of the name
filter.addIndex('name', function (value) { return value.name.toLowerCase(); });

delIndex(name)

Delete index with given name.

filter.delIndex('name');

hasIndex(name)

Does index name exists.

filter.hasIndex('name');

addRecords(data)

Add one or more values to the filter data

filter.addRecords([{object1}, {object2}, etc...]);

delRecords(filters)

Delete records based on given filter, see get for more details about filters

// delete row with id "foobar"
filter.delRecords({ id: "foobar" });
// delete all data
filter.delRecords();

get

Get records from the filter

// add an index on name and age, and feed lots of lines containing value
var filter = new Filter(data);
filter.addIndex('name', function (value) { return value.name.toLowerCase(); });
filter.addIndex('age', function (value) { return value.age; });

// get all people that are 20 years old, sort by name
filter.get({ age: 20 }, ['name']);

// filters also support comparison operators (<, >, >= or <=) for numbers
// for example get all people under 18 years old
filter.get({ age: '<18' });

// or all the people between 20 and 30
filter.get({ age: [20, 30] });

// or all the people whose name start by "chris", sorted by age
filter.get({ name: function (v) { return (v.indexOf('chris') === 0); } }, ['age']);

size()

Give the amount of records in the filter

License

MIT