mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-28 11:37:42 +01:00
156 lines
9.0 KiB
HTML
156 lines
9.0 KiB
HTML
<!--
|
|
Copyright (c) 2016 VMware, Inc. All Rights Reserved.
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
<div class="tab-pane">
|
|
<div class="col-xs-12 col-md-12 each-tab-pane">
|
|
<div class="form-inline">
|
|
<div class="input-group">
|
|
<input type="text" id="txtSearchPolicyInput" class="form-control" placeholder="" ng-model="vm.replicationPolicyName" size="30">
|
|
<span class="input-group-btn">
|
|
<button class="btn btn-primary" type="button" ng-click="vm.searchReplicationPolicy()"><span class="glyphicon glyphicon-search"></span></button>
|
|
</span>
|
|
</div>
|
|
<button ng-if="!vm.isOpen" class="btn btn-success" type="button" ng-click="vm.addReplication()" data-toggle="modal" data-target="#createPolicyModal"><span class="glyphicon glyphicon-plus"></span>// 'add_new_policy' | tr //</button>
|
|
<create-policy reload="vm.retrievePolicy()" action="vm.action" modal-title="//vm.modalTitle//" policy-id="//vm.policyId//"></create-policy>
|
|
</div>
|
|
<div class="pane-split" id="upon-pane" style="max-height: 760px;">
|
|
<div class="sub-pane-split">
|
|
<div class="table-head-container">
|
|
<table class="table table-pane table-header">
|
|
<thead>
|
|
<th width="10%">// 'name' | tr //</th>
|
|
<th width="18%">// 'description' | tr //</th>
|
|
<th width="18%">// 'destination' | tr //</th>
|
|
<th width="18%">// 'last_start_time' | tr //</th>
|
|
<th width="14%">// 'activation' | tr// </th>
|
|
<th width="10%">// 'actions' | tr //</th>
|
|
<th width="5%"></th>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="table-body-container" style="height: 250px;">
|
|
<table class="table table-pane">
|
|
<tbody>
|
|
<tr ng-if="vm.replicationPolicies.length == 0">
|
|
<td colspan="7" height="100%" class="empty-hint" ><h4 class="text-muted">// 'no_replication_policies_add_new' | tr //</h4></td>
|
|
</tr>
|
|
<tr policy_id="//r.id//" ng-if="vm.replicationPolicies.length > 0" ng-repeat="r in vm.replicationPolicies" value="//vm.last = $last//">
|
|
<td width="10%">//r.name//</td>
|
|
<td width="18%">//r.description//</td>
|
|
<td width="18%">//r.target_name//</td>
|
|
<td width="18%">//r.start_time | dateL : 'YYYY-MM-DD HH:mm:ss'//</td>
|
|
<td width="14%" ng-switch on="//r.enabled//">
|
|
<span ng-switch-when="1">// 'enabled' | tr //</span>
|
|
<span ng-switch-when="0">// 'disabled' | tr //</span>
|
|
</td>
|
|
<td width="10%">
|
|
<div class="display-inline-block" ng-switch on="//r.enabled//">
|
|
<a href="javascript:void(0);" ng-click="vm.confirmToTogglePolicy(r.id, 0, r.name)" title="// 'disable' | tr //"><span ng-switch-when="1" class="glyphicon glyphicon-stop color-danger"></span></a>
|
|
<a href="javascript:void(0);" ng-click="vm.confirmToTogglePolicy(r.id, 1, r.name)" title="// 'enable' | tr //"><span ng-switch-when="0" class="glyphicon glyphicon-play color-success"></span></a>
|
|
</div>
|
|
|
|
<a href="javascript:void(0);" data-toggle="modal" data-target="#createPolicyModal" ng-click="vm.editReplication(r.id)" title="// 'edit_policy' | tr //"><span class="glyphicon glyphicon-pencil"></span></a>
|
|
|
|
<a href="javascript:void(0);" ng-click="vm.confirmToDelete(r.id, r.name)" title="// 'delete_policy' | tr //"><span class="glyphicon glyphicon-trash"></span></a>
|
|
</td>
|
|
<td width="5%">
|
|
<a ng-if= "r.error_job_count > 0" title = "// 'found_error_in_replication_job' | tr: [r.error_job_count] //"><span class="glyphicon glyphicon-exclamation-sign color-danger" ></span></a>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-4 col-md-12 well well-sm well-custom well-split">
|
|
<div class="col-md-offset-10">//vm.replicationPolicies ? vm.replicationPolicies.length : 0// // 'items' | tr //</div>
|
|
</div>
|
|
<p class="split-handle"><span class="glyphicon glyphicon-align-justify"></span></p>
|
|
<h4 class="h4-custom-down">// 'replication_jobs' | tr //</h4>
|
|
<hr class="hr-line"/>
|
|
<div class="form-inline">
|
|
<div class="input-group">
|
|
<input type="text" id="txtSearchJobInput" class="form-control" placeholder="" ng-model="vm.replicationJobName" size="20">
|
|
<span class="input-group-btn">
|
|
<button class="btn btn-primary" type="button" ng-click="vm.searchReplicationJob()" loading-progress hide-target = "true" toggle-in-progress="vm.searchJobTIP"><span class="glyphicon glyphicon-search"></span></button>
|
|
</span>
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="selStatus" class="control-label label-custom">// 'status' | tr //:</label>
|
|
<div class="input-group">
|
|
<select class="form-control" id="selStatus" ng-options="st.value for st in vm.jobStatus() track by st.key" ng-model="vm.currentStatus" ng-change="vm.searchReplicationJob()"></select>
|
|
</div>
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="fromDatePicker" class="control-label label-custom">// 'from' | tr //:</label>
|
|
<div class="input-group datetimepicker">
|
|
<input id="fromDatePicker" class="form-control" type="text" readonly="readonly" ng-model="vm.fromDate" ng-change="vm.pickUp({key:'fromDate', value: vm.fromDate})" size="10">
|
|
<span class="input-group-addon">
|
|
<a href="javascript:void(0);"><span class="glyphicon glyphicon-calendar"></span></a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="input-group">
|
|
<label for="toDatePicker" class="control-label label-custom">// 'to' | tr //:</label>
|
|
<div class="input-group datetimepicker">
|
|
<input id="toDatePicker" class="form-control" type="text" readonly="readonly" ng-model="vm.toDate" ng-change="vm.pickUp({key:'toDate', value: vm.toDate})" size="10">
|
|
<span class="input-group-addon">
|
|
<a href="javascript:void(0);"><span class="glyphicon glyphicon-calendar"></span></a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="input-group">
|
|
<button type="button" class="btn btn-success" ng-click="vm.refreshReplicationJob()" loading-progress hide-target = "true" toggle-in-progress="vm.refreshJobTIP" title="//'refresh' | tr//"><span class="glyphicon glyphicon-refresh"></span></button>
|
|
</div>
|
|
</div>
|
|
<div class="pane-split" id="down-pane" style="min-height: 142px;">
|
|
<div class="sub-pane-split">
|
|
<div class="table-head-container">
|
|
<table class="table table-pane table-header">
|
|
<thead>
|
|
<th width="15%">// 'name' | tr //</th>
|
|
<th width="15%">// 'operation' | tr //</th>
|
|
<th width="24%">// 'creation_time' | tr //</th>
|
|
<th width="24%">// 'end_time' | tr //</th>
|
|
<th width="10%">// 'status' | tr //</th>
|
|
<th width="12%">// 'logs' | tr //</th>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="table-body-container" style="height: 510px; min-height: 80px;">
|
|
<table class="table table-pane">
|
|
<tbody>
|
|
<tr ng-if="vm.replicationJobs.length == 0">
|
|
<td colspan="4" height="100%" class="empty-hint" ><h4 class="text-muted">// 'no_replication_jobs' | tr //</h4></td>
|
|
</tr>
|
|
<tr ng-if="vm.replicationJobs.length > 0" ng-repeat="r in vm.replicationJobs">
|
|
<td width="15%">//r.repository//</td>
|
|
<td width="15%">//r.operation//</td>
|
|
<td width="24%">//r.creation_time | dateL : 'YYYY-MM-DD HH:mm:ss'//</td>
|
|
<td width="24%">//r.update_time | dateL : 'YYYY-MM-DD HH:mm:ss'//</td>
|
|
<td width="10%">//r.status//</td>
|
|
<td width="12%">
|
|
<a style="margin-left: 20px;" ng-show="r.status != 'canceled' && r.status != 'pending'" href="javascript:void(0);" ng-click="vm.downloadLog(r.id)" title="// 'download_log' | tr //"><span class="glyphicon glyphicon-file"></span></a>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<paginator ng-if="vm.totalCount > 0" total-count="//vm.totalCount//" page-size="//vm.pageSize//" display-count="5" page="vm.page"></paginator>
|
|
</div>
|
|
</div>
|
|
</div>
|