UNPKG

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