OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 * title: (string|undefined), | 131 * title: (string|undefined), |
132 * titleDOMFragment: (?DocumentFragment|undefined), | 132 * titleDOMFragment: (?DocumentFragment|undefined), |
133 * sortable: boolean, | 133 * sortable: boolean, |
134 * sort: (?WebInspector.DataGrid.Order|undefined), | 134 * sort: (?WebInspector.DataGrid.Order|undefined), |
135 * align: (?WebInspector.DataGrid.Align|undefined), | 135 * align: (?WebInspector.DataGrid.Align|undefined), |
136 * fixedWidth: (boolean|undefined), | 136 * fixedWidth: (boolean|undefined), |
137 * editable: (boolean|undefined), | 137 * editable: (boolean|undefined), |
138 * nonSelectable: (boolean|undefined), | 138 * nonSelectable: (boolean|undefined), |
139 * longText: (boolean|undefined), | 139 * longText: (boolean|undefined), |
140 * disclosure: (boolean|undefined), | 140 * disclosure: (boolean|undefined), |
141 * identifier: (string|undefined), | |
142 * weight: (number|undefined) | 141 * weight: (number|undefined) |
143 * }} | 142 * }} |
144 */ | 143 */ |
145 WebInspector.DataGrid.ColumnDescriptor; | 144 WebInspector.DataGrid.ColumnDescriptor; |
146 | 145 |
147 /** @enum {symbol} */ | 146 /** @enum {symbol} */ |
148 WebInspector.DataGrid.Events = { | 147 WebInspector.DataGrid.Events = { |
149 SelectedNode: Symbol("SelectedNode"), | 148 SelectedNode: Symbol("SelectedNode"), |
150 DeselectedNode: Symbol("DeselectedNode"), | 149 DeselectedNode: Symbol("DeselectedNode"), |
151 SortingChanged: Symbol("SortingChanged"), | 150 SortingChanged: Symbol("SortingChanged"), |
152 ColumnsResized: Symbol("ColumnsResized"), | 151 ColumnsResized: Symbol("ColumnsResized"), |
153 PaddingChanged: Symbol("PaddingChanged") | 152 PaddingChanged: Symbol("PaddingChanged") |
154 }; | 153 }; |
155 | 154 |
156 /** @enum {string} */ | 155 /** @enum {string} */ |
157 WebInspector.DataGrid.Order = { | 156 WebInspector.DataGrid.Order = { |
158 Ascending: "sort-ascending", | 157 Ascending: "sort-ascending", |
159 Descending: "sort-descending" | 158 Descending: "sort-descending" |
160 }; | 159 }; |
161 | 160 |
162 /** @enum {string} */ | 161 /** @enum {string} */ |
163 WebInspector.DataGrid.Align = { | 162 WebInspector.DataGrid.Align = { |
164 Center: "center", | 163 Center: "center", |
165 Right: "right" | 164 Right: "right" |
166 }; | 165 }; |
167 | 166 |
168 WebInspector.DataGrid._preferredWidthSymbol = Symbol("preferredWidth"); | 167 WebInspector.DataGrid._preferredWidthSymbol = Symbol("preferredWidth"); |
| 168 WebInspector.DataGrid._columnIdSymbol = Symbol("columnId"); |
169 | 169 |
170 WebInspector.DataGrid.prototype = { | 170 WebInspector.DataGrid.prototype = { |
171 /** | 171 /** |
172 * @return {!Element} | 172 * @return {!Element} |
173 */ | 173 */ |
174 headerTableBody: function() | 174 headerTableBody: function() |
175 { | 175 { |
176 return this._headerTableBody; | 176 return this._headerTableBody; |
177 }, | 177 }, |
178 | 178 |
179 /** | 179 /** |
180 * @param {!WebInspector.DataGrid.ColumnDescriptor} column | 180 * @param {!WebInspector.DataGrid.ColumnDescriptor} column |
181 * @param {number=} position | 181 * @param {number=} position |
182 */ | 182 */ |
183 _innerAddColumn: function(column, position) | 183 _innerAddColumn: function(column, position) |
184 { | 184 { |
185 var columnIdentifier = column.identifier = column.id || String(Object.ke
ys(this._columns).length); | 185 var columnId = column.id; |
186 if (columnIdentifier in this._columns) | 186 if (columnId in this._columns) |
187 this._innerRemoveColumn(columnIdentifier); | 187 this._innerRemoveColumn(columnId); |
188 | 188 |
189 if (position === undefined) | 189 if (position === undefined) |
190 position = this._columnsArray.length; | 190 position = this._columnsArray.length; |
191 | 191 |
192 this._columnsArray.splice(position, 0, column); | 192 this._columnsArray.splice(position, 0, column); |
193 this._columns[columnIdentifier] = column; | 193 this._columns[columnId] = column; |
194 if (column.disclosure) | 194 if (column.disclosure) |
195 this.disclosureColumnIdentifier = columnIdentifier; | 195 this.disclosureColumnId = columnId; |
196 | 196 |
197 var cell = createElement("th"); | 197 var cell = createElement("th"); |
198 cell.className = columnIdentifier + "-column"; | 198 cell.className = columnId + "-column"; |
199 cell.columnIdentifier = String(columnIdentifier); | 199 cell[WebInspector.DataGrid._columnIdSymbol] = columnId; |
200 this._headerTableHeaders[columnIdentifier] = cell; | 200 this._headerTableHeaders[columnId] = cell; |
201 | 201 |
202 var div = createElement("div"); | 202 var div = createElement("div"); |
203 if (column.titleDOMFragment) | 203 if (column.titleDOMFragment) |
204 div.appendChild(column.titleDOMFragment); | 204 div.appendChild(column.titleDOMFragment); |
205 else | 205 else |
206 div.textContent = column.title; | 206 div.textContent = column.title; |
207 cell.appendChild(div); | 207 cell.appendChild(div); |
208 | 208 |
209 if (column.sort) { | 209 if (column.sort) { |
210 cell.classList.add(column.sort); | 210 cell.classList.add(column.sort); |
(...skipping 10 matching lines...) Expand all Loading... |
221 /** | 221 /** |
222 * @param {!WebInspector.DataGrid.ColumnDescriptor} column | 222 * @param {!WebInspector.DataGrid.ColumnDescriptor} column |
223 * @param {number=} position | 223 * @param {number=} position |
224 */ | 224 */ |
225 addColumn: function(column, position) | 225 addColumn: function(column, position) |
226 { | 226 { |
227 this._innerAddColumn(column, position); | 227 this._innerAddColumn(column, position); |
228 }, | 228 }, |
229 | 229 |
230 /** | 230 /** |
231 * @param {string} columnIdentifier | 231 * @param {string} columnId |
232 */ | 232 */ |
233 _innerRemoveColumn: function(columnIdentifier) | 233 _innerRemoveColumn: function(columnId) |
234 { | 234 { |
235 var column = this._columns[columnIdentifier]; | 235 var column = this._columns[columnId]; |
236 if (!column) | 236 if (!column) |
237 return; | 237 return; |
238 delete this._columns[columnIdentifier]; | 238 delete this._columns[columnId]; |
239 var index = this._columnsArray.findIndex(columnConfig => columnConfig.id
entifier === columnIdentifier); | 239 var index = this._columnsArray.findIndex(columnConfig => columnConfig.id
=== columnId); |
240 this._columnsArray.splice(index, 1); | 240 this._columnsArray.splice(index, 1); |
241 var cell = this._headerTableHeaders[columnIdentifier]; | 241 var cell = this._headerTableHeaders[columnId]; |
242 if (cell.parentElement) | 242 if (cell.parentElement) |
243 cell.parentElement.removeChild(cell); | 243 cell.parentElement.removeChild(cell); |
244 delete this._headerTableHeaders[columnIdentifier]; | 244 delete this._headerTableHeaders[columnId]; |
245 }, | 245 }, |
246 | 246 |
247 /** | 247 /** |
248 * @param {string} columnIdentifier | 248 * @param {string} columnId |
249 */ | 249 */ |
250 removeColumn: function(columnIdentifier) | 250 removeColumn: function(columnId) |
251 { | 251 { |
252 this._innerRemoveColumn(columnIdentifier); | 252 this._innerRemoveColumn(columnId); |
253 }, | 253 }, |
254 | 254 |
255 /** | 255 /** |
256 * @param {string} cellClass | 256 * @param {string} cellClass |
257 */ | 257 */ |
258 setCellClass: function(cellClass) | 258 setCellClass: function(cellClass) |
259 { | 259 { |
260 this._cellClass = cellClass; | 260 this._cellClass = cellClass; |
261 }, | 261 }, |
262 | 262 |
263 _refreshHeader: function() | 263 _refreshHeader: function() |
264 { | 264 { |
265 this._headerTableColumnGroup.removeChildren(); | 265 this._headerTableColumnGroup.removeChildren(); |
266 this._dataTableColumnGroup.removeChildren(); | 266 this._dataTableColumnGroup.removeChildren(); |
267 this._headerRow.removeChildren(); | 267 this._headerRow.removeChildren(); |
268 this._topFillerRow.removeChildren(); | 268 this._topFillerRow.removeChildren(); |
269 this._bottomFillerRow.removeChildren(); | 269 this._bottomFillerRow.removeChildren(); |
270 | 270 |
271 for (var i = 0; i < this._visibleColumnsArray.length; ++i) { | 271 for (var i = 0; i < this._visibleColumnsArray.length; ++i) { |
272 var column = this._visibleColumnsArray[i]; | 272 var column = this._visibleColumnsArray[i]; |
273 var columnIdentifier = column.identifier || String(i); | 273 var columnId = column.id; |
274 var headerColumn = this._headerTableColumnGroup.createChild("col"); | 274 var headerColumn = this._headerTableColumnGroup.createChild("col"); |
275 var dataColumn = this._dataTableColumnGroup.createChild("col"); | 275 var dataColumn = this._dataTableColumnGroup.createChild("col"); |
276 if (column.width) { | 276 if (column.width) { |
277 headerColumn.style.width = column.width; | 277 headerColumn.style.width = column.width; |
278 dataColumn.style.width = column.width; | 278 dataColumn.style.width = column.width; |
279 } | 279 } |
280 this._headerRow.appendChild(this._headerTableHeaders[columnIdentifie
r]); | 280 this._headerRow.appendChild(this._headerTableHeaders[columnId]); |
281 this._topFillerRow.createChild("td", "top-filler-td"); | 281 this._topFillerRow.createChild("td", "top-filler-td"); |
282 this._bottomFillerRow.createChild("td", "bottom-filler-td").columnId
entifier_ = columnIdentifier; | 282 this._bottomFillerRow.createChild("td", "bottom-filler-td")[WebInspe
ctor.DataGrid._columnIdSymbol] = columnId; |
283 } | 283 } |
284 | 284 |
285 this._headerRow.createChild("th", "corner"); | 285 this._headerRow.createChild("th", "corner"); |
286 this._topFillerRow.createChild("td", "corner").classList.add("top-filler
-td"); | 286 this._topFillerRow.createChild("td", "corner").classList.add("top-filler
-td"); |
287 this._bottomFillerRow.createChild("td", "corner").classList.add("bottom-
filler-td"); | 287 this._bottomFillerRow.createChild("td", "corner").classList.add("bottom-
filler-td"); |
288 this._headerTableColumnGroup.createChild("col", "corner"); | 288 this._headerTableColumnGroup.createChild("col", "corner"); |
289 this._dataTableColumnGroup.createChild("col", "corner"); | 289 this._dataTableColumnGroup.createChild("col", "corner"); |
290 }, | 290 }, |
291 | 291 |
292 /** | 292 /** |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 rootNode: function() | 331 rootNode: function() |
332 { | 332 { |
333 return this._rootNode; | 333 return this._rootNode; |
334 }, | 334 }, |
335 | 335 |
336 _ondblclick: function(event) | 336 _ondblclick: function(event) |
337 { | 337 { |
338 if (this._editing || this._editingNode) | 338 if (this._editing || this._editingNode) |
339 return; | 339 return; |
340 | 340 |
341 var columnIdentifier = this.columnIdentifierFromNode(event.target); | 341 var columnId = this.columnIdFromNode(event.target); |
342 if (!columnIdentifier || !this._columns[columnIdentifier].editable) | 342 if (!columnId || !this._columns[columnId].editable) |
343 return; | 343 return; |
344 this._startEditing(event.target); | 344 this._startEditing(event.target); |
345 }, | 345 }, |
346 | 346 |
347 /** | 347 /** |
348 * @param {!WebInspector.DataGridNode} node | 348 * @param {!WebInspector.DataGridNode} node |
349 * @param {number} cellIndex | 349 * @param {number} cellIndex |
350 */ | 350 */ |
351 _startEditingColumnOfDataGridNode: function(node, cellIndex) | 351 _startEditingColumnOfDataGridNode: function(node, cellIndex) |
352 { | 352 { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 this.updateWidths(); | 391 this.updateWidths(); |
392 }, | 392 }, |
393 | 393 |
394 _startEditingConfig: function(element) | 394 _startEditingConfig: function(element) |
395 { | 395 { |
396 return new WebInspector.InplaceEditor.Config(this._editingCommitted.bind
(this), this._editingCancelled.bind(this), element.textContent); | 396 return new WebInspector.InplaceEditor.Config(this._editingCommitted.bind
(this), this._editingCancelled.bind(this), element.textContent); |
397 }, | 397 }, |
398 | 398 |
399 _editingCommitted: function(element, newText, oldText, context, moveDirectio
n) | 399 _editingCommitted: function(element, newText, oldText, context, moveDirectio
n) |
400 { | 400 { |
401 var columnIdentifier = this.columnIdentifierFromNode(element); | 401 var columnId = this.columnIdFromNode(element); |
402 if (!columnIdentifier) { | 402 if (!columnId) { |
403 this._editingCancelled(element); | 403 this._editingCancelled(element); |
404 return; | 404 return; |
405 } | 405 } |
406 var column = this._columns[columnIdentifier]; | 406 var column = this._columns[columnId]; |
407 var cellIndex = this._visibleColumnsArray.indexOf(column); | 407 var cellIndex = this._visibleColumnsArray.indexOf(column); |
408 var textBeforeEditing = this._editingNode.data[columnIdentifier]; | 408 var textBeforeEditing = this._editingNode.data[columnId]; |
409 var currentEditingNode = this._editingNode; | 409 var currentEditingNode = this._editingNode; |
410 | 410 |
411 /** | 411 /** |
412 * @param {boolean} wasChange | 412 * @param {boolean} wasChange |
413 * @this {WebInspector.DataGrid} | 413 * @this {WebInspector.DataGrid} |
414 */ | 414 */ |
415 function moveToNextIfNeeded(wasChange) | 415 function moveToNextIfNeeded(wasChange) |
416 { | 416 { |
417 if (!moveDirection) | 417 if (!moveDirection) |
418 return; | 418 return; |
(...skipping 30 matching lines...) Expand all Loading... |
449 } | 449 } |
450 } | 450 } |
451 | 451 |
452 if (textBeforeEditing === newText) { | 452 if (textBeforeEditing === newText) { |
453 this._editingCancelled(element); | 453 this._editingCancelled(element); |
454 moveToNextIfNeeded.call(this, false); | 454 moveToNextIfNeeded.call(this, false); |
455 return; | 455 return; |
456 } | 456 } |
457 | 457 |
458 // Update the text in the datagrid that we typed | 458 // Update the text in the datagrid that we typed |
459 this._editingNode.data[columnIdentifier] = newText; | 459 this._editingNode.data[columnId] = newText; |
460 | 460 |
461 // Make the callback - expects an editing node (table row), the column n
umber that is being edited, | 461 // Make the callback - expects an editing node (table row), the column n
umber that is being edited, |
462 // the text that used to be there, and the new text. | 462 // the text that used to be there, and the new text. |
463 this._editCallback(this._editingNode, columnIdentifier, textBeforeEditin
g, newText); | 463 this._editCallback(this._editingNode, columnId, textBeforeEditing, newTe
xt); |
464 | 464 |
465 if (this._editingNode.isCreationNode) | 465 if (this._editingNode.isCreationNode) |
466 this.addCreationNode(false); | 466 this.addCreationNode(false); |
467 | 467 |
468 this._editingCancelled(element); | 468 this._editingCancelled(element); |
469 moveToNextIfNeeded.call(this, true); | 469 moveToNextIfNeeded.call(this, true); |
470 }, | 470 }, |
471 | 471 |
472 _editingCancelled: function(element) | 472 _editingCancelled: function(element) |
473 { | 473 { |
(...skipping 13 matching lines...) Expand all Loading... |
487 for (var i = cellIndex + increment; (i >= 0) && (i < columns.length); i
+= increment) { | 487 for (var i = cellIndex + increment; (i >= 0) && (i < columns.length); i
+= increment) { |
488 if (columns[i].editable) | 488 if (columns[i].editable) |
489 return i; | 489 return i; |
490 } | 490 } |
491 return -1; | 491 return -1; |
492 }, | 492 }, |
493 | 493 |
494 /** | 494 /** |
495 * @return {?string} | 495 * @return {?string} |
496 */ | 496 */ |
497 sortColumnIdentifier: function() | 497 sortColumnId: function() |
498 { | 498 { |
499 if (!this._sortColumnCell) | 499 if (!this._sortColumnCell) |
500 return null; | 500 return null; |
501 return this._sortColumnCell.columnIdentifier; | 501 return this._sortColumnCell[WebInspector.DataGrid._columnIdSymbol]; |
502 }, | 502 }, |
503 | 503 |
504 /** | 504 /** |
505 * @return {?string} | 505 * @return {?string} |
506 */ | 506 */ |
507 sortOrder: function() | 507 sortOrder: function() |
508 { | 508 { |
509 if (!this._sortColumnCell || this._sortColumnCell.classList.contains(Web
Inspector.DataGrid.Order.Ascending)) | 509 if (!this._sortColumnCell || this._sortColumnCell.classList.contains(Web
Inspector.DataGrid.Order.Ascending)) |
510 return WebInspector.DataGrid.Order.Ascending; | 510 return WebInspector.DataGrid.Order.Ascending; |
511 if (this._sortColumnCell.classList.contains(WebInspector.DataGrid.Order.
Descending)) | 511 if (this._sortColumnCell.classList.contains(WebInspector.DataGrid.Order.
Descending)) |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 { | 580 { |
581 var widths = []; | 581 var widths = []; |
582 for (var i = 0; i < this._columnsArray.length; ++i) | 582 for (var i = 0; i < this._columnsArray.length; ++i) |
583 widths.push((this._columnsArray[i].title || "").length); | 583 widths.push((this._columnsArray[i].title || "").length); |
584 | 584 |
585 maxDescentLevel = maxDescentLevel || 0; | 585 maxDescentLevel = maxDescentLevel || 0; |
586 var children = this._enumerateChildren(this._rootNode, [], maxDescentLev
el + 1); | 586 var children = this._enumerateChildren(this._rootNode, [], maxDescentLev
el + 1); |
587 for (var i = 0; i < children.length; ++i) { | 587 for (var i = 0; i < children.length; ++i) { |
588 var node = children[i]; | 588 var node = children[i]; |
589 for (var j = 0; j < this._columnsArray.length; ++j) { | 589 for (var j = 0; j < this._columnsArray.length; ++j) { |
590 var text = node.data[this._columnsArray[j].identifier] || ""; | 590 var text = node.data[this._columnsArray[j].id]; |
591 if (text.length > widths[j]) | 591 if (text.length > widths[j]) |
592 widths[j] = text.length; | 592 widths[j] = text.length; |
593 } | 593 } |
594 } | 594 } |
595 | 595 |
596 widths = this._autoSizeWidths(widths, minPercent, maxPercent); | 596 widths = this._autoSizeWidths(widths, minPercent, maxPercent); |
597 | 597 |
598 for (var i = 0; i < this._columnsArray.length; ++i) | 598 for (var i = 0; i < this._columnsArray.length; ++i) |
599 this._columnsArray[i].weight = widths[i]; | 599 this._columnsArray[i].weight = widths[i]; |
600 this._columnWidthsInitialized = false; | 600 this._columnWidthsInitialized = false; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 this._loadColumnWeights(); | 660 this._loadColumnWeights(); |
661 }, | 661 }, |
662 | 662 |
663 _loadColumnWeights: function() | 663 _loadColumnWeights: function() |
664 { | 664 { |
665 if (!this._columnWeightsSetting) | 665 if (!this._columnWeightsSetting) |
666 return; | 666 return; |
667 var weights = this._columnWeightsSetting.get(); | 667 var weights = this._columnWeightsSetting.get(); |
668 for (var i = 0; i < this._columnsArray.length; ++i) { | 668 for (var i = 0; i < this._columnsArray.length; ++i) { |
669 var column = this._columnsArray[i]; | 669 var column = this._columnsArray[i]; |
670 var weight = weights[column.identifier]; | 670 var weight = weights[column.id]; |
671 if (weight) | 671 if (weight) |
672 column.weight = weight; | 672 column.weight = weight; |
673 } | 673 } |
674 this._applyColumnWeights(); | 674 this._applyColumnWeights(); |
675 }, | 675 }, |
676 | 676 |
677 _saveColumnWeights: function() | 677 _saveColumnWeights: function() |
678 { | 678 { |
679 if (!this._columnWeightsSetting) | 679 if (!this._columnWeightsSetting) |
680 return; | 680 return; |
681 var weights = {}; | 681 var weights = {}; |
682 for (var i = 0; i < this._columnsArray.length; ++i) { | 682 for (var i = 0; i < this._columnsArray.length; ++i) { |
683 var column = this._columnsArray[i]; | 683 var column = this._columnsArray[i]; |
684 weights[column.identifier] = column.weight; | 684 weights[column.id] = column.weight; |
685 } | 685 } |
686 this._columnWeightsSetting.set(weights); | 686 this._columnWeightsSetting.set(weights); |
687 }, | 687 }, |
688 | 688 |
689 wasShown: function() | 689 wasShown: function() |
690 { | 690 { |
691 this._loadColumnWeights(); | 691 this._loadColumnWeights(); |
692 }, | 692 }, |
693 | 693 |
694 willHide: function() | 694 willHide: function() |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 }, | 735 }, |
736 | 736 |
737 /** | 737 /** |
738 * @param {!Object.<string, boolean>} columnsVisibility | 738 * @param {!Object.<string, boolean>} columnsVisibility |
739 */ | 739 */ |
740 setColumnsVisiblity: function(columnsVisibility) | 740 setColumnsVisiblity: function(columnsVisibility) |
741 { | 741 { |
742 this._visibleColumnsArray = []; | 742 this._visibleColumnsArray = []; |
743 for (var i = 0; i < this._columnsArray.length; ++i) { | 743 for (var i = 0; i < this._columnsArray.length; ++i) { |
744 var column = this._columnsArray[i]; | 744 var column = this._columnsArray[i]; |
745 if (columnsVisibility[column.identifier || String(i)]) | 745 if (columnsVisibility[column.id]) |
746 this._visibleColumnsArray.push(column); | 746 this._visibleColumnsArray.push(column); |
747 } | 747 } |
748 this._refreshHeader(); | 748 this._refreshHeader(); |
749 this._applyColumnWeights(); | 749 this._applyColumnWeights(); |
750 var nodes = this._enumerateChildren(this.rootNode(), [], -1); | 750 var nodes = this._enumerateChildren(this.rootNode(), [], -1); |
751 for (var i = 0; i < nodes.length; ++i) | 751 for (var i = 0; i < nodes.length; ++i) |
752 nodes[i].refresh(); | 752 nodes[i].refresh(); |
753 }, | 753 }, |
754 | 754 |
755 get scrollContainer() | 755 get scrollContainer() |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 dataGridNodeFromNode: function(target) | 916 dataGridNodeFromNode: function(target) |
917 { | 917 { |
918 var rowElement = target.enclosingNodeOrSelfWithNodeName("tr"); | 918 var rowElement = target.enclosingNodeOrSelfWithNodeName("tr"); |
919 return rowElement && rowElement._dataGridNode; | 919 return rowElement && rowElement._dataGridNode; |
920 }, | 920 }, |
921 | 921 |
922 /** | 922 /** |
923 * @param {!Node} target | 923 * @param {!Node} target |
924 * @return {?string} | 924 * @return {?string} |
925 */ | 925 */ |
926 columnIdentifierFromNode: function(target) | 926 columnIdFromNode: function(target) |
927 { | 927 { |
928 var cellElement = target.enclosingNodeOrSelfWithNodeName("td"); | 928 var cellElement = target.enclosingNodeOrSelfWithNodeName("td"); |
929 return cellElement && cellElement.columnIdentifier_; | 929 return cellElement && cellElement[WebInspector.DataGrid._columnIdSymbol]
; |
930 }, | 930 }, |
931 | 931 |
932 _clickInHeaderCell: function(event) | 932 _clickInHeaderCell: function(event) |
933 { | 933 { |
934 var cell = event.target.enclosingNodeOrSelfWithNodeName("th"); | 934 var cell = event.target.enclosingNodeOrSelfWithNodeName("th"); |
935 if (!cell || (cell.columnIdentifier === undefined) || !cell.classList.co
ntains("sortable")) | 935 if (!cell || (cell[WebInspector.DataGrid._columnIdSymbol] === undefined)
|| !cell.classList.contains("sortable")) |
936 return; | 936 return; |
937 | 937 |
938 var sortOrder = WebInspector.DataGrid.Order.Ascending; | 938 var sortOrder = WebInspector.DataGrid.Order.Ascending; |
939 if ((cell === this._sortColumnCell) && this.isSortOrderAscending()) | 939 if ((cell === this._sortColumnCell) && this.isSortOrderAscending()) |
940 sortOrder = WebInspector.DataGrid.Order.Descending; | 940 sortOrder = WebInspector.DataGrid.Order.Descending; |
941 | 941 |
942 if (this._sortColumnCell) | 942 if (this._sortColumnCell) |
943 this._sortColumnCell.classList.remove(WebInspector.DataGrid.Order.As
cending, WebInspector.DataGrid.Order.Descending); | 943 this._sortColumnCell.classList.remove(WebInspector.DataGrid.Order.As
cending, WebInspector.DataGrid.Order.Descending); |
944 this._sortColumnCell = cell; | 944 this._sortColumnCell = cell; |
945 | 945 |
946 cell.classList.add(sortOrder); | 946 cell.classList.add(sortOrder); |
947 | 947 |
948 this.dispatchEventToListeners(WebInspector.DataGrid.Events.SortingChange
d); | 948 this.dispatchEventToListeners(WebInspector.DataGrid.Events.SortingChange
d); |
949 }, | 949 }, |
950 | 950 |
951 /** | 951 /** |
952 * @param {string} columnIdentifier | 952 * @param {string} columnId |
953 * @param {!WebInspector.DataGrid.Order} sortOrder | 953 * @param {!WebInspector.DataGrid.Order} sortOrder |
954 */ | 954 */ |
955 markColumnAsSortedBy: function(columnIdentifier, sortOrder) | 955 markColumnAsSortedBy: function(columnId, sortOrder) |
956 { | 956 { |
957 if (this._sortColumnCell) | 957 if (this._sortColumnCell) |
958 this._sortColumnCell.classList.remove(WebInspector.DataGrid.Order.As
cending, WebInspector.DataGrid.Order.Descending); | 958 this._sortColumnCell.classList.remove(WebInspector.DataGrid.Order.As
cending, WebInspector.DataGrid.Order.Descending); |
959 this._sortColumnCell = this._headerTableHeaders[columnIdentifier]; | 959 this._sortColumnCell = this._headerTableHeaders[columnId]; |
960 this._sortColumnCell.classList.add(sortOrder); | 960 this._sortColumnCell.classList.add(sortOrder); |
961 }, | 961 }, |
962 | 962 |
963 /** | 963 /** |
964 * @param {string} columnIdentifier | 964 * @param {string} columnId |
965 * @return {!Element} | 965 * @return {!Element} |
966 */ | 966 */ |
967 headerTableHeader: function(columnIdentifier) | 967 headerTableHeader: function(columnId) |
968 { | 968 { |
969 return this._headerTableHeaders[columnIdentifier]; | 969 return this._headerTableHeaders[columnId]; |
970 }, | 970 }, |
971 | 971 |
972 _mouseDownInDataTable: function(event) | 972 _mouseDownInDataTable: function(event) |
973 { | 973 { |
974 var gridNode = this.dataGridNodeFromNode(event.target); | 974 var gridNode = this.dataGridNodeFromNode(event.target); |
975 if (!gridNode || !gridNode.selectable) | 975 if (!gridNode || !gridNode.selectable) |
976 return; | 976 return; |
977 | 977 |
978 if (gridNode.isEventWithinDisclosureTriangle(event)) | 978 if (gridNode.isEventWithinDisclosureTriangle(event)) |
979 return; | 979 return; |
980 | 980 |
981 var columnIdentifier = this.columnIdentifierFromNode(event.target); | 981 var columnId = this.columnIdFromNode(event.target); |
982 if (columnIdentifier && this._columns[columnIdentifier].nonSelectable) | 982 if (columnId && this._columns[columnId].nonSelectable) |
983 return; | 983 return; |
984 | 984 |
985 if (event.metaKey) { | 985 if (event.metaKey) { |
986 if (gridNode.selected) | 986 if (gridNode.selected) |
987 gridNode.deselect(); | 987 gridNode.deselect(); |
988 else | 988 else |
989 gridNode.select(); | 989 gridNode.select(); |
990 } else | 990 } else |
991 gridNode.select(); | 991 gridNode.select(); |
992 }, | 992 }, |
993 | 993 |
994 _contextMenuInDataTable: function(event) | 994 _contextMenuInDataTable: function(event) |
995 { | 995 { |
996 var contextMenu = new WebInspector.ContextMenu(event); | 996 var contextMenu = new WebInspector.ContextMenu(event); |
997 | 997 |
998 var gridNode = this.dataGridNodeFromNode(event.target); | 998 var gridNode = this.dataGridNodeFromNode(event.target); |
999 if (this._refreshCallback && (!gridNode || gridNode !== this.creationNod
e)) | 999 if (this._refreshCallback && (!gridNode || gridNode !== this.creationNod
e)) |
1000 contextMenu.appendItem(WebInspector.UIString("Refresh"), this._refre
shCallback.bind(this)); | 1000 contextMenu.appendItem(WebInspector.UIString("Refresh"), this._refre
shCallback.bind(this)); |
1001 | 1001 |
1002 if (gridNode && gridNode.selectable && !gridNode.isEventWithinDisclosure
Triangle(event)) { | 1002 if (gridNode && gridNode.selectable && !gridNode.isEventWithinDisclosure
Triangle(event)) { |
1003 if (this._editCallback) { | 1003 if (this._editCallback) { |
1004 if (gridNode === this.creationNode) | 1004 if (gridNode === this.creationNode) |
1005 contextMenu.appendItem(WebInspector.UIString.capitalize("Add
^new"), this._startEditing.bind(this, event.target)); | 1005 contextMenu.appendItem(WebInspector.UIString.capitalize("Add
^new"), this._startEditing.bind(this, event.target)); |
1006 else { | 1006 else { |
1007 var columnIdentifier = this.columnIdentifierFromNode(event.t
arget); | 1007 var columnId = this.columnIdFromNode(event.target); |
1008 if (columnIdentifier && this._columns[columnIdentifier].edit
able) | 1008 if (columnId && this._columns[columnId].editable) |
1009 contextMenu.appendItem(WebInspector.UIString("Edit \"%s\
"", this._columns[columnIdentifier].title), this._startEditing.bind(this, event.
target)); | 1009 contextMenu.appendItem(WebInspector.UIString("Edit \"%s\
"", this._columns[columnId].title), this._startEditing.bind(this, event.target))
; |
1010 } | 1010 } |
1011 } | 1011 } |
1012 if (this._deleteCallback && gridNode !== this.creationNode) | 1012 if (this._deleteCallback && gridNode !== this.creationNode) |
1013 contextMenu.appendItem(WebInspector.UIString.capitalize("Delete"
), this._deleteCallback.bind(this, gridNode)); | 1013 contextMenu.appendItem(WebInspector.UIString.capitalize("Delete"
), this._deleteCallback.bind(this, gridNode)); |
1014 if (this._contextMenuCallback) | 1014 if (this._contextMenuCallback) |
1015 this._contextMenuCallback(contextMenu, gridNode); | 1015 this._contextMenuCallback(contextMenu, gridNode); |
1016 } | 1016 } |
1017 | 1017 |
1018 contextMenu.show(); | 1018 contextMenu.show(); |
1019 }, | 1019 }, |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1128 | 1128 |
1129 /** | 1129 /** |
1130 * @param {string} columnId | 1130 * @param {string} columnId |
1131 * @return {number} | 1131 * @return {number} |
1132 */ | 1132 */ |
1133 columnOffset: function(columnId) | 1133 columnOffset: function(columnId) |
1134 { | 1134 { |
1135 if (!this.element.offsetWidth) | 1135 if (!this.element.offsetWidth) |
1136 return 0; | 1136 return 0; |
1137 for (var i = 1; i < this._visibleColumnsArray.length; ++i) { | 1137 for (var i = 1; i < this._visibleColumnsArray.length; ++i) { |
1138 if (columnId === this._visibleColumnsArray[i].identifier) { | 1138 if (columnId === this._visibleColumnsArray[i].id) { |
1139 if (this._resizers[i - 1]) | 1139 if (this._resizers[i - 1]) |
1140 return this._resizers[i - 1].__position; | 1140 return this._resizers[i - 1].__position; |
1141 } | 1141 } |
1142 } | 1142 } |
1143 return 0; | 1143 return 0; |
1144 }, | 1144 }, |
1145 | 1145 |
1146 _endResizerDragging: function(event) | 1146 _endResizerDragging: function(event) |
1147 { | 1147 { |
1148 this._currentResizer = null; | 1148 this._currentResizer = null; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1254 }, | 1254 }, |
1255 | 1255 |
1256 /** | 1256 /** |
1257 * @protected | 1257 * @protected |
1258 */ | 1258 */ |
1259 createCells: function() | 1259 createCells: function() |
1260 { | 1260 { |
1261 this._element.removeChildren(); | 1261 this._element.removeChildren(); |
1262 var columnsArray = this.dataGrid._visibleColumnsArray; | 1262 var columnsArray = this.dataGrid._visibleColumnsArray; |
1263 for (var i = 0; i < columnsArray.length; ++i) | 1263 for (var i = 0; i < columnsArray.length; ++i) |
1264 this._element.appendChild(this.createCell(columnsArray[i].identifier
|| String(i))); | 1264 this._element.appendChild(this.createCell(columnsArray[i].id)); |
1265 this._element.appendChild(this._createTDWithClass("corner")); | 1265 this._element.appendChild(this._createTDWithClass("corner")); |
1266 }, | 1266 }, |
1267 | 1267 |
1268 get data() | 1268 get data() |
1269 { | 1269 { |
1270 return this._data; | 1270 return this._data; |
1271 }, | 1271 }, |
1272 | 1272 |
1273 set data(x) | 1273 set data(x) |
1274 { | 1274 { |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1404 _createTDWithClass: function(className) | 1404 _createTDWithClass: function(className) |
1405 { | 1405 { |
1406 var cell = createElementWithClass("td", className); | 1406 var cell = createElementWithClass("td", className); |
1407 var cellClass = this.dataGrid._cellClass; | 1407 var cellClass = this.dataGrid._cellClass; |
1408 if (cellClass) | 1408 if (cellClass) |
1409 cell.classList.add(cellClass); | 1409 cell.classList.add(cellClass); |
1410 return cell; | 1410 return cell; |
1411 }, | 1411 }, |
1412 | 1412 |
1413 /** | 1413 /** |
1414 * @param {string} columnIdentifier | 1414 * @param {string} columnId |
1415 * @return {!Element} | 1415 * @return {!Element} |
1416 */ | 1416 */ |
1417 createTD: function(columnIdentifier) | 1417 createTD: function(columnId) |
1418 { | 1418 { |
1419 var cell = this._createTDWithClass(columnIdentifier + "-column"); | 1419 var cell = this._createTDWithClass(columnId + "-column"); |
1420 cell.columnIdentifier_ = columnIdentifier; | 1420 cell[WebInspector.DataGrid._columnIdSymbol] = columnId; |
1421 | 1421 |
1422 var alignment = this.dataGrid._columns[columnIdentifier].align; | 1422 var alignment = this.dataGrid._columns[columnId].align; |
1423 if (alignment) | 1423 if (alignment) |
1424 cell.classList.add(alignment); | 1424 cell.classList.add(alignment); |
1425 | 1425 |
1426 if (columnIdentifier === this.dataGrid.disclosureColumnIdentifier) { | 1426 if (columnId === this.dataGrid.disclosureColumnId) { |
1427 cell.classList.add("disclosure"); | 1427 cell.classList.add("disclosure"); |
1428 if (this.leftPadding) | 1428 if (this.leftPadding) |
1429 cell.style.setProperty("padding-left", this.leftPadding + "px"); | 1429 cell.style.setProperty("padding-left", this.leftPadding + "px"); |
1430 } | 1430 } |
1431 | 1431 |
1432 return cell; | 1432 return cell; |
1433 }, | 1433 }, |
1434 | 1434 |
1435 /** | 1435 /** |
1436 * @param {string} columnIdentifier | 1436 * @param {string} columnId |
1437 * @return {!Element} | 1437 * @return {!Element} |
1438 */ | 1438 */ |
1439 createCell: function(columnIdentifier) | 1439 createCell: function(columnId) |
1440 { | 1440 { |
1441 var cell = this.createTD(columnIdentifier); | 1441 var cell = this.createTD(columnId); |
1442 | 1442 |
1443 var data = this.data[columnIdentifier]; | 1443 var data = this.data[columnId]; |
1444 if (data instanceof Node) { | 1444 if (data instanceof Node) { |
1445 cell.appendChild(data); | 1445 cell.appendChild(data); |
1446 } else { | 1446 } else { |
1447 cell.textContent = data; | 1447 cell.textContent = data; |
1448 if (this.dataGrid._columns[columnIdentifier].longText) | 1448 if (this.dataGrid._columns[columnId].longText) |
1449 cell.title = data; | 1449 cell.title = data; |
1450 } | 1450 } |
1451 | 1451 |
1452 return cell; | 1452 return cell; |
1453 }, | 1453 }, |
1454 | 1454 |
1455 /** | 1455 /** |
1456 * @return {number} | 1456 * @return {number} |
1457 */ | 1457 */ |
1458 nodeSelfHeight: function() | 1458 nodeSelfHeight: function() |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1936 detachChildWidgets: function() | 1936 detachChildWidgets: function() |
1937 { | 1937 { |
1938 WebInspector.Widget.prototype.detachChildWidgets.call(this); | 1938 WebInspector.Widget.prototype.detachChildWidgets.call(this); |
1939 for (var dataGrid of this._dataGrids) | 1939 for (var dataGrid of this._dataGrids) |
1940 this.element.removeChild(dataGrid.element); | 1940 this.element.removeChild(dataGrid.element); |
1941 this._dataGrids = []; | 1941 this._dataGrids = []; |
1942 }, | 1942 }, |
1943 | 1943 |
1944 __proto__: WebInspector.VBox.prototype | 1944 __proto__: WebInspector.VBox.prototype |
1945 }; | 1945 }; |
OLD | NEW |