UNPKG

kero

Version:

<img src="http://tinper.org/assets/images/kero.png" width="120" style="max-width:100%;"/>

209 lines (200 loc) 5.53 kB
/** * Module : kero dataTable row * Author : liuyk(liuyk@yonyou.com) * Date : 2016-08-01 14:34:01 */ import { isEmptyObject } from 'tinper-sparrow/src/util'; // 添加数据,建议使用setData或者setSimpleData var setRows = function setRows(rows, options) { var insertRows = [], _id; for (var i = 0; i < rows.length; i++) { var r = rows[i]; _id = r.rowId || r.id; if (!_id) _id = Row.getRandomRowId(); if (r.status == Row.STATUS.DELETE) { this.removeRowByRowId(_id); } else { var row = this.getRowByRowId(_id); if (row) { row.updateRow(r); if (!isEmptyObject(r.data)) { this.trigger(DataTable.ON_UPDATE, { index: i, rows: [row] }); if (row == this.getCurrentRow()) { this.currentRowChange(-this.currentRowChange()); row.currentRowChange(-row.currentRowChange()); this.trigger(DataTable.ON_CURRENT_UPDATE, { index: i, rows: [row] }); } else { row.currentRowChange(-row.currentRowChange()); } } } else { row = new Row({ parent: this, id: _id }); row.setData(rows[i], null, options); insertRows.push(row); } // 如果r对象中存在状态则更新状态为返回的状态 if (r.status) { row.setStatus(r.status); } } } if (insertRows.length > 0) this.addRows(insertRows); return insertRows; }; /** * 在最后位置添加一条数据行 * @memberof DataTable * @param {u.Row} row 数据行 * @example * var row1 = new Row({parent: datatable}) * row1.setData({ * data:{ * field1: 'value1', * field2: 'value2' * } * }) * datatable.addRow(row1) */ var addRow = function addRow(row) { this.insertRow(this.rows().length, row); this.resetDelRowEnd(); }; var resetDelRowEnd = function resetDelRowEnd() { for (var i = this.rows().length - 1; i > -1; i--) { var row = this.rows()[i]; if (row.status == Row.STATUS.DELETE || row.status == Row.STATUS.FALSE_DELETE) { this.rows().splice(i, 1); this.rows().push(row); } } }; /** * 在最后位置添加多条数据行 * @memberof DataTable * @param {array} rows 数据行数组 * @example * var row1 = new Row({parent: datatable}) * row1.setData({ * data:{ * field1: 'value1', * field2: 'value2' * } * }) * var row2 = new Row({parent: datatable}) * row2.setData({ * data:{ * field1: 'value11', * field2: 'value22' * } * }) * datatable.addRows([row1,row2]) */ var addRows = function addRows(rows) { this.insertRows(this.rows().length, rows); this.resetDelRowEnd(); }; /** * 在指定索引位置添加一条数据行 * @memberof DataTable * @param {number} index 指定索引 * @param {u.Row} row 数据行 * @example * var row1 = new Row({parent: datatable}) * row1.setData({ * data:{ * field1: 'value1', * field2: 'value2' * } * }) * datatable.insertRow(1,row1) */ var insertRow = function insertRow(index, row) { if (!row) { row = new Row({ parent: this }); } this.insertRows(index, [row]); }; /** * 在指定索引位置添加多条数据行 * @memberof DataTable * @param {number} index 指定索引 * @param {array} rows 数据行数组 * var row1 = new Row({parent: datatable}) * row1.setData({ * data:{ * field1: 'value1', * field2: 'value2' * } * }) * var row2 = new Row({parent: datatable}) * row2.setData({ * data:{ * field1: 'value11', * field2: 'value22' * } * }) * datatable.insertRows(1,[row1,row2]) */ var insertRows = function insertRows(index, rows) { var args = [index, 0]; for (var i = 0; i < rows.length; i++) { args.push(rows[i]); } this.rows.splice.apply(this.rows, args); this.updateSelectedIndices(index, '+', rows.length); this.updateFocusIndex(index, '+', rows.length); this.updatePageAll(); var insertRows = []; $.each(rows, function (i) { if (this.status == Row.STATUS.NORMAL || this.status == Row.STATUS.UPDATE || this.status == Row.STATUS.NEW) { insertRows.push(this); } }); this.trigger(DataTable.ON_INSERT, { index: index, rows: insertRows }); if (this.ns) { if (this.root.valueChange[this.ns]) this.root.valueChange[this.ns](-this.root.valueChange[this.ns]()); } }; /** * 创建空行 * @memberof DataTable * @return {u.Row} 空行对象 * @example * datatable.createEmptyRow(); * datatable.createEmptyRow({unSelect:true}) */ var createEmptyRow = function createEmptyRow(options) { var r = new Row({ parent: this }); this.addRow(r); var unSelect = options ? options.unSelect : false; if (!unSelect) { if (!this.getCurrentRow()) this.setRowSelect(r); } return r; }; export var rowFunObj = { setRows: setRows, addRow: addRow, addRows: addRows, insertRow: insertRow, insertRows: insertRows, createEmptyRow: createEmptyRow, resetDelRowEnd: resetDelRowEnd };