src/filter.js

Method factory

DataListFilter factory

Parameters:

  • obj must be an Object.
    (Element to receive the filter)

  • datalist must be an Object.
    (Data list linked to the data store)

  • filters must be a String.
    (Comma delimited string of fields to filter by)

  • debounce must be a Number.
    ([Optional] Milliseconds to debounce)

Returns an Object
(DataListFilter instance)

var filter = function ( obj, datalist, filters, debounce ) { debounce = debounce || 250; var ref = [datalist]; if ( !( obj instanceof Element ) || ( datalist !== undefined && datalist.store === undefined ) || ( typeof filters !== "string" || string.isEmpty( filters ) ) ) { throw new Error( label.error.invalidArguments ); } return new DataListFilter( obj, ref[0], debounce ).set( filters ).init(); };

Constructor

DataListFilter

Parameters:

  • obj must be an Object.
    (Element to receive the filter)

  • datalist must be an Object.
    (Data list linked to the data store)

  • debounce must be a Number.
    ([Optional] Milliseconds to debounce)

function DataListFilter ( element, datalist, debounce ) { this.element = element; this.datalist = datalist; this.debounce = debounce; this.filters = {}; }

Setting constructor loop

DataListFilter.prototype.constructor = DataListFilter;

Method init

Initiate all event listeners

Returns an Object
(DataListFilter instance)

DataListFilter.prototype.init = function () { observer.add( this.element, "keyup", this.update, "filter", this ); observer.add( this.element, "input", this.update, "value", this ); return this; };

Method set

Set the filters Create an object based on comma separated key string

Parameters:

  • fields must be a String.
    (Comma separated filters)

Returns an Object
(DataListFilter instance)

DataListFilter.prototype.set = function ( fields ) { var obj = {}; array.each( string.explode( fields ), function ( v ) { obj[v] = ""; }); this.filters = obj; return this; };

Method teardown

Cancel all event listeners

Returns an Object
(DataListFilter instance)

DataListFilter.prototype.teardown = function () { observer.remove( this.element, "keyup", "filter" ); observer.remove( this.element, "input", "value" ); return this; };

Method update

Update the results list

Returns an Object
(DataListFilter instance)

DataListFilter.prototype.update = function () { var self = this; utility.defer( function () { var val = element.val( self.element ).toString(); if ( !string.isEmpty( val ) ) { utility.iterate( self.filters, function ( v, k ) { var queries = string.explode( val );

Ignoring trailing commas

queries = queries.filter( function ( i ) { return !string.isEmpty( i ); });

Shaping valid pattern

array.each( queries, function ( i, idx ) { this[idx] = "^.*" + string.escape( i ).replace( /(^\*|\*$)/g, "" ).replace( /\*/g, ".*" ) + ".*"; }); this[k] = queries.join( "," ); }); self.datalist.filter = self.filters; } else { self.datalist.filter = null; } self.datalist.pageIndex = 1; self.datalist.refresh(); }, this.debounce, this.element.id + "Debounce"); return this; };