Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

filterhandler

dhershman15MITdeprecated1.1.0

This module is heavily outdated and no longer supported

Handles filtering data sets and getting you filtered information

filters, sorting, easy filters, customizable

readme

Build Status

Filter Handler

Changelog

You can find the changelog here: https://github.com/dhershman1/FilterHandler/blob/master/changelog.md

Setup

Simply require filterhandler and initialize it with some options

const filterhandler = require('filterhandler')(options)

Options

options include:

  • trackHistory - keep track of filter and data search history default: false
  • searchableData - the data filterhandler will be managing send as an array
  • pageSize - how many items should filterhandler limit the return to? default: 10 set to null or 0 to disable

Usage

const filterhandler = require('filterhandler')({
  trackHistory: true,
  searchableData: [{name: 'Bob'}, {name: 'Andrew'}, {name: 'Carson'}]
});

//Click sort event happens
filterhandler.sortBy('name');
//Output: [{name: 'Andrew'}, {name: 'Bob'}, {name: 'Carson'}]
//History: {name: [{name: 'Andrew'}, {name: 'Bob'}, {name: 'Carson'}]}

Public Functions

getHistory()

Gets history data and returns it IF data is being tracked, else it will return an empty object

Usage
filterhandler.getHistory();

filterByTerm(term, key)

Filter the array by the given term

  • term - The string term to search for
Usage
var mockData = [{
    name: 'Billy',
    position: 'Kool Kid',
    grade: 'G'
}, {
    name: 'Albert',
    position: 'Alpaca',
    grade: 'Grass'
}, {
    name: 'Zeb',
    position: 'House Guy',
    grade: 'Woods'
}, {
    name: 'Joey',
    position: 'News Guy',
    grade: 'Woods'
}];

filterhandler.filterByTerm('woods', 'grade');
/*Output: [ { name: 'Zeb', position: 'House Guy', grade: 'Woods' },
      { name: 'Joey', position: 'News Guy', grade: 'Woods' } ]
*/

search(term)

Searches data and returns an object of data that matches the search

  • term - The string term to search for
Usage
//Data:[{ name: 'Billy', age: 17, status: 'Good' }, { name: 'George', age: 16, status: 'Good' }, { name: 'Samantha', age: 16, status: 'Fantastic' }]
filterhandler.search('Billy');
//Output: [ { name: 'Billy', age: 17, status: 'Good' } ]

sortBy(key, reverse)

Sorts data based on key given also supports sorting by dates

  • key - A key you wish to sort by (it will take the key value of the object to sort with)
  • reverse - A boolean if you want the sorted array to be reversed before being sent back
Usage
//Data: [{ name: 'Billy', position: 'Kool Kid', grade: 'G' }, { name: 'Albert', position: 'Alpaca', grade: 'Grass' }]
filterhandler.sortBy('name');
// Ouput: [{ name: 'Albert', position: 'Alpaca', grade: 'Grass' }, { name: 'Billy', position: 'Kool Kid', grade: 'G' }]
filterhandler.sortBy('name', true);
// Ouput: [{ name: 'Billy', position: 'Kool Kid', grade: 'G' }, { name: 'Albert', position: 'Alpaca', grade: 'Grass' }]

sortByDate(dateKey, reverse)

Sorts data based on date values given

  • dateKey - The key with which you want to find dates under
  • reverse - A boolean if you want the sorted array to be reversed before being sent back
Usage
var mockDates = [{
    name: 'Kelly',
    startDate: '09/15/2016'
}, {
    name: 'Ben',
    startDate: '01/05/2016'
}, {
    name: 'Frank',
    startDate: '10/14/2012'
}];

filterhandler.sortByDate('startDate');
/*Output: [ { name: 'Frank', startDate: '10/14/2012' },
      { name: 'Ben', startDate: '01/05/2016' },
      { name: 'Kelly', startDate: '09/15/2016' } ]
            */

highlight(term)

Goes through the given data and tries to find and match a provided term to data, it will then place a property of highlight within it which will be a boolean of true

  • term - The string term to search for to add highlight onto
Usage
//Data: [{ name: 'Billy', position: 'Kool Kid', grade: 'G' }, { name: 'Albert', position: 'Alpaca', grade: 'Grass' }]
filterhandler.highlight('Grass');
// Ouput: [{ name: 'Billy', position: 'Kool Kid', grade: 'G' }, { name: 'Albert', position: 'Alpaca', grade: 'Grass', highlight: true }]

offset()

Modifies the count of data to give you on offset amount. This is by default called at the end of every function to make sure you get the correct data count back. To disable offset simple set the pageSize option either to null or 0

Usage
//opts.pageSize: 2
let data = [{ name: 'Kelly', startDate: '09/15/16' }, { name: 'Ben', startDate: 'Janurary 5, 2016' }, { name: 'Frank', startDate: '10/14/12' }]
filterhandler.offset(data);
//Output: [ { name: 'Frank', startDate: '10/14/12' }, { name: 'Ben', startDate: 'Janurary 5, 2016' } ]

clear

Clears out history and returns both the default data and the empty history object back to the caller as an object

Usage
//History: {name: [{name: 'Andrew'}, {name: 'Bob'}, {name: 'Carson'}]}
filterhandler.clear();
//Output: {data: defaultData, history: {}}

changelog

Changlelog

v1.1.0

  • Complete restructure of the module
  • Added support for partials in search and highlight
  • Removed moment dependency
  • Added sortByDate
  • Added filterByTerm
  • Added getHistory
  • Removed get
  • Removed set
  • Rewrote sortBy
  • Rewrote search
  • Fixed clear
  • Tweaked offset
    • offset will now slice data instead of looping, should boost performance for large data sets.
    • offset now uses a pageNumber option
  • Removed ES6 code

v1.0.1

  • Fix a typo in the readme