UNPKG

data-sort

Version:

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

15 lines (14 loc) 3.01 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';(function(f,d){"object"===typeof exports&&"undefined"!==typeof module?module.exports=d():"function"===typeof define&&define.amd?define(d):f.Sort=d()})(this,function(){var f=function(){function a(a,c){for(var b=0;b<c.length;b++){var e=c[b];e.enumerable=e.enumerable||!1;e.configurable=!0;"value"in e&&(e.writable=!0);Object.defineProperty(a,e.key,e)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),d=function(){function a(){var b=0<arguments.length&&void 0!==arguments[0]? arguments[0]:{},c=b.data,d=b.primaryKey,e=b.sortFunction;b=b.direction;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");h.call(this);this.Direction=b;this.sortFunc=this.defaultSort;this.SortFunction=e;this.PrimaryKey=d;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}(),h=function(){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 d=b[a.currentName],e=c[a.currentName];return d===e?a.comparePrimaryKey(b,c):d>e===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}},g=Object.freeze({default:d});d=g&&d||g;return d["default"]?d["default"]:d});