| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/core/analysis/object_snapshot_view.html"> |
| <link rel="import" href="/core/analysis/object_instance_view.html"> |
| <link rel="import" href="/core/tracks/multi_row_track.html"> |
| <link rel="import" href="/core/tracks/object_instance_track.html"> |
| <link rel="import" href="/base/sorted_array_utils.html"> |
| <link rel="import" href="/base/ui.html"> |
| <script> |
| 'use strict'; |
| |
| tv.exportTo('tv.c.tracks', function() { |
| /** |
| * A track that displays a ObjectInstanceGroup. |
| * @constructor |
| * @extends {ContainerTrack} |
| */ |
| var ObjectInstanceGroupTrack = tv.b.ui.define( |
| 'object-instance-group-track', tv.c.tracks.MultiRowTrack); |
| |
| ObjectInstanceGroupTrack.prototype = { |
| |
| __proto__: tv.c.tracks.MultiRowTrack.prototype, |
| |
| decorate: function(viewport) { |
| tv.c.tracks.MultiRowTrack.prototype.decorate.call(this, viewport); |
| this.classList.add('object-instance-group-track'); |
| this.objectInstances_ = undefined; |
| }, |
| |
| get objectInstances() { |
| return this.itemsToGroup; |
| }, |
| |
| set objectInstances(objectInstances) { |
| this.setItemsToGroup(objectInstances); |
| }, |
| |
| addSubTrack_: function(objectInstances) { |
| var hasMultipleRows = this.subRows.length > 1; |
| var track = new tv.c.tracks.ObjectInstanceTrack(this.viewport); |
| track.objectInstances = objectInstances; |
| this.appendChild(track); |
| return track; |
| }, |
| |
| buildSubRows_: function(objectInstances) { |
| objectInstances.sort(function(x, y) { |
| return x.creationTs - y.creationTs; |
| }); |
| |
| var subRows = []; |
| for (var i = 0; i < objectInstances.length; i++) { |
| var objectInstance = objectInstances[i]; |
| |
| var found = false; |
| for (var j = 0; j < subRows.length; j++) { |
| var subRow = subRows[j]; |
| var lastItemInSubRow = subRow[subRow.length - 1]; |
| if (objectInstance.creationTs >= lastItemInSubRow.deletionTs) { |
| found = true; |
| subRow.push(objectInstance); |
| break; |
| } |
| } |
| if (!found) { |
| var subRow = [objectInstance]; |
| subRows.push(subRow); |
| } |
| } |
| return subRows; |
| }, |
| updateHeadingAndTooltip_: function() { |
| } |
| }; |
| |
| return { |
| ObjectInstanceGroupTrack: ObjectInstanceGroupTrack |
| }; |
| }); |
| </script> |