OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview This is a data model representin | 6 * @fileoverview This is a data model representin |
7 */ | 7 */ |
8 | 8 |
9 cr.define('cr.ui', function() { | 9 cr.define('cr.ui', function() { |
10 const EventTarget = cr.EventTarget; | 10 const EventTarget = cr.EventTarget; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 141 |
142 var arr = this.array_; | 142 var arr = this.array_; |
143 | 143 |
144 // TODO(arv): Maybe unify splice and change events? | 144 // TODO(arv): Maybe unify splice and change events? |
145 var spliceEvent = new Event('splice'); | 145 var spliceEvent = new Event('splice'); |
146 spliceEvent.index = index; | 146 spliceEvent.index = index; |
147 spliceEvent.removed = arr.slice(index, index + deleteCount); | 147 spliceEvent.removed = arr.slice(index, index + deleteCount); |
148 spliceEvent.added = Array.prototype.slice.call(arguments, 2); | 148 spliceEvent.added = Array.prototype.slice.call(arguments, 2); |
149 | 149 |
150 var rv = arr.splice.apply(arr, arguments); | 150 var rv = arr.splice.apply(arr, arguments); |
| 151 var self = this; |
151 | 152 |
152 // if sortStatus.field is null, this restores original order. | 153 // if sortStatus.field is null, this restores original order. |
153 var sortPermutation = this.doSort_(this.sortStatus.field, | 154 this.prepareSort(this.sortStatus.field, function() { |
154 this.sortStatus.direction); | 155 var sortPermutation = self.doSort_(self.sortStatus.field, |
155 if (sortPermutation) { | 156 self.sortStatus.direction); |
156 var splicePermutation = deletePermutation.map(function(element) { | 157 if (sortPermutation) { |
157 return element != -1 ? sortPermutation[element] : -1; | 158 var splicePermutation = deletePermutation.map(function(element) { |
158 }); | 159 return element != -1 ? sortPermutation[element] : -1; |
159 this.dispatchPermutedEvent_(splicePermutation); | 160 }); |
160 } else { | 161 self.dispatchPermutedEvent_(splicePermutation); |
161 this.dispatchPermutedEvent_(deletePermutation); | 162 } else { |
162 } | 163 self.dispatchPermutedEvent_(deletePermutation); |
| 164 } |
163 | 165 |
164 this.dispatchEvent(spliceEvent); | 166 self.dispatchEvent(spliceEvent); |
| 167 }); |
| 168 |
165 return rv; | 169 return rv; |
166 }, | 170 }, |
167 | 171 |
168 /** | 172 /** |
169 * Appends items to the end of the model. | 173 * Appends items to the end of the model. |
170 * | 174 * |
171 * This dispatches a splice event. | 175 * This dispatches a splice event. |
172 * | 176 * |
173 * @param {...*} The items to append. | 177 * @param {...*} The items to append. |
174 * @return {number} The new length of the model. | 178 * @return {number} The new length of the model. |
(...skipping 15 matching lines...) Expand all Loading... |
190 updateIndex: function(index) { | 194 updateIndex: function(index) { |
191 if (index < 0 || index >= this.length) | 195 if (index < 0 || index >= this.length) |
192 throw Error('Invalid index, ' + index); | 196 throw Error('Invalid index, ' + index); |
193 | 197 |
194 // TODO(arv): Maybe unify splice and change events? | 198 // TODO(arv): Maybe unify splice and change events? |
195 var e = new Event('change'); | 199 var e = new Event('change'); |
196 e.index = index; | 200 e.index = index; |
197 this.dispatchEvent(e); | 201 this.dispatchEvent(e); |
198 | 202 |
199 if (this.sortStatus.field) { | 203 if (this.sortStatus.field) { |
200 var sortPermutation = this.doSort_(this.sortStatus.field, | 204 var self = this; |
201 this.sortStatus.direction); | 205 this.prepareSort(self.sortStatus.field, function() { |
202 if (sortPermutation) | 206 var sortPermutation = self.doSort_(self.sortStatus.field, |
203 this.dispatchPermutedEvent_(sortPermutation); | 207 self.sortStatus.direction); |
| 208 if (sortPermutation) |
| 209 self.dispatchPermutedEvent_(sortPermutation); |
| 210 }); |
204 } | 211 } |
205 }, | 212 }, |
206 | 213 |
207 /** | 214 /** |
208 * Creates sort status with given field and direction. | 215 * Creates sort status with given field and direction. |
209 * @param {string} field Sort field. | 216 * @param {string} field Sort field. |
210 * @param {string} direction Sort direction. | 217 * @param {string} direction Sort direction. |
211 * @return {!Object} Created sort status. | 218 * @return {!Object} Created sort status. |
212 */ | 219 */ |
213 createSortStatus: function(field, direction) { | 220 createSortStatus: function(field, direction) { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 if (a > b) | 347 if (a > b) |
341 return 1; | 348 return 1; |
342 return 0; | 349 return 0; |
343 } | 350 } |
344 }; | 351 }; |
345 | 352 |
346 return { | 353 return { |
347 ArrayDataModel: ArrayDataModel | 354 ArrayDataModel: ArrayDataModel |
348 }; | 355 }; |
349 }); | 356 }); |
OLD | NEW |