UNPKG

kero

Version:

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

218 lines (206 loc) 5.48 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 const setRows = function(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) */ const addRow = function(row) { this.insertRow(this.rows().length, row) this.resetDelRowEnd(); } const resetDelRowEnd = function() { 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]) */ const addRows = function(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) */ const insertRow = function(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]) */ const insertRows = function(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}) */ const createEmptyRow = function(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 const rowFunObj = { setRows: setRows, addRow: addRow, addRows: addRows, insertRow: insertRow, insertRows: insertRows, createEmptyRow: createEmptyRow, resetDelRowEnd: resetDelRowEnd }