Add basic user interface for application repos
Adds support for creating app repos, viewing app repos and seeing the list of app repos in the Quay UI.
This commit is contained in:
parent
3dd6e6919d
commit
f9e6110f73
47 changed files with 1009 additions and 106 deletions
|
@ -30,6 +30,7 @@
|
|||
|
||||
<!-- Signed in -->
|
||||
<ul class="nav navbar-nav navbar-links" ng-if="!user.anonymous">
|
||||
<li quay-require="['APP_REGISTRY']"><a ng-href="/application/" quay-section="application">Applications</a></li>
|
||||
<li><a ng-href="/repository/" quay-section="repository">Repositories</a></li>
|
||||
<li><a ng-href="/tutorial/" quay-section="tutorial">Tutorial</a></li>
|
||||
<li><a href="https://docs.quay.io/" ng-safenewtab>Docs</a></li>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<i class="fa fa-lock fa-lg" style="{{ repo.is_public ? 'visibility: hidden' : 'visibility: inherit' }}" data-title="Private Repository"></i>
|
||||
<i class="fa fa-hdd-o"></i>
|
||||
<i class="fa fa-hdd-o" ng-if="repo.kind == 'image'"></i>
|
||||
<i class="fa ci-appcube" ng-if="repo.kind == 'application'"></i>
|
||||
|
|
|
@ -28,7 +28,11 @@
|
|||
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-10 repo-panel-title-row">
|
||||
<span class="repo-icon repo-circle no-background" repo="repository"></span>
|
||||
<a ng-href="/repository/{{repository.namespace}}/{{ repository.name }}" class="repo-panel-repo-link"
|
||||
data-repo="{{repository.namespace}}/{{ repository.name }}">
|
||||
data-repo="{{repository.namespace}}/{{ repository.name }}" ng-if="repoKind != 'application'">
|
||||
<span ng-show="!hideNamespaces">{{ repository.namespace }}/</span>{{ repository.name }}
|
||||
</a>
|
||||
<a ng-href="/application/{{repository.namespace}}/{{ repository.name }}" class="repo-panel-repo-link"
|
||||
data-repo="{{repository.namespace}}/{{ repository.name }}" ng-if="repoKind == 'application'">
|
||||
<span ng-show="!hideNamespaces">{{ repository.namespace }}/</span>{{ repository.name }}
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<td class="hidden-xs"
|
||||
ng-class="tablePredicateClass('is_starred', options.predicate, options.reverse)"
|
||||
style="width: 70px"
|
||||
ng-if="loggedIn">
|
||||
ng-if="loggedIn && repoKind != 'application'">
|
||||
<a ng-click="orderBy('is_starred')">Star</a>
|
||||
</td>
|
||||
</thead>
|
||||
|
@ -47,7 +47,11 @@
|
|||
<tr ng-repeat="repository in orderedRepositories.entries | slice:(reposPerPage * options.page):(reposPerPage * (options.page + 1))">
|
||||
<td class="repo-name-icon">
|
||||
<span class="avatar" size="24" data="::getAvatarData(repository.namespace)"></span>
|
||||
<a href="/repository/{{ ::repository.namespace }}/{{ ::repository.name }}">
|
||||
<a href="/repository/{{ ::repository.namespace }}/{{ ::repository.name }}" ng-if="repoKind != 'application'">
|
||||
<span class="namespace">{{ ::repository.namespace }}</span>
|
||||
<span class="name">{{ ::repository.name }}</span>
|
||||
</a>
|
||||
<a href="/application/{{ ::repository.namespace }}/{{ ::repository.name }}" ng-if="repoKind == 'application'">
|
||||
<span class="namespace">{{ ::repository.namespace }}</span>
|
||||
<span class="name">{{ ::repository.name }}</span>
|
||||
</a>
|
||||
|
@ -62,7 +66,7 @@
|
|||
<span class="strength-indicator" value="::repository.popularity" maximum="::maxPopularity"
|
||||
log-base="10"></span>
|
||||
</td>
|
||||
<td ng-show="loggedIn">
|
||||
<td ng-show="loggedIn && repoKind != 'application'">
|
||||
<span class="repo-star" repository="::repository"
|
||||
star-toggled="starToggled({'repository': repository})"></span>
|
||||
</td>
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
<!-- Table View -->
|
||||
<div ng-if="showAsList">
|
||||
<div class="repo-list-table" repositories-resources="resources" namespaces="namespaces"
|
||||
star-toggled="starToggled({'repository': repository})">
|
||||
star-toggled="starToggled({'repository': repository})"
|
||||
repo-kind="{{ repoKind }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -22,7 +23,8 @@
|
|||
<div class="repo-list-grid" repositories-resource="starredRepositories"
|
||||
starred="true"
|
||||
star-toggled="starToggled({'repository': repository})"
|
||||
ng-if="starredRepositories">
|
||||
ng-if="starredRepositories"
|
||||
repo-kind="{{ repoKind }}">
|
||||
</div>
|
||||
|
||||
<!-- User and Org Repository Listings -->
|
||||
|
@ -31,7 +33,8 @@
|
|||
starred="false" namespace="namespace"
|
||||
star-toggled="starToggled({'repository': repository})"
|
||||
hide-title="namespaces.length == 1"
|
||||
hide-namespaces="true">
|
||||
hide-namespaces="true"
|
||||
repo-kind="{{ repoKind }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="repo-panel-settings-element">
|
||||
<h3 class="tab-header">Repository Settings</h3>
|
||||
<h3 class="tab-header"><span class="repository-title" repository="repository"></span> Settings</h3>
|
||||
|
||||
<!-- User/Team Permissions -->
|
||||
<div class="co-panel" id="repoPermissions">
|
||||
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
|
||||
<!-- Access Tokens (DEPRECATED) -->
|
||||
<div class="co-panel" ng-show="hasTokens">
|
||||
<div class="co-panel" ng-show="hasTokens && repository.kind == 'image'">
|
||||
<div class="co-panel-heading"><i class="fa fa-key"></i> Access Token Permissions</div>
|
||||
<div class="panel-body" style="padding-top: 5px;">
|
||||
<div class="repository-tokens-table" repository="repository" has-tokens="hasTokens" is-enabled="isEnabled"></div>
|
||||
|
@ -19,18 +19,22 @@
|
|||
</div>
|
||||
|
||||
<!-- Events and Notifications -->
|
||||
<div class="repository-events-table" repository="repository"
|
||||
is-enabled="isEnabled"></div>
|
||||
<div ng-if="repository.kind == 'image'">
|
||||
<div class="repository-events-table" repository="repository"
|
||||
is-enabled="isEnabled"></div>
|
||||
</div>
|
||||
|
||||
<!-- Visibility settings -->
|
||||
<div class="co-panel">
|
||||
<div class="co-panel-heading"><i class="fa fa-unlock-alt"></i> Repository Visibility</div>
|
||||
<div class="co-panel-heading"><i class="fa fa-unlock-alt"></i>
|
||||
<span class="repository-title" repository="repository"></span> Visibility
|
||||
</div>
|
||||
<div class="cor-loader" ng-show="!repository"></div>
|
||||
<div ng-show="repository">
|
||||
<!-- Public/Private -->
|
||||
<div class="panel-body panel-section lock-section" ng-if="!repository.is_public">
|
||||
<i class="fa fa-lock lock-icon"></i>
|
||||
<div>This repository is currently <b>private</b>. Only users on the permissions list may view and interact with it.</div>
|
||||
<div>This <span class="repository-title" repository="repository"></span> is currently <b>private</b>. Only users on the permissions list may view and interact with it.</div>
|
||||
|
||||
<button class="btn btn-default" ng-click="askChangeAccess('public')">
|
||||
<i class="fa fa-unlock"></i>Make Public
|
||||
|
@ -40,7 +44,7 @@
|
|||
<div class="panel-body panel-section lock-section" ng-if="repository.is_public">
|
||||
<i class="fa fa-unlock lock-icon"></i>
|
||||
|
||||
<div>This repository is currently <b>public</b> and is visible to all users, and may be pulled by all users.</div>
|
||||
<div>This <span class="repository-title" repository="repository"></span> is currently <b>public</b> and is visible to all users, and may be pulled by all users.</div>
|
||||
|
||||
<button class="btn btn-default" ng-click="askChangeAccess('private')" ng-show="!planRequired">
|
||||
<i class="fa fa-lock"></i>Make Private
|
||||
|
@ -56,17 +60,19 @@
|
|||
|
||||
<!-- Delete repository -->
|
||||
<div class="co-panel">
|
||||
<div class="co-panel-heading"><i class="fa fa-trash"></i> Delete Repository</div>
|
||||
<div class="co-panel-heading">
|
||||
<i class="fa fa-trash"></i> Delete <span class="repository-title" repository="repository"></span>
|
||||
</div>
|
||||
<div class="cor-loader" ng-show="!repository"></div>
|
||||
<div ng-show="repository">
|
||||
<div class="panel-body panel-section">
|
||||
<div class="co-alert co-alert-danger">
|
||||
<button class="btn btn-danger delete-btn" ng-click="askDelete()">
|
||||
<i class="fa fa-trash"></i>
|
||||
Delete Repository
|
||||
Delete <span class="repository-title" repository="repository"></span>
|
||||
</button>
|
||||
|
||||
Deleting a repository <b>cannot be undone</b>. Here be dragons!
|
||||
Deleting a <span class="repository-title" repository="repository"></span> <b>cannot be undone</b>. Here be dragons!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -74,7 +80,7 @@
|
|||
|
||||
|
||||
<!-- Build Status Badge -->
|
||||
<div class="co-panel hidden-xs">
|
||||
<div class="co-panel hidden-xs" ng-if="repository.kind == 'image'">
|
||||
<div class="co-panel-heading"><i class="fa fa-tasks"></i> Build Status Badge</div>
|
||||
<div class="cor-loader" ng-show="!repository"></div>
|
||||
<div ng-show="repository">
|
||||
|
@ -123,12 +129,12 @@
|
|||
<div class="cor-confirm-dialog"
|
||||
dialog-context="deleteRepoInfo"
|
||||
dialog-action="deleteRepo(info, callback)"
|
||||
dialog-title="Delete Repository"
|
||||
dialog-action-title="Delete Repository">
|
||||
dialog-title="Delete"
|
||||
dialog-action-title="Delete">
|
||||
<div class="co-alert co-alert-danger" style="margin-bottom: 10px;">
|
||||
This action cannot be undone!
|
||||
</div>
|
||||
|
||||
Continue with deletion of this repository?
|
||||
Continue with deletion of this <span class="repository-title" repository="repository"></span>?
|
||||
</div>
|
||||
</div>
|
||||
|
|
4
static/directives/repository-title.html
Normal file
4
static/directives/repository-title.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
<span class="repository-title-element">
|
||||
<span ng-if="repository.kind == 'image'">Repository</span>
|
||||
<span ng-if="repository.kind == 'application'">Application</span>
|
||||
</span>
|
Reference in a new issue