From 0b5b6c623f41ef9b298803eb670465786b27d7b8 Mon Sep 17 00:00:00 2001 From: izbz wh <731215820@qq.com> Date: Wed, 5 Jun 2019 14:12:12 +0800 Subject: [PATCH] fix(sort): MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 多列排序时sorter规则优先安置用户传入的sorter方法,如果不传走默认 --- build/Table.css | 7 --- build/lib/sort.js | 17 +++-- build/lib/sum.js | 6 +- build/lib/util.js | 110 ++++++++++++++++----------------- build/render/CheckboxRender.js | 10 +-- build/render/InputRender.js | 12 ++-- build/render/SelectRender.js | 10 +-- package.json | 2 +- 8 files changed, 87 insertions(+), 87 deletions(-) diff --git a/build/Table.css b/build/Table.css index 0fe9206..ecd2ebb 100644 --- a/build/Table.css +++ b/build/Table.css @@ -153,13 +153,6 @@ .u-loading.u-loading-line.u-loading-line-warning > div { background-color: #ff9800; } -.u-loading.u-loading-custom > div { - position: absolute; - left: 50%; - top: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); } - @keyframes line-scale { 0% { -webkit-transform: scaley(1); diff --git a/build/lib/sort.js b/build/lib/sort.js index d4d1154..06d87e5 100644 --- a/build/lib/sort.js +++ b/build/lib/sort.js @@ -198,15 +198,22 @@ function sort(Table, Icon) { }; this._sortBy = function (pre, after, orderCols, orderColslen, currentIndex) { - var preKey = pre[orderCols[currentIndex].key]; - var afterKey = after[orderCols[currentIndex].key]; + var currentCol = orderCols[currentIndex]; + var preKey = pre[currentCol.key]; + var afterKey = after[currentCol.key]; + var colSortFun = currentCol.sorter; + if (typeof colSortFun !== 'function') { + colSortFun = function colSortFun() { + return preKey - afterKey; + }; + } if (preKey == afterKey && currentIndex + 1 <= orderColslen) { return _this3._sortBy(pre, after, orderCols, orderColslen, currentIndex + 1); } - if (orderCols[currentIndex].order == "ascend") { - return preKey - afterKey; + if (currentCol.order == "ascend") { + return colSortFun(pre, after); } else { - return afterKey - preKey; + return -colSortFun(pre, after); } }; diff --git a/build/lib/sum.js b/build/lib/sum.js index d4c452f..5987695 100644 --- a/build/lib/sum.js +++ b/build/lib/sum.js @@ -106,9 +106,9 @@ function sum(Table) { return _this; } - /** - * 获取当前的表格类型。 - * + /** + * 获取当前的表格类型。 + * */ diff --git a/build/lib/util.js b/build/lib/util.js index 8d6a331..9ea2e19 100644 --- a/build/lib/util.js +++ b/build/lib/util.js @@ -1,7 +1,7 @@ 'use strict'; Object.defineProperty(exports, "__esModule", { - value: true + value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -9,71 +9,71 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument exports.sortBy = sortBy; exports.compare = compare; exports.ObjectAssign = ObjectAssign; -/* -* 快速排序,按某个属性,或按“获取排序依据的函数”,来排序. -* @method soryBy -* @static -* @param {array} arr 待处理数组 -* @param {string|function} prop 排序依据属性,获取 -* @param {boolean} desc 降序 -* @return {array} 返回排序后的新数组 +/* +* 快速排序,按某个属性,或按“获取排序依据的函数”,来排序. +* @method soryBy +* @static +* @param {array} arr 待处理数组 +* @param {string|function} prop 排序依据属性,获取 +* @param {boolean} desc 降序 +* @return {array} 返回排序后的新数组 */ function sortBy(arr, prop, desc) { - var props = [], - ret = [], - i = 0, - len = arr.length; - if (typeof prop == 'string') { - for (; i < len; i++) { - var oI = arr[i]; - (props[i] = new String(oI && oI[prop] || ''))._obj = oI; + var props = [], + ret = [], + i = 0, + len = arr.length; + if (typeof prop == 'string') { + for (; i < len; i++) { + var oI = arr[i]; + (props[i] = new String(oI && oI[prop] || ''))._obj = oI; + } + } else if (typeof prop == 'function') { + for (; i < len; i++) { + var _oI = arr[i]; + (props[i] = new String(_oI && prop(_oI) || ''))._obj = _oI; + } + } else { + throw '参数类型错误'; } - } else if (typeof prop == 'function') { - for (; i < len; i++) { - var _oI = arr[i]; - (props[i] = new String(_oI && prop(_oI) || ''))._obj = _oI; + props.sort(); + for (i = 0; i < len; i++) { + ret[i] = props[i]._obj; } - } else { - throw '参数类型错误'; - } - props.sort(); - for (i = 0; i < len; i++) { - ret[i] = props[i]._obj; - } - if (desc) ret.reverse(); - return ret; + if (desc) ret.reverse(); + return ret; }; -/** - * 数组对象排序 - * console.log(arr.sort(compare('age'))) - * @param {} property +/** + * 数组对象排序 + * console.log(arr.sort(compare('age'))) + * @param {} property */ function compare(property) { - return function (a, b) { - var value1 = a[property]; - var value2 = b[property]; - return value1 - value2; - }; + return function (a, b) { + var value1 = a[property]; + var value2 = b[property]; + return value1 - value2; + }; } -/** - * 简单数组数据对象拷贝 - * @param {*} obj 要拷贝的对象 +/** + * 简单数组数据对象拷贝 + * @param {*} obj 要拷贝的对象 */ function ObjectAssign(obj) { - var b = obj instanceof Array; - var tagObj = b ? [] : {}; - if (b) { - //数组 - obj.forEach(function (da) { - var _da = {}; - _extends(_da, da); - tagObj.push(_da); - }); - } else { - _extends(tagObj, obj); - } - return tagObj; + var b = obj instanceof Array; + var tagObj = b ? [] : {}; + if (b) { + //数组 + obj.forEach(function (da) { + var _da = {}; + _extends(_da, da); + tagObj.push(_da); + }); + } else { + _extends(tagObj, obj); + } + return tagObj; } \ No newline at end of file diff --git a/build/render/CheckboxRender.js b/build/render/CheckboxRender.js index 1e4ba25..8473356 100644 --- a/build/render/CheckboxRender.js +++ b/build/render/CheckboxRender.js @@ -19,11 +19,11 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } -/** - * 渲染checkbox - * @param Checkbox - * @param Icon - * @returns {CheckboxRender} +/** + * 渲染checkbox + * @param Checkbox + * @param Icon + * @returns {CheckboxRender} */ function renderCheckbox(Checkbox, Icon) { return function (_Component) { diff --git a/build/render/InputRender.js b/build/render/InputRender.js index 68f898d..04c7002 100644 --- a/build/render/InputRender.js +++ b/build/render/InputRender.js @@ -28,12 +28,12 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } -/** - * 渲染输入框 - * @param Form - * @param Input - * @param Icon - * @returns {InputRender} +/** + * 渲染输入框 + * @param Form + * @param Input + * @param Icon + * @returns {InputRender} */ function renderInput(Form, Input, Icon) { var _class, _temp2; diff --git a/build/render/SelectRender.js b/build/render/SelectRender.js index d72159b..a1d55db 100644 --- a/build/render/SelectRender.js +++ b/build/render/SelectRender.js @@ -26,11 +26,11 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } -/** - * 渲染下拉框 - * @param Select - * @param Icon - * @returns {SelectRender} +/** + * 渲染下拉框 + * @param Select + * @param Icon + * @returns {SelectRender} */ function renderSelect(Select, Icon) { var _class, _temp2; diff --git a/package.json b/package.json index c23b3af..9139146 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bee-table", - "version": "2.1.0", + "version": "2.1.1", "description": "Table ui component for react", "keywords": [ "react",