UNPKG

10.9 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6/**
7 * Module : kero dataTable getData
8 * Author : liuyk(liuyk@yonyou.com)
9 * Date : 2016-07-30 14:34:01
10 */
11
12/**
13 * 获取当前页数据
14 */
15var getData = function getData() {
16 var datas = [],
17 rows = this.rows();
18 for (var i = 0; i < rows.length; i++) {
19 datas.push(rows[i].getData());
20 }
21 return datas;
22};
23
24/**
25 * 将page转为row对象格式
26 */
27var page2data = function page2data(page, pageIndex) {
28 var data = {};
29 data.focus = page.focus;
30 data.index = pageIndex;
31 data.select = page.selectedIndices;
32 return data;
33};
34
35var getDataByRule = function getDataByRule(rule) {
36 var returnData = {},
37 datas = null,
38 rows;
39 returnData.meta = this.meta;
40 returnData.params = this.params;
41 rule = rule || DataTable.SUBMIT.current;
42 // 存在多页及不存在多页分开处理
43 if (this.pageCache) {
44 var pages = this.getPages();
45 if (rule == DataTable.SUBMIT.current || rule == DataTable.SUBMIT.focus) {
46 datas = [];
47 var pageIndex = this.pageIndex();
48 var currPage = pages[pageIndex];
49 if (currPage) {
50 var currIndex = this.focusIndex();
51 if (rule == DataTable.SUBMIT.current) {
52 if (currIndex == -1) currIndex = this.getSelectedIndex();
53 }
54 var data = page2data(currPage, pageIndex);
55 data.rows = [];
56 for (var i = 0, count = currPage.rows.length; i < count; i++) {
57 var row = currPage.rows[i].getData();
58 if (i != currIndex) row.data = {};
59 data.rows.push(row);
60 }
61 datas.push(data);
62 }
63 } else if (rule == DataTable.SUBMIT.all || rule == DataTable.SUBMIT.allPages) {
64 datas = [];
65 for (var i = 0; i < pages.length; i++) {
66 var currPage = pages[i];
67 var data = page2data(currPage, i);
68 data.rows = [];
69 for (var i = 0; i < currPage.rows.length; i++) {
70 data.rows.push(currPage.rows[i].getData());
71 }
72 datas.push(data);
73 }
74 } else if (rule == DataTable.SUBMIT.select) {
75 datas = [];
76 var pageIndex = this.pageIndex();
77 var currPage = pages[pageIndex];
78 if (currPage) {
79 var data = page2data(currPage, pageIndex);
80 data.rows = [];
81 for (var i = 0, count = currPage.rows.length; i < count; i++) {
82 var row = currPage.rows[i].getData();
83 if (data.select.indexOf(i) < 0) row.data = {};
84 data.rows.push(row);
85 }
86 datas.push(data);
87 }
88 } else if (rule == DataTable.SUBMIT.allSelect) {
89 datas = [];
90 for (var i = 0; i < pages.length; i++) {
91 var currPage = pages[i];
92 var data = page2data(currPage, i);
93 data.rows = [];
94 for (var j = 0, count = currPage.rows.length; j < count; j++) {
95 var row = currPage.rows[j].getData();
96 if (data.select.indexOf(j) < 0) row.data = {};
97 data.rows.push(row);
98 }
99 datas.push(data);
100 }
101 } else if (rule == DataTable.SUBMIT.change) {
102 datas = [];
103 for (var i = 0; i < pages.length; i++) {
104 var currPage = pages[i];
105 var data = page2data(currPage, i);
106 data.rows = [];
107 for (var j = 0, count = currPage.rows.length; j < count; j++) {
108 var row = currPage.rows[j].getData();
109 if (row.status == Row.STATUS.NORMAL) {
110 row.data = {};
111 }
112 data.rows.push(row);
113 }
114 datas.push(data);
115 }
116 } else if (rule === DataTable.SUBMIT.empty) {
117 datas = [];
118 }
119 if (pages.length < 1 || !pages[this.pageIndex()]) {
120 datas = [{ index: this.pageIndex(), select: [], focus: -1, rows: [] }];
121 }
122 returnData.pages = datas;
123 } else {
124 if (rule == DataTable.SUBMIT.current) {
125 datas = [];
126 var currIndex = this.focusIndex();
127 if (currIndex == -1) currIndex = this.getSelectedIndex();
128 rows = this.rows();
129 for (var i = 0, count = rows.length; i < count; i++) {
130 if (i == currIndex) datas.push(rows[i].getData());else datas.push(rows[i].getEmptyData());
131 }
132 } else if (rule == DataTable.SUBMIT.focus) {
133 datas = [];
134 rows = this.rows();
135 for (var i = 0, count = rows.length; i < count; i++) {
136 if (i == this.focusIndex()) datas.push(rows[i].getData());else datas.push(rows[i].getEmptyData());
137 }
138 } else if (rule == DataTable.SUBMIT.all) {
139 datas = this.getData();
140 } else if (rule == DataTable.SUBMIT.select) {
141 datas = this.getSelectedDatas(true);
142 } else if (rule == DataTable.SUBMIT.change) {
143 datas = this.getChangedDatas();
144 } else if (rule === DataTable.SUBMIT.empty) {
145 datas = [];
146 }
147
148 returnData.rows = datas;
149 returnData.select = this.getSelectedIndexs();
150 returnData.focus = this.getFocusIndex();
151 }
152
153 returnData.pageSize = this.pageSize();
154 returnData.pageIndex = this.pageIndex();
155 returnData.isChanged = this.isChanged();
156 returnData.master = this.master;
157 returnData.pageCache = this.pageCache;
158 return returnData;
159};
160
161var getRow = function getRow(index) {
162 //return this.rows()[index] //modify by licza. improve performance
163 return this.rows.peek()[index];
164};
165
166var getChildRow = function getChildRow(obj) {
167 var fullField = obj.fullField,
168 index = obj.index,
169 row = null;
170 if (parseInt(index) > -1) {
171 if ((index + '').indexOf('.') > 0) {
172 var fieldArr = fullField.split('.');
173 var indexArr = index.split('.');
174 var nowDatatable = this;
175 var nowRow = null;
176 for (var i = 0; i < indexArr.length; i++) {
177 nowRow = nowDatatable.getRow(indexArr[i]);
178 if (i < indexArr.length - 1) {
179 if (nowRow) {
180 nowDatatable = nowRow.getValue(fieldArr[i]);
181 } else {
182 nowRow = null;
183 break;
184 }
185 }
186 }
187 row = nowRow;
188 } else {
189 row = this.getRow(index);
190 }
191 }
192 return row;
193};
194
195/**
196 * 根据rowid取row对象
197 * @param rowid
198 * @returns {*}
199 */
200var getRowByRowId = function getRowByRowId(rowid) {
201 var rows = this.rows.peek();
202 for (var i = 0, count = rows.length; i < count; i++) {
203 if (rows[i].rowId == rowid) return rows[i];
204 }
205 return null;
206};
207
208/**
209 * 取行索引
210 * @param row
211 * @returns {*}
212 */
213var getRowIndex = function getRowIndex(row) {
214 var rows = this.rows.peek();
215 for (var i = 0, count = rows.length; i < count; i++) {
216 if (rows[i].rowId === row.rowId) return i;
217 }
218 return -1;
219};
220
221var getRowsByField = function getRowsByField(field, value) {
222 var rows = this.rows.peek();
223 var returnRows = new Array();
224 for (var i = 0, count = rows.length; i < count; i++) {
225 if (rows[i].getValue(field) === value) returnRows.push(rows[i]);
226 }
227 return returnRows;
228};
229
230var getRowByField = function getRowByField(field, value) {
231 var rows = this.rows.peek();
232 for (var i = 0, count = rows.length; i < count; i++) {
233 if (rows[i].getValue(field) === value) return rows[i];
234 }
235 return null;
236};
237
238var getAllRows = function getAllRows() {
239 return this.rows.peek();
240};
241
242var getAllPageRows = function getAllPageRows() {
243 var datas = [],
244 rows;
245 for (var i = 0; i < this.totalPages(); i++) {
246 rows = [];
247 if (i == this.pageIndex()) {
248 rows = this.getData();
249 } else {
250 var page = this.cachedPages[i];
251 if (page) {
252 rows = page.getData();
253 }
254 }
255 for (var j = 0; j < rows.length; j++) {
256 datas.push(rows[j]);
257 }
258 }
259 return datas;
260};
261
262/**
263 * 获取变动的数据(新增、修改)
264 */
265var getChangedDatas = function getChangedDatas(withEmptyRow) {
266 var datas = [],
267 rows = this.rows();
268 for (var i = 0, count = rows.length; i < count; i++) {
269 if (rows[i] && rows[i].status != Row.STATUS.NORMAL) {
270 datas.push(rows[i].getData());
271 } else if (withEmptyRow == true) {
272 datas.push(rows[i].getEmptyData());
273 }
274 }
275 return datas;
276};
277
278/**
279 * 取改变的行
280 */
281var getChangedRows = function getChangedRows() {
282 var changedRows = [],
283 rows = this.rows.peek();
284 for (var i = 0, count = rows.length; i < count; i++) {
285 if (rows[i] && rows[i].status != Row.STATUS.NORMAL) {
286 changedRows.push(rows[i]);
287 }
288 }
289 return changedRows;
290};
291
292var getValue = function getValue(fieldName, row) {
293 row = row || this.getCurrentRow();
294 if (row) return row.getValue(fieldName);else return '';
295};
296
297/**
298 * 根据行号获取行索引
299 * @param {String} rowId
300 */
301var getIndexByRowId = function getIndexByRowId(rowId) {
302 var rows = this.rows();
303 for (var i = 0, count = rows.length; i < count; i++) {
304 if (rows[i].rowId == rowId) return i;
305 }
306 return -1;
307};
308
309/**
310 * 获取所有行数据
311 */
312var getAllDatas = function getAllDatas() {
313 var rows = this.getAllRows();
314 var datas = [];
315 for (var i = 0, count = rows.length; i < count; i++) {
316 if (rows[i]) datas.push(rows[i].getData());
317 }return datas;
318};
319
320/**
321 * 根据索引取rowid
322 * @param {Object} indices
323 */
324var getRowIdsByIndices = function getRowIdsByIndices(indices) {
325 var rowIds = [];
326 for (var i = 0; i < indices.length; i++) {
327 rowIds.push(this.getRow(indices[i]).rowId);
328 }
329 return rowIds;
330};
331
332exports.getData = getData;
333exports.getDataByRule = getDataByRule;
334exports.getRow = getRow;
335exports.getChildRow = getChildRow;
336exports.getRowByRowId = getRowByRowId;
337exports.getRowIndex = getRowIndex;
338exports.getRowsByField = getRowsByField;
339exports.getRowByField = getRowByField;
340exports.getAllRows = getAllRows;
341exports.getAllPageRows = getAllPageRows;
342exports.getChangedDatas = getChangedDatas;
343exports.getChangedRows = getChangedRows;
344exports.getValue = getValue;
345exports.getIndexByRowId = getIndexByRowId;
346exports.getAllDatas = getAllDatas;
347exports.getRowIdsByIndices = getRowIdsByIndices;
\No newline at end of file