Browse Source

优化 treeTable 内部 `formatNumber` 的实现细节减少一些不必要的调用

pull/1247/head
sunxiaobin89 2 years ago
parent
commit
585f1c4301
  1. 53
      src/modules/treeTable.js

53
src/modules/treeTable.js

@ -10,6 +10,7 @@ layui.define(['table'], function (exports) {
var form = layui.form;
var table = layui.table;
var hint = layui.hint();
var timer = {}; // 记录定时器 index
// api
var treeTable = {
@ -119,6 +120,19 @@ layui.define(['table'], function (exports) {
var treeOptions = thatOptionsTemp.tree;
var childrenKey = treeOptions.customName.children;
// 处理属性
delete options.hasNumberCol;
delete options.hasChecboxCol;
delete options.hasRadioCol;
table.eachCols(null, function (i1, item1) {
if (item1.type === 'numbers') {
options.hasNumberCol = true;
} else if (item1.type === 'checkbox') {
options.hasChecboxCol = true;
} else if (item1.type === 'radio') {
options.hasRadioCol = true;
}
}, thatOptionsTemp.cols)
var parseData = options.parseData;
var done = options.done;
@ -788,33 +802,31 @@ layui.define(['table'], function (exports) {
expandNode({trElem: trDefaultExpand.first()}, true);
});
treeTable.formatNumber(tableId);
options.hasNumberCol && that.formatNumber(tableId);
form.render(null, tableFilterId);
}
/**
* 重新编号
* @param {String} id 表格id
* @return {Object} layui.treeTable
* */
treeTable.formatNumber = function (id) {
var that = getThisTable(id);
if(!that) return;
var formatNumber = function (that) {
var options = that.getOptions();
var tableViewElem = options.elem.next();
var num = 0;
layui.each(that.treeToFlat(table.cache[id]), function (i1, item1) {
layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {
if (layui.isArray(item1)) {
return;
}
var itemData = that.getNodeDataByIndex(item1.LAY_DATA_INDEX);
var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);
itemData['LAY_NUM'] = ++num;
tableViewElem.find('tr[lay-data-index="' + item1.LAY_DATA_INDEX + '"] .laytable-cell-numbers').html(itemData['LAY_NUM']);
tableViewElem.find('tr[lay-data-index="' + item1[LAY_DATA_INDEX] + '"] .laytable-cell-numbers').html(itemData['LAY_NUM']);
})
return treeTable;
}
Class.prototype.formatNumber = function (id) {
var that = this;
clearTimeout(id);
timer[id] = setTimeout(function () {
formatNumber(that);
}, 10)
}
// 树表渲染
@ -1023,16 +1035,17 @@ layui.define(['table'], function (exports) {
layui.each(table.cache[id], function (i4, item4) {
tableView.find('tr[data-level="0"][lay-data-index="' + item4[LAY_DATA_INDEX] + '"]').attr('data-index', i4);
})
treeTable.formatNumber(id);
options.hasNumberCol && that.formatNumber(id);
}
/**
* 新增数据节点
* @param {String} id 树表id
* @param {String|Number} parentIndex 指定的父节点如果增加根节点请设置 parentIndex null 即可
* @param {Number} index:Number 新节点插入的位置 0 开始index = -1(默认) 插入到最后
* @param {Object|Array} data 新增的节点单个或者多个
* @param {Boolean} focus 新增的节点单个或者多个
* @param {Object} opts
* @param {String|Number} opts.parentIndex 指定的父节点如果增加根节点请设置 parentIndex null 即可
* @param {Number} opts.index 新节点插入的位置 0 开始index = -1(默认) 插入到最后
* @param {Object|Array} opts.data 新增的节点单个或者多个
* @param {Boolean} opts.focus 新增的节点单个或者多个
* @return {Array} 新增的节点
* */
treeTable.addNodes = function (id, opts) {

Loading…
Cancel
Save