1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | var setCurrentPage = function setCurrentPage(pageIndex, notCacheCurrentPage) {
|
9 | var nowTotalRow = this.totalRow();
|
10 | if (pageIndex != this.pageIndex() && notCacheCurrentPage != true) this.cacheCurrentPage();
|
11 | this.pageIndex(pageIndex);
|
12 | var cachedPage = this.cachedPages[this.pageIndex()];
|
13 | if (cachedPage) {
|
14 |
|
15 | var selectedIndices = cachedPage.selectedIndices;
|
16 | this.removeAllRows();
|
17 | this.setRows(cachedPage.rows);
|
18 | this.setRowsSelect(selectedIndices);
|
19 | }
|
20 | this.totalRow(nowTotalRow);
|
21 | };
|
22 |
|
23 |
|
24 | var updatePages = function updatePages(pages) {
|
25 | var pageSize = this.pageSize(),
|
26 | pageIndex = 0,
|
27 | page,
|
28 | r,
|
29 | row;
|
30 | var page, index, i, rows, focus, selectIndices, status, j, row, originRow;
|
31 | for (i = 0; i < pages.length; i++) {
|
32 | index = pages[i].index;
|
33 | rows = pages[i].rows;
|
34 | focus = pages[i].current;
|
35 | selectIndices = pages[i].select;
|
36 | status = pages[i].status;
|
37 | if (status === 'del') {
|
38 | this.cachedPages[index] = null;
|
39 | continue;
|
40 | }
|
41 | if (!this.cachedPages[index]) {
|
42 | page = new Page({
|
43 | parent: this
|
44 | });
|
45 | page.rows = rows;
|
46 | for (var j = 0; j < page.rows.length; j++) {
|
47 | page.rows[j].rowId = page.rows[j].id;
|
48 | delete page.rows[j].id;
|
49 | }
|
50 | this.cachedPages[index] = page;
|
51 | page.selectedIndices = selectIndices;
|
52 | page.focus = focus;
|
53 | } else {
|
54 | page = this.cachedPages[index];
|
55 | page.selectedIndices = selectIndices;
|
56 | page.focus = focus;
|
57 | for (var j = 0; j < rows.length; j++) {
|
58 | r = rows[j];
|
59 | if (!r.id) r.id = Row.getRandomRowId();
|
60 | if (r.status == Row.STATUS.DELETE) {
|
61 |
|
62 | var row = page.getRowByRowId(r.id);
|
63 | if (row) {
|
64 |
|
65 | var oldTotalRow = this.totalRow();
|
66 | var newTotalRow = oldTotalRow - 1;
|
67 | this.totalRow(newTotalRow);
|
68 | if (row.status == Row.STATUS.NEW) {
|
69 | this.newCount -= 1;
|
70 | if (this.newCount < 0) this.newCount = 0;
|
71 | }
|
72 | }
|
73 | this.removeRowByRowId(r.id);
|
74 | page.removeRowByRowId(r.id);
|
75 | } else {
|
76 | row = page.getRowByRowId(r.id);
|
77 | if (row) {
|
78 | page.updateRow(row, r);
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 | if (row.status == Row.STATUS.NEW && r.status != Row.STATUS.NEW) {
|
86 | this.newCount -= 1;
|
87 | if (this.newCount < 0) this.newCount = 0;
|
88 | }
|
89 | row.setStatus(Row.STATUS.NORMAL);
|
90 | if (r.status == Row.STATUS.NEW) {
|
91 | row.setStatus(Row.STATUS.NEW);
|
92 | }
|
93 | } else {
|
94 | r.rowId = r.id;
|
95 | delete r.id;
|
96 | page.rows.push(r);
|
97 | if (r.status != Row.STATUS.NEW) {
|
98 | row.setStatus(Row.STATUS.NORMAL);
|
99 | } else {
|
100 | this.newCount += 1;
|
101 | }
|
102 |
|
103 | var oldTotalRow = this.totalRow();
|
104 | var newTotalRow = oldTotalRow + 1;
|
105 | this.totalRow(newTotalRow);
|
106 | }
|
107 | }
|
108 | }
|
109 | }
|
110 | }
|
111 | };
|
112 |
|
113 |
|
114 | var setPages = function setPages(allRows) {
|
115 | var pageSize = this.pageSize(),
|
116 | pageIndex = 0,
|
117 | page;
|
118 | this.cachedPages = [];
|
119 | for (var i = 0; i < allRows.length; i++) {
|
120 | pageIndex = Math.floor(i / pageSize);
|
121 | if (!this.cachedPages[pageIndex]) {
|
122 | page = new Page({
|
123 | parent: this
|
124 | });
|
125 | this.cachedPages[pageIndex] = page;
|
126 | }
|
127 | page.rows.push(allRows[i]);
|
128 | }
|
129 | if (this.pageIndex() > -1) this.setCurrentPage(this.pageIndex());
|
130 | this.totalRow(allRows.length);
|
131 | this.totalPages(pageIndex + 1);
|
132 | };
|
133 |
|
134 |
|
135 | var hasPage = function hasPage(pageIndex) {
|
136 | return this.pageCache && this.cachedPages[pageIndex] ? true : false;
|
137 | };
|
138 |
|
139 |
|
140 | var clearCache = function clearCache() {
|
141 | this.cachedPages = [];
|
142 | };
|
143 |
|
144 |
|
145 | var cacheCurrentPage = function cacheCurrentPage() {
|
146 | if (this.pageCache && this.pageIndex() > -1) {
|
147 | var page = new Page({
|
148 | parent: this
|
149 | });
|
150 | page.focus = this.getFocusIndex();
|
151 | page.selectedIndices = this.selectedIndices().slice();
|
152 | var rows = this.rows.peek();
|
153 | for (var i = 0; i < rows.length; i++) {
|
154 | var r = rows[i].getData();
|
155 | r.rowId = r.id;
|
156 | delete r.id;
|
157 | page.rows.push(r);
|
158 | }
|
159 | this.cachedPages[this.pageIndex()] = page;
|
160 | }
|
161 | };
|
162 |
|
163 |
|
164 | var updatePagesSelect = function updatePagesSelect() {
|
165 | var selectRows = this.getSelectedRows();
|
166 | var pages = this.getPages();
|
167 | for (var i = 0; i < pages.length; i++) {
|
168 | var rows = pages[i].rows;
|
169 | var selectedIndices = [];
|
170 | for (var j = 0; j < selectRows.length; j++) {
|
171 | var nowSelectRow = selectRows[j];
|
172 | for (var k = 0; k < rows.length; k++) {
|
173 | var row = rows[k];
|
174 | if (nowSelectRow == row) {
|
175 | selectedIndices.push(k);
|
176 | break;
|
177 | }
|
178 | }
|
179 | }
|
180 | pages[i].selectedIndices = selectedIndices;
|
181 | }
|
182 | };
|
183 |
|
184 |
|
185 | var updatePageRows = function updatePageRows() {
|
186 | if (this.pageCache) {
|
187 | var pageIndex = this.pageIndex();
|
188 | var page = this.getPages()[pageIndex];
|
189 | if (page) {
|
190 | page.rows = this.rows();
|
191 | }
|
192 | }
|
193 | };
|
194 |
|
195 |
|
196 | var updatePageSelect = function updatePageSelect() {
|
197 | if (this.pageCache) {
|
198 | var pageIndex = this.pageIndex();
|
199 | var page = this.getPages()[pageIndex];
|
200 | if (page) {
|
201 | var selectedIndices = this.selectedIndices().slice();
|
202 | page.selectedIndices = selectedIndices;
|
203 | }
|
204 | }
|
205 | };
|
206 |
|
207 |
|
208 | var updatePageFocus = function updatePageFocus() {
|
209 | if (this.pageCache) {
|
210 | var pageIndex = this.pageIndex();
|
211 | var page = this.getPages()[pageIndex];
|
212 | if (page) {
|
213 | page.focus = this.getFocusIndex();
|
214 | }
|
215 | }
|
216 | };
|
217 |
|
218 |
|
219 | var updatePageAll = function updatePageAll() {
|
220 | this.updatePageRows();
|
221 | this.updatePageSelect();
|
222 | this.updatePageFocus();
|
223 | };
|
224 |
|
225 | export var pageFunObj = {
|
226 | setCurrentPage: setCurrentPage,
|
227 | updatePages: updatePages,
|
228 | setPages: setPages,
|
229 | hasPage: hasPage,
|
230 | clearCache: clearCache,
|
231 | cacheCurrentPage: cacheCurrentPage,
|
232 | updatePagesSelect: updatePagesSelect,
|
233 | updatePageRows: updatePageRows,
|
234 | updatePageSelect: updatePageSelect,
|
235 | updatePageFocus: updatePageFocus,
|
236 | updatePageAll: updatePageAll
|
237 | }; |
\ | No newline at end of file |