Start on new tag view
This commit is contained in:
parent
581a284744
commit
afc8e95e19
103 changed files with 148505 additions and 458 deletions
3
static/directives/cor-checkable-item.html
Normal file
3
static/directives/cor-checkable-item.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<span class="co-checkable-item" ng-click="toggleItem()"
|
||||
ng-class="controller.isChecked(item, controller.checked) ? 'checked': 'not-checked'">
|
||||
</span>
|
1
static/directives/cor-checkable-menu-item.html
Normal file
1
static/directives/cor-checkable-menu-item.html
Normal file
|
@ -0,0 +1 @@
|
|||
<li><a href="javascript:void(0)" ng-click="selected()"><span ng-transclude/></a></li>
|
12
static/directives/cor-checkable-menu.html
Normal file
12
static/directives/cor-checkable-menu.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<span class="co-checkable-menu">
|
||||
<span class="dropdown" style="text-align: left;">
|
||||
<span class="btn btn-default" data-toggle="dropdown">
|
||||
<span class="co-checkable-menu-state"
|
||||
ng-class="getClass(controller.items, controller.checked)"
|
||||
ng-click="toggleItems($event)">
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</span>
|
||||
<ul class="dropdown-menu" ng-transclude></ul>
|
||||
</span>
|
||||
</span>
|
25
static/directives/cor-confirm-dialog.html
Normal file
25
static/directives/cor-confirm-dialog.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<div class="cor-confirm-dialog-element">
|
||||
<div class="modal fade co-dialog">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-show="!working"
|
||||
data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">{{ dialogTitle }}</h4>
|
||||
</div>
|
||||
<div class="modal-body" ng-show="working">
|
||||
<div class="cor-loader"></div>
|
||||
</div>
|
||||
<div class="modal-body" ng-show="!working">
|
||||
<span ng-transclude/>
|
||||
</div>
|
||||
<div class="modal-footer" ng-show="!working">
|
||||
<button type="button" class="btn btn-primary" ng-click="performAction()">
|
||||
{{ dialogActionTitle }}
|
||||
</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||
</div>
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
</div>
|
|
@ -30,7 +30,8 @@
|
|||
</a>
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
|
||||
<i ng-class="repository.is_starred ? 'starred fa fa-star' : 'fa fa-star-o'" class="star-icon" ng-click="toggleStar({repository: repository})"></i>
|
||||
<span class="repo-star" repository="repository"
|
||||
star-toggled="starToggled({'repository': repository})"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="description markdown-view" content="repository.description" first-line-only="true" placeholder-needed="true"></div>
|
||||
|
|
5
static/directives/repo-star.html
Normal file
5
static/directives/repo-star.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<span class="repo-star-element">
|
||||
<i ng-class="repository.is_starred ? 'starred fa fa-star' : 'fa fa-star-o'"
|
||||
class="star-icon" ng-click="toggleStar()">
|
||||
</i>
|
||||
</span>
|
9
static/directives/repo-view/repo-panel-info.html
Normal file
9
static/directives/repo-view/repo-panel-info.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
<div class="repo-panel-info-element">
|
||||
<!-- Repository Description -->
|
||||
<div class="description markdown-input"
|
||||
content="repository.description"
|
||||
can-write="repository.can_write"
|
||||
content-changed="updateDescription"
|
||||
field-title="'repository description'">
|
||||
</div>
|
||||
</div>
|
116
static/directives/repo-view/repo-panel-tags.html
Normal file
116
static/directives/repo-view/repo-panel-tags.html
Normal file
|
@ -0,0 +1,116 @@
|
|||
<div class="repo-panel-tags-element">
|
||||
<h3 class="tab-header">Repository Tags</h3>
|
||||
<div class="resource-view" resource="imagesResource" error-message="'Could not load images'">
|
||||
|
||||
<div class="co-check-bar">
|
||||
<span class="cor-checkable-menu" controller="checkedTags">
|
||||
<div class="cor-checkable-menu-item" item-filter="allTagFilter">
|
||||
<i class="fa fa-check-square-o"></i>All Tags
|
||||
</div>
|
||||
<div class="cor-checkable-menu-item" item-filter="noTagFilter">
|
||||
<i class="fa fa-square-o"></i>No Tags
|
||||
</div>
|
||||
<div class="cor-checkable-menu-item" item-filter="commitTagFilter">
|
||||
<i class="fa fa-git"></i>Commit SHAs
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="co-checked-actions" ng-if="checkedTags.checked.length">
|
||||
<!--<button class="btn btn-default"><i class="fa fa-code-fork"></i> Visualize</button>-->
|
||||
<button class="btn btn-default" ng-click="askDeleteMultipleTags(checkedTags.checked)">
|
||||
<i class="fa fa-times"></i> Delete
|
||||
</button>
|
||||
</span>
|
||||
|
||||
<span class="co-filter-box">
|
||||
<input class="form-control" type="text" ng-model="options.tagFilter" placeholder="Filter Tags...">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<table class="co-table">
|
||||
<thead>
|
||||
<td class="checkbox-col"></td>
|
||||
<td ng-class="tablePredicateClass('name', options.predicate, options.reverse)">
|
||||
<a href="javascript:void(0)" ng-click="orderBy('name')">Tag</a>
|
||||
</td>
|
||||
<td ng-class="tablePredicateClass('last_modified_datetime', options.predicate, options.reverse)">
|
||||
<a href="javascript:void(0)" ng-click="orderBy('last_modified_datetime')">Last Modified</a>
|
||||
</td>
|
||||
<td ng-class="tablePredicateClass('size', options.predicate, options.reverse)">
|
||||
<a href="javascript:void(0)" ng-click="orderBy('size')">Size</a>
|
||||
</td>
|
||||
<td ng-class="tablePredicateClass('image_id', options.predicate, options.reverse)"
|
||||
colspan="{{ imageTracks.length + 1 }}">
|
||||
<a href="javascript:void(0)" ng-click="orderBy('image_id')">Image</a>
|
||||
</td>
|
||||
<td class="options-col"></td>
|
||||
</thead>
|
||||
|
||||
<tr class="co-checkable-row"
|
||||
ng-repeat="tag in tags"
|
||||
ng-class="checkedTags.isChecked(tag, checkedTags.checked) ? 'checked' : ''">
|
||||
<td><span class="cor-checkable-item" controller="checkedTags" item="tag"></span></td>
|
||||
<td><i class="fa fa-tag"></i> {{ tag.name }}</td>
|
||||
<td><span am-time-ago="tag.last_modified"></span></td>
|
||||
<td>{{ tag.size | bytes }}</td>
|
||||
<td class="image-track" ng-repeat="it in imageTracks" ng-style="{'color': it.color}">
|
||||
<span class="image-track-dot" ng-if="it.image_id == tag.image_id"></span>
|
||||
<span class="image-track-line" ng-class="trackLineClass($parent.$index, it)"
|
||||
ng-style="{'borderColor': it.color}"></span>
|
||||
</td>
|
||||
<td>{{ tag.image_id.substr(0, 12) }}</td>
|
||||
<td>
|
||||
<span class="cor-options-menu" ng-if="repository.can_write">
|
||||
<span class="cor-option" option-click="askDeleteTag(tag.name)">
|
||||
<i class="fa fa-times"></i> Delete Tag
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="empty" ng-if="allTags.length && !tags.length">
|
||||
<div class="empty-primary-msg">No matching tags found.</div>
|
||||
<div class="empty-secondary-msg">Try expanding your filtering terms.</div>
|
||||
</div>
|
||||
|
||||
<div class="empty" ng-if="!allTags.length">
|
||||
<div class="empty-primary-msg">This repository is empty.</div>
|
||||
<div class="empty-secondary-msg">Push a tag or initiate a build to populate this repository.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Delete Tags Confirm -->
|
||||
<div class="cor-confirm-dialog"
|
||||
dialog-context="deleteMultipleTagsInfo"
|
||||
dialog-action="deleteMultipleTags(info.tags, callback)"
|
||||
dialog-title="Delete Tags"
|
||||
dialog-action-title="Delete Tags">
|
||||
Are you sure you want to delete the following tags:
|
||||
<ul>
|
||||
<li ng-repeat="tag_info in deleteMultipleTagsInfo.tags">
|
||||
<span class="label label-default tag">{{ tag_info.name }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div style="margin-top: 20px">
|
||||
<strong>Note: </strong>This operation can take several minutes.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Delete Tag Confirm -->
|
||||
<div class="cor-confirm-dialog"
|
||||
dialog-context="deleteTagInfo"
|
||||
dialog-action="deleteTag(info.tags, callback)"
|
||||
dialog-title="Delete Tag"
|
||||
dialog-action-title="Delete Tag">
|
||||
Are you sure you want to delete tag
|
||||
<span class="label label-default tag">{{ deleteTagInfo.tag }}</span>?
|
||||
|
||||
<div class="tag-specific-images-view" tag="deleteTagInfo.tag" repository="repository"
|
||||
images="images" style="margin-top: 20px">
|
||||
The following images and any other images not referenced by a tag will be deleted:
|
||||
</div>
|
||||
</div>
|
Reference in a new issue