diff --git a/static/css/core-ui.css b/static/css/core-ui.css
index 70f69384e..e66c40e15 100644
--- a/static/css/core-ui.css
+++ b/static/css/core-ui.css
@@ -279,6 +279,7 @@ a:focus {
}
.co-tabs li a {
+ display: inline-block;
height: 60px;
line-height: 60px;
white-space: nowrap;
diff --git a/static/css/directives/repo-view/repo-panel-tags.css b/static/css/directives/repo-view/repo-panel-tags.css
index 0e1d0a9c5..0208ca3c3 100644
--- a/static/css/directives/repo-view/repo-panel-tags.css
+++ b/static/css/directives/repo-view/repo-panel-tags.css
@@ -57,10 +57,6 @@
display: block;
}
-.repo-panel-tags-element .image-id-col {
- width: 100px;
-}
-
.repo-panel-tags-element .options-col {
padding-left: 20px;
}
diff --git a/static/directives/repo-view/repo-panel-tags.html b/static/directives/repo-view/repo-panel-tags.html
index 360082a45..4c5ddba14 100644
--- a/static/directives/repo-view/repo-panel-tags.html
+++ b/static/directives/repo-view/repo-panel-tags.html
@@ -38,7 +38,7 @@
@@ -90,25 +90,30 @@
Security Scan
|
-
Size
|
+ style="width: 120px;">
Image
|
- |
+ |
+
+
+ |
|
|
|
- |
+ |
Unknown
-
+ |
|
- |
+ |
|
-
-
-
+ |
+
+
+
+
+
+ |
+
+
+
+
+
|
= 0) {
checked.push(tagInfo);
}
+
+ if (!imageIndexMap[tagInfo.image_id]) {
+ imageIndexMap[tagInfo.image_id] = {'start': i, 'end': i};
+ }
+
+ imageIndexMap[tagInfo.image_id]['end'] = i;
};
// Calculate the image tracks.
var colors = d3.scale.category10();
- var index = 0;
+ var imageTracks = [];
+ var imageTrackEntries = [];
imageIDs.sort().map(function(image_id) {
if (imageMap[image_id].length >= 2){
- imageTracks.push({
+ // Create the track entry.
+ var index = imageTrackEntries.length;
+ var trackEntry = {
'image_id': image_id,
'color': colors(index),
'count': imageMap[image_id].length,
'tags': imageMap[image_id]
- });
+ };
+
+ imageTrackEntries.push(trackEntry);
imageMap[image_id]['color'] = colors(index);
+ var currentImageIndex = imageIndexMap[image_id];
- ++index;
+ // Find the track in which we can place the entry, if any.
+ var existingTrack = null;
+ for (var i = 0; i < imageTracks.length; ++i) {
+ // For the current track, ensure that the start and end index
+ // for the current entry is outside of the range of the track's
+ // entries. If so, then we can add the entry to the track.
+ var currentTrack = imageTracks[i];
+ var canAddToCurrentTrack = true;
+ for (var j = 0; j < currentTrack.entries.length; ++j) {
+ var currentTrackEntry = currentTrack.entries[j];
+ var entryInfo = imageIndexMap[currentTrackEntry.image_id];
+ if (Math.max(entryInfo.start, currentImageIndex.start) <= Math.min(entryInfo.end, currentImageIndex.end)) {
+ canAddToCurrentTrack = false;
+ break;
+ }
+ }
+
+ if (canAddToCurrentTrack) {
+ existingTrack = currentTrack;
+ break;
+ }
+ }
+
+ // Add the entry to the track or create a new track if necessary.
+ if (existingTrack) {
+ existingTrack.entries.push(trackEntry)
+ } else {
+ imageTracks.push({
+ 'entries': [trackEntry]
+ });
+ }
}
});
$scope.imageMap = imageMap;
$scope.imageTracks = imageTracks;
+ $scope.imageTrackEntries = imageTrackEntries;
+
$scope.options.page = 0;
$scope.tags = ordered;
|