Current File : //usr/local/jetapps/var/www/jetbackup5/docroot/app/views/queue.htm |
<div ng-controller="queue" class="controller-box">
<h1>{{ lang.t("Queue") }}</h1>
<p>{{ lang.t("This section will list all your queued jobs including restore, download, backup jobs.")}}</p>
<p ng-hide="perm.isEnduser">{{ lang.t("You can change concurrent queued tasks in the") }} <a href="{{primaryURL}}/settings/performance" style="color: #fd6b2b;" ng-click="changeView('/settings/performance')">{{ lang.t("Performance Settings") }}</a></p>
<div class="row search-page-container">
<div class="col-xs-12 col-sm-5 col-md-4 col-lg-6">
<button class="btn btn-default" ng-click="fetch()" title="{{ lang.t('Refresh Records') }}">
<em aria-hidden="true" class="fas fa-redo"></em>
</button>
<button class="btn btn-danger" ng-click="cancelAll()" title="{{ lang.t('Cancel All') }}">
<em aria-hidden="true" class="fas fa-times"></em>
{{ lang.t('Cancel All') }}
</button>
<button class="btn btn-primary" ng-click="clear()" title="{{ lang.t('Clear Completed') }}">
<em aria-hidden="true" class="fas fa-times"></em>
{{ lang.t('Clear Completed') }}
</button>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-2 col-sm-offset-3 col-md-offset-4 col-lg-offset-4">
<filter-box
box-options="filterOptions"
ng-model="filter"
ng-change="fetch()">
</filter-box>
</div>
</div>
<div class="table-responsive">
<table class="table table-striped content-table">
<thead>
<tr>
<th class="col-sm-2 col-md-2 col-lg-2 column-title">
{{ lang.t("Type") }}
</th>
<th class="col-sm-3 col-md-3 col-lg-3 column-title">
{{ lang.t("Information") }}
</th>
<th class="col-sm-2 col-md-2 col-lg-2 column-title">
{{ lang.t("Created") }}
</th>
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
{{ lang.t("Owner") }}
</th>
<th class="col-sm-2 col-md-2 col-lg-2 column-title">
<span>{{ lang.t("Execution Time") }}</span>
</th>
<th class="col-sm-4 col-md-4 col-lg-4 column-title">
{{ lang.t("Status") }}
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="group in groups" ng-click="openActions(group)" class="pointer">
<td data-title="{{ lang.t('Type') }}">
{{ const.QUEUE_ITEM_TYPE_NAMES[group.type] }}
</td>
<td data-title="{{ lang.t('Information') }}">
<div ng-repeat="(key, value) in group.data">{{lang.t(key.replace("_", ' ')|capitalize)}}: {{value}}</div>
</td>
<td data-title="{{ lang.t('Created') }}">
{{ lang.d(group.created, 'shorttime') }}
</td>
<td data-title="{{ lang.t('Owner') }}">
{{ group.owner_name ? group.owner_name : '-' }}
</td>
<td data-title="{{ lang.t('Execution Time') }}">
<div>{{ lang.t('Total Time') }}: {{ group.execution_time | executionTime }}</div>
<div>{{ lang.t('Actual Time') }}: {{ group.actual_time | executionTime }}</div>
</td>
<td data-title="{{ lang.t('Status') }}" ng-click="$event.stopPropagation();">
<div ng-show="group.status >= const.QUEUE_STATUS_PROCESSING && group.status < const.QUEUE_STATUS_COMPLETED" style="margin-bottom: 5px;">
<uib-progressbar ng-show="(group.type == const.QUEUE_ITEM_TYPE_BACKUP || group.type == const.QUEUE_ITEM_TYPE_CLONE || group.type == const.QUEUE_ITEM_TYPE_INTEGRITY_CHECK) && group.items && !group.progress.total" class="progress-striped active main-progress" max="100" value="group.items_progress_percentage"><span style="color:black; white-space:nowrap; text-align: center;">{{ lang.t("%s out of %s (%s%%)", group.items_completed, group.items, group.items_progress_percentage) }}</span></uib-progressbar>
<uib-progressbar ng-show="!(group.type == const.QUEUE_ITEM_TYPE_BACKUP || group.type == const.QUEUE_ITEM_TYPE_CLONE || group.type == const.QUEUE_ITEM_TYPE_INTEGRITY_CHECK) && group.progress.total > 1" class="progress-striped active main-progress" max="100" value="group.progress.percentage"><span style="color:black; white-space:nowrap; text-align: center;">{{ lang.t("%s out of %s (%s%%)", group.progress.completed, group.progress.total, group.progress.percentage) }}</span></uib-progressbar>
</div>
<div ng-class="{
'text-green': group.status == const.QUEUE_STATUS_COMPLETED,
'text-yellow': group.status == const.QUEUE_STATUS_PARTIALLY,
'text-red': (group.status == const.QUEUE_STATUS_FAILED || group.status == const.QUEUE_STATUS_ABORTED || group.status == const.QUEUE_STATUS_NEVER_FINISHED)
}">
<span ng-class="{
'fas fa-spin fa-circle-notch': group.status >= const.QUEUE_STATUS_PROCESSING && group.status < const.QUEUE_STATUS_COMPLETED,
'fas fa-check': group.status == const.QUEUE_STATUS_COMPLETED,
'fas fa-times': group.status == const.QUEUE_STATUS_FAILED || group.status == const.QUEUE_STATUS_NEVER_FINISHED || group.status == const.QUEUE_STATUS_ABORTED,
'fas fa-exclamation-triangle': group.status == const.QUEUE_STATUS_PARTIALLY,
'far fa-clock': group.status == const.QUEUE_STATUS_PENDING
}"></span>
<strong ng-show="group.status <= const.QUEUE_STATUS_PROCESSING || group.status >= const.QUEUE_STATUS_COMPLETED">{{ const.QUEUE_STATUS_NAMES[group.status] }}</strong>
<strong ng-show="group.status > const.QUEUE_STATUS_PROCESSING && group.status < const.QUEUE_STATUS_COMPLETED">{{ const.QUEUE_STATUS_SUB_NAMES[group.type][group.status] }}</strong>
<span ng-show="group.progress.subtotal > 1 && group.status > const.QUEUE_STATUS_PROCESSING && group.status < const.QUEUE_STATUS_COMPLETED" style="font-size: 11px;">({{group.progress.subcompleted+1}} out of {{group.progress.subtotal}})</span>
</div>
<div ng-show="group.status > const.QUEUE_STATUS_PROCESSING && group.status < const.QUEUE_STATUS_COMPLETED">
<div ng-show="group.progress.name">{{group.progress.name}}</div>
<uib-progressbar ng-show="group.progress.total_files > 1" style="margin-top: 1px;" class="progress-striped active" max="100" value="group.progress.percentage_files"><span style="color:black; white-space:nowrap; text-align: center;">{{ (group.progress.name_files ? group.progress.name_files + " - " : '') + lang.t("%s out of %s (%s%%)", group.progress.completed_files | numberFormat: 0, group.progress.total_files | numberFormat: 0, group.progress.percentage_files) }}</span></uib-progressbar>
</div>
<div style="font-size: 11px; margin-bottom: 7px;">{{ lang.t("Status changed at %s", lang.d(group.status_time, 'shorttime')) }}</div>
<a ng-show="group.can_rerun && group.status > const.QUEUE_STATUS_COMPLETED" href="" class="btn btn-xs btn-warning" ng-click="rerunFailedItem(group)"><span class="fa fa-rotate-right"></span> {{lang.t("Retry Failed Items")}}</a>
</td>
</tr>
<tr ng-repeat-end>
<td colspan="10" class="actions-cell">
<div class="action-module" ng-if="isOpenedActions(group)" ng-include="includePath('queueActions')"></div>
</td>
</tr>
<tr ng-hide="!loadingGroups">
<td colspan="10">
<loading-box><span>{{ lang.t("Loading Queue Items") }}</span></loading-box>
</td>
</tr>
<tr ng-hide="groups.length > 0 || loadingGroups">
<td colspan="10"><span>{{ lang.t("No Queue Items Found") }}</span></td>
</tr>
</tbody>
</table>
</div>
<pagination fetch="fetch" meta="meta"></pagination>
</div>