UNPKG

data-sort

Version:

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

15 lines (14 loc) 2.85 kB
/** @license Data-Engine v3.1.1 * data-sort.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 f=function(){function a(a,c){for(var b=0;b<c.length;b++){var d=c[b];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,e){c&&a(b.prototype,c);e&&a(b,e);return b}}(),h=function(){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},c=b.data,e=b.primaryKey,d=b.sortFunction;b=b.direction;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");g.call(this); this.Direction=b;this.sortFunc=this.defaultSort;this.SortFunction=d;this.PrimaryKey=e;this.Data=c}f(a,[{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 a}(); function g(){var a=this;this.primaryKey=null;this.direction=!0;this.data=[];this.currentName=null;this.setData=function(b){var c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;if(!Array.isArray(b))return a.data=[],[];a.data=b;c&&a.sortData();return a.data};this.setSortFunction=function(b){"function"===typeof b&&(a.sortFunc=b,a.isCustomFunction=!0)};this.setPrimaryKey=function(b){!a.isCustomFunction&&"string"===typeof b&&0<b.length&&(a.primaryKey=b,null===a.currentName&&(a.currentName=b), a.setOwnSortFunction())};this.removePrimaryKey=function(){a.primaryKey=null;a.setOwnSortFunction()};this.setDefaultSort=function(){a.isCustomFunction=!1;a.setOwnSortFunction()};this.comparePrimaryKey=function(b,c){b=b[a.primaryKey];c=c[a.primaryKey];return b===c?0:b>c===a.direction?1:-1};this.compare=function(b,c){b=b[a.currentName];c=c[a.currentName];return b===c?0:b>c===a.direction?1:-1};this.sortBy=function(b){if(a.currentName===b)return a.reverseData();a.currentName=b;a.setOwnSortFunction();return a.sortData()}; this.setOwnSortFunction=function(){var b=a.primaryKey,c=a.currentName;a.isCustomFunction||(a.sortFunc=null!==b&&b!==c?a.defaultSortWithKey:a.defaultSort)};this.defaultSortWithKey=function(b,c){var e=b[a.currentName],d=c[a.currentName];return e===d?a.comparePrimaryKey(b,c):e>d===a.direction?1:-1};this.defaultSort=function(b,c){return a.compare(b,c)};this.sortData=function(){a.currentName&&(a.data=a.data.sort(a.sortFunc));return a.data};this.reverseData=function(){a.data=a.data.reverse();return a.data}; this.getData=function(){return a.Data}}var k=Object.freeze({default:h}),l=k&&h||k;module.exports=l["default"]?l["default"]:l;