UNPKG

data-engine

Version:

Data engine is small data management lib for some sort and filter.

35 lines (34 loc) 12.8 kB
/** @license Data-Engine v3.1.1 * data-engine.production.min.js * * Copyright Jan Silhan * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ 'use strict';var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(d,c,g){d!=Array.prototype&&d!=Object.prototype&&(d[c]=g.value)};$jscomp.getGlobal=function(d){return"undefined"!=typeof window&&window===d?d:"undefined"!=typeof global&&null!=global?global:d};$jscomp.global=$jscomp.getGlobal(this); $jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var d=0;return function(c){return $jscomp.SYMBOL_PREFIX+(c||"")+d++}}(); $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var c=0;return $jscomp.iteratorPrototype(function(){return c<d.length?{done:!1,value:d[c++]}:{done:!0}})}; $jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.iteratorFromArray=function(d,c){$jscomp.initSymbolIterator();d instanceof String&&(d+="");var g=0,f={next:function(){if(g<d.length){var k=g++;return{value:c(k,d[k]),done:!1}}f.next=function(){return{done:!0,value:void 0}};return f.next()}};f[Symbol.iterator]=function(){return f};return f}; $jscomp.polyfill=function(d,c,g,f){if(c){g=$jscomp.global;d=d.split(".");for(f=0;f<d.length-1;f++){var k=d[f];k in g||(g[k]={});g=g[k]}d=d[d.length-1];f=g[d];c=c(f);c!=f&&null!=c&&$jscomp.defineProperty(g,d,{configurable:!0,writable:!0,value:c})}};$jscomp.polyfill("Array.prototype.keys",function(d){return d?d:function(){return $jscomp.iteratorFromArray(this,function(c){return c})}},"es6","es3"); (function(d,c){"object"===typeof exports&&"undefined"!==typeof module?module.exports=c():"function"===typeof define&&define.amd?define(c):d.DataEngine=c()})(this,function(){function d(b){return b.replace(g,"\\$\x26")}var c=function(b){return function(a){return b===a}},g=/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,f=["number","string","boolean","regexp","date"],k={number:"number",string:"string",boolean:"boolean","function":"function"},r={boolean:c,string:c,number:c,"null":c,date:function(b){return function(a){var e= a;a.getTime||(e=new Date(a));return b.getTime()===e.getTime()}},array:function(b){return function(a){return b.some(function(b){return b.compare(a)})}},regexp:function(b){return function(a){return b.test(""+a)}},"function":function(b){return function(a){return b(a)}},range:function(b){return"object"!==(b.from?typeof b.from:typeof b.to)?function(a){var e=b.from,h=b.to;return e&&h?e<=a&&h>=a:e?e<=a:h>=a}:function(a){var e=b.from,h=b.to,c=a;a.getTime||(c=new Date(a));a=e&&h?e.getTime()<=c.getTime()&& h.getTime()>=c.getTime():e?e.getTime()<=c.getTime():h.getTime()>=c.getTime();return a}}},t={number:function(b){return parseFloat(b)},string:function(b){return""+b},boolean:function(b){return!!b},regexp:function(b){return new RegExp(d(""+b),"i")},date:function(b){try{var a=new Date(b);if(!isNaN(a.getTime()))return a;throw new TypeError(b+" does not have format to parse with native function!");}catch(e){throw e;}}},p=function(b){switch(typeof b){case "string":return"string";case "number":return"number"; case "object":return b instanceof Date?"date":null;default:return null}},u=function(b){return f.some(function(a){return a===b})},v=function(){function b(a,b){for(var e=0;e<b.length;e++){var c=b[e];c.enumerable=c.enumerable||!1;c.configurable=!0;"value"in c&&(c.writable=!0);Object.defineProperty(a,c.key,c)}}return function(a,e,c){e&&b(a.prototype,e);c&&b(a,c);return a}}();c=function(){function b(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,e=arguments[1],c=2<arguments.length&& void 0!==arguments[2]?arguments[2]:null;if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");w.call(this);this.originalItem=null;this.Name=a;null!==c&&(this.Type=c);void 0!==e&&(this.Value=e)}b.prototype.prepareItem=function(a){switch(this.type){case "array":if(Array.isArray(a[a.length-1]))throw new TypeError("Multi dimensional array is not supported!");return a.map(function(e){return new b(a.Name,e)});default:return a}};v(b,[{key:"Name",set:function(a){"string"===typeof a&& (this.name=a)},get:function(){return this.name}},{key:"Type",set:function(a){if(u(a))this.staticType=a;else throw this.staticType=null,new TypeError(a+" is not supported. Cannot set static type");},get:function(){return this.staticType}},{key:"InternalType",get:function(){return this.type}},{key:"Value",set:function(a){var b=this.originalItem=a;if(this.staticType)try{b=t[this.staticType](a)}catch(h){throw new TypeError(a+" cannot by typed to "+this.staticType);}if(this.type=this.checkValidity(b))this.item= this.prepareItem(b),this.compareFunc=r[this.type](this.item);else throw new TypeError(a+" is not supported. Use custom function!");},get:function(){return this.item}},{key:"original",get:function(){return this.originalItem}}]);return b}();c.regexpEscape=d;var w=function(){var b=this;this.staticType=null;this.removeType=function(){b.staticType=null};this.compare=function(a){return b.compareFunc(a)};this.checkValidity=function(a){var b=k[typeof a]||null;return b?b:null===a?"null":Array.isArray(a)?"array": a instanceof RegExp?"regexp":a instanceof Date?"date":(a.from||a.to)&&(p(a.from)||p(a.to))?"range":null}},l=Object.freeze({default:c});c=l&&c||l;var m=c["default"]?c["default"]:c,x=function(){function b(a,b){for(var e=0;e<b.length;e++){var c=b[e];c.enumerable=c.enumerable||!1;c.configurable=!0;"value"in c&&(c.writable=!0);Object.defineProperty(a,c.key,c)}}return function(a,c,h){c&&b(a.prototype,c);h&&b(a,h);return a}}();c=function(){function b(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]: {},c=a.data,h=a.primaryKey,d=a.sortFunction;a=a.direction;if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");y.call(this);this.Direction=a;this.sortFunc=this.defaultSort;this.SortFunction=d;this.PrimaryKey=h;this.Data=c}x(b,[{key:"Data",set:function(a){this.setData(a)},get:function(){return this.data}},{key:"SortFunction",set:function(a){this.setSortFunction(a)}},{key:"Direction",set:function(a){this.direction="boolean"===typeof a?a:!0},get:function(){return this.direction}}, {key:"PrimaryKey",set:function(a){this.setPrimaryKey(a)},get:function(){return this.primaryKey}}]);return b}();var y=function(){var b=this;this.primaryKey=null;this.direction=!0;this.data=[];this.currentName=null;this.setData=function(a){var c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;if(!Array.isArray(a))return b.data=[],[];b.data=a;c&&b.sortData();return b.data};this.setSortFunction=function(a){"function"===typeof a&&(b.sortFunc=a,b.isCustomFunction=!0)};this.setPrimaryKey=function(a){!b.isCustomFunction&& "string"===typeof a&&0<a.length&&(b.primaryKey=a,null===b.currentName&&(b.currentName=a),b.setOwnSortFunction())};this.removePrimaryKey=function(){b.primaryKey=null;b.setOwnSortFunction()};this.setDefaultSort=function(){b.isCustomFunction=!1;b.setOwnSortFunction()};this.comparePrimaryKey=function(a,c){a=a[b.primaryKey];c=c[b.primaryKey];return a===c?0:a>c===b.direction?1:-1};this.compare=function(a,c){a=a[b.currentName];c=c[b.currentName];return a===c?0:a>c===b.direction?1:-1};this.sortBy=function(a){if(b.currentName=== a)return b.reverseData();b.currentName=a;b.setOwnSortFunction();return b.sortData()};this.setOwnSortFunction=function(){var a=b.primaryKey,c=b.currentName;b.isCustomFunction||(b.sortFunc=null!==a&&a!==c?b.defaultSortWithKey:b.defaultSort)};this.defaultSortWithKey=function(a,c){var e=a[b.currentName],d=c[b.currentName];return e===d?b.comparePrimaryKey(a,c):e>d===b.direction?1:-1};this.defaultSort=function(a,c){return b.compare(a,c)};this.sortData=function(){b.currentName&&(b.data=b.data.sort(b.sortFunc)); return b.data};this.reverseData=function(){b.data=b.data.reverse();return b.data};this.getData=function(){return b.Data}};c=(l=Object.freeze({default:c}))&&c||l;var n=c["default"]?c["default"]:c,z=function(){function b(a,b){for(var c=0;c<b.length;c++){var e=b[c];e.enumerable=e.enumerable||!1;e.configurable=!0;"value"in e&&(e.writable=!0);Object.defineProperty(a,e.key,e)}}return function(a,c,d){c&&b(a.prototype,c);d&&b(a,d);return a}}();c=function(){function b(){var a=0<arguments.length&&void 0!== arguments[0]?arguments[0]:{},c=a.data;a=a.sortEngine;if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");A.call(this);this.filters={};this.SortEngine=a;this.Data=c;this.filtered=this.getData()}z(b,[{key:"Data",set:function(a){a&&Array.isArray(a)?(this.data=a,this.updateFilter()):(this.data=[],this.filtered=[])},get:function(){return this.getData()}},{key:"FilteredData",get:function(){return this.getFilteredData()}},{key:"SortEngine",set:function(a){a instanceof n?(this.sortEngine= a,this.updateFce=this.filterWSort):(this.sortEngine=null,this.updateFce=this.filterWOSort)},get:function(){return this.sortEngine}}]);return b}();c.FilterValue=m;c.Sort=n;var A=function(){var b=this;this.updateFce=this.filterWOSort;this.data=[];this.filtered=[];this.sortEngine=null;this.setData=function(a){b.Data=a};this.getData=function(){return b.data};this.createFilter=function(a,b,c){return new m(a,b,c)};this.addFilter=function(a,c,d){return b.update(b.createFilter(a,c,d))};this.update=function(){for(var a= arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];var f=b.getFilteredData;c.forEach(function(a){if(!(a instanceof m))throw new TypeError(a+" has to have filterValue instance");b.filters[a.Name]=a;f=b.updateFilter});return f()};this.removeFilters=function(){for(var a=arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];var f=b.getFilteredData;c.forEach(function(a){a="string"===typeof a?a:a.Name;b.filters[a]&&(delete b.filters[a],f=b.updateFilter)});return f()};this.clearFilters=function(){b.filters= {};b.updateFilter();return b.FilteredData};this.updateFilter=function(){b.filtered=b.updateFce(b.data.filter(b.filterAll));return b.FilteredData};this.filterAll=function(a){return Object.keys(b.filters).every(function(c){return b.filters[c].compare(a[c])})};this.getFilteredData=function(){return b.filtered};this.filterWOSort=function(a){return a};this.filterWSort=function(a){return b.SortEngine.setData(a)};this.getFilter=function(a){return b.filters[a]?b.filters[a]:null}};c=(l=Object.freeze({default:c}))&& c||l;var q=c["default"]?c["default"]:c,B=function(){function b(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(a,c,d){c&&b(a.prototype,c);d&&b(a,d);return a}}();c=function(){function b(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},c=a.data,d=a.primaryKey,f=a.sortFunction;a=a.direction;if(!(this instanceof b))throw new TypeError("Cannot call a class as a function"); C.call(this);this.filterEngine=new q({data:c,sortEngine:new n({data:c,primaryKey:d,sortFunction:f,direction:a})})}B(b,[{key:"FilterEngine",get:function(){return this.filterEngine}},{key:"SortEngine",get:function(){return this.filterEngine.SortEngine}},{key:"Data",set:function(a){this.setData(a)},get:function(){return this.FilterEngine.FilteredData}}]);return b}();c.Filter=q;c.Sort=n;c.FilterValue=m;var C=function(){var b=this;this.setData=function(a){b.filterEngine.Data=a};this.updateFilters=function(){var a; return(a=b.FilterEngine).update.apply(a,arguments)};this.removeFilters=function(){var a;return(a=b.FilterEngine).removeFilters.apply(a,arguments)};this.addFilter=function(a,c,d){return b.FilterEngine.addFilter(a,c,d)};this.clearFilters=function(){return b.FilterEngine.clearFilters()};this.setSortFunction=function(a){return b.SortEngine.setSortFunction(a)};this.setPrimaryKey=function(a){return b.SortEngine.setPrimaryKey(a)};this.removePrimaryKey=function(){return b.SortEngine.removePrimaryKey()};this.setDefaultSort= function(){return b.SortEngine.setDefaultSort()};this.sortBy=function(a){return b.SortEngine.sortBy(a)};this.getData=function(){return b.Data}};c=(l=Object.freeze({default:c}))&&c||l;return c["default"]?c["default"]:c});