Current File : //usr/local/jetapps/var/www/jetbackup5/docroot/app/views/backupJobs.htm |
<div ng-controller="backupJobs" class="controller-box">
<h1> {{ lang.t("Backup Jobs") }}</h1>
<p>{{ lang.t("For help setting up a new backup job, please visit the")}} <a href="{{const.DOCS_ADMIN_URL}}/backupJobs.html" style="color: #fd6b2b;" target="_blank">{{ lang.t("Create New Backup Job documentation.") }}</a></p><br>
<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-primary" ng-click="createBackupJob()">
<em aria-hidden="true" class="fas fa-plus"></em>
{{ lang.t("Create New Backup Job") }}
</button>
<a href="{{primaryURL}}/schedules" class="btn btn-primary" ng-click="changeView('/schedules')">
<em aria-hidden="true" class="fas fa-calendar"></em>
{{ lang.t("Manage Schedules") }}
</a>
<a href="{{primaryURL}}/accountFilters" class="btn btn-primary" ng-click="changeView('/accountFilters')">
<em aria-hidden="true" class="fas fa-filter"></em>
{{ lang.t("Manage Account Filters") }}
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-2">
<filter-box
box-options="filterOptions"
ng-model="filter"
ng-change="fetch()">
</filter-box>
</div>
<div class="col-xs-12 col-sm-3 col-md-4 col-lg-4">
<search ng-model="metaData.filterValue" ng-change="fetch()"></search>
</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">
<button sort-by sort-meta="meta" sort-field="name" onSort="fetch()" title="{{ lang.t('Sort by %s.', lang.t('Name')) }}">{{ lang.t("Name") }}</button>
</th>
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
<span>{{ lang.t("Dest. Name") }}</span>
</th>
<th class="col-sm-2 col-md-2 col-lg-2 column-title">
<button sort-by sort-meta="meta" sort-field="type" onSort="fetch()" title="{{ lang.t('Sort by %s.', lang.t('Type')) }}">{{ lang.t("Type") }}</button>
</th>
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
<span>{{ lang.t("Schedules") }}</span>
</th>
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
<span>{{ lang.t("Account Filters") }}</span>
</th>
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
<span>{{ lang.t("Hooks") }}</span>
</th>
<th class="col-sm-2 col-md-2 col-lg-2 column-title">
<span>{{ lang.t("Next Run") }}</span>
</th>
<th class="col-sm-2 col-md-2 col-lg-2 column-title">
<button sort-by sort-meta="meta" sort-field="last_run" onSort="fetch()" title="{{ lang.t('Sort by %s.', lang.t('Last Run')) }}">{{ lang.t("Last Run") }}</button>
</th>
<!--th class="col-sm-1 col-md-1 col-lg-1 column-title">
<div uib-tooltip-template="'jobRatingTitleTooltipTemplate.htm'" tooltip-placement="auto" tooltip-class="job-tooltip">
<span style="display: ruby;">{{ lang.t("Performance") }} <em aria-hidden="true" class="fas fa-info-circle"></em></span>
</div>
</th-->
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
<button sort-by sort-meta="meta" sort-field="owner" onSort="fetch()" title="{{ lang.t('Sort by %s.', lang.t('Owner')) }}">{{ lang.t("Owner") }}</button>
</th>
<!--th class="col-sm-1 col-md-1 col-lg-1 column-title">
<button sort-by sort-meta="meta" sort-field="backupquota" onSort="fetch()" tooltip="bottom|Enabling backup quota on a backup job will allow account backup usage to be sent by daily cron or API call to your CRM system (WHMCS for example). In order for the backup quota to work, you must enable both the account and the backup job. For more information, please visit the Backup Job Setting documentation." title="{{ lang.t('Sort by %s.', lang.t('Backup Quota')) }}">{{ lang.t("Backup Quota") }}</button>
</th-->
<th class="col-sm-1 col-md-1 col-lg-1 column-title">
<button sort-by sort-meta="meta" sort-field="disabled" onSort="fetch()" title="{{ lang.t('Sort by %s.', lang.t('Enabled')) }}">{{ lang.t("Enabled") }}</button>
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="job in jobs track by $index" id="job_row_{{$index}}" ng-click="openActions(job)" class="pointer">
<td data-title="{{ lang.t('Name') }}">
{{ job.name }}
</td>
<td data-title="{{ lang.t('Dest. Name') }}">
<span ng-bind-html="job.destinations"></span>
</td>
<td data-title="{{ lang.t('Type') }}">
{{ job.contains_name }} - {{ const.BACKUP_STRUCTURE_NAMES[job.structure] }} {{ job.encrypted ? lang.t("Encrypted") : ''}}
</td>
<td data-title="{{ lang.t('Schedules') }}">
<span ng-repeat="schedule in job.schedules"><span class="label label-xxs label-primary">{{ schedule.name }} - {{ lang.t("Retain %s Backups", schedule.retain) }}</span> </span>
<span ng-hide="job.schedules.length" class="label label-xxs label-disabled" style="margin-right: 5px;">{{ lang.t("Manually") }}</span>
</td>
<td data-title="{{ lang.t('Account Filters') }}">
<span ng-repeat="filter in job.filters_sorted"><span class="label label-xxs label-primary">{{ filters[filter] }}</span> </span>
<span ng-hide="job.filters_sorted.length">-</span>
</td>
<td data-title="{{ lang.t('Hooks') }}" ng-click="$event.stopPropagation();">
<span ng-repeat="hook in job.hooks"><a class="label label-xxs label-primary" href="" ng-click="changeView('/hookManage/' + hook._id)">{{ hook.name }}</a> </span>
<span ng-hide="job.hooks.length">-</span>
</td>
<td data-title="{{ lang.t('Next Run') }}">
<div ng-if="job.running">
<span class="fas fa-spin fa-circle-notch"></span>
{{ lang.t("Backup Job Running") }}...
</div>
<div ng-if="!job.running && !job.next_run">{{ lang.t("Never") }}</div>
<div ng-if="!job.running && job.next_run && !job.disabled">{{ lang.d(job.next_run) }}</div>
<div ng-if="!job.running && job.next_run && job.disabled">{{ lang.t("Never") }}<br /><span style="font-size: 8px;">{{ lang.t("Backup Job Disabled") }}</span></div>
</td>
<td data-title="{{ lang.t('Last Run') }}">
<span title="{{ lang.d(job.last_run) ? lang.d(job.last_run) : lang.t('Never') }}">{{ job.last_run ? lang.d(job.last_run) : lang.t("Never") }}</span>
</td>
<!--td data-title="{{ lang.t('Performance') }}" ng-click="$event.stopPropagation();" class="rating" style="text-align: center;">
<div uib-tooltip-template="'jobRatingTooltipTemplate.htm'" tooltip-placement="auto" tooltip-class="job-tooltip" ng-click="recalculateRating(job)" style="cursor: pointer;" ng-hide="recalculating[job._id]">
<span uib-rating
ng-model="job.rating.rating"
max="5"
read-only="true"
></span>
</div>
<span class="fas fa-spin fa-circle-notch" ng-show="recalculating[job._id]"></span>
</td-->
<td data-title="{{ lang.t('Owner') }}">
<span title="{{ job.owner_name }}">{{ job.owner_name }}</span>
</td>
<!--td data-title="{{ lang.t('Backup Quota') }}" ng-click="$event.stopPropagation();" style="text-align: center;">
<button ng-click="toggleBackupQuota(job)" class="toggle-switch"><em class="fas toggle-icon" ng-class="{ 'fa-toggle-on text-green': job.backup_quota, 'fa-toggle-on text-gray': !job.backup_quota }"></em></button>
</td-->
<td data-title="{{ lang.t('Enabled') }}" ng-click="$event.stopPropagation();" style="text-align: center;">
<button ng-hide="job.type == const.BACKUP_TYPE_JB_CONFIG" ng-click="toggleState(job)" class="toggle-switch"><em class="fas toggle-icon" ng-class="{ 'fa-toggle-on text-green': !job.disabled, 'fa-toggle-on text-gray': job.disabled }"></em></button>
</td>
</tr>
<tr ng-repeat-end id="dt_module_row_{{$index}}">
<td colspan="11" class="actions-cell">
<div class="action-module" ng-if="isOpenedActions(job)" ng-include="includePath('backupJobActions')"></div>
</td>
</tr>
<tr ng-hide="!loadingJobs">
<td colspan="11">
<loading-box><span>{{ lang.t("Loading Backup Jobs") }}</span></loading-box>
</td>
</tr>
<tr ng-hide="jobs.length > 0 || loadingJobs">
<td colspan="11">
<span>{{ lang.t("No Backup Jobs Found") }}</span>
</td>
</tr>
</tbody>
</table>
</div>
<pagination fetch="fetch" meta="meta"></pagination>
</div>
<script type="text/ng-template" id="jobRatingTooltipTemplate.htm">
<div style="text-align: left; padding: 10px 0;">
<h4>{{lang.t("Performance")}}</h4>
<ul ng-show="job.rating.issues.length">
<li ng-repeat="issue in job.rating.issues">{{ issue }}</li>
</ul>
<strong>{{ lang.t("Click on the stars to recalculate performance rating.") }}</strong>
</div>
</script>
<script type="text/ng-template" id="jobRatingTitleTooltipTemplate.htm">
<div style="text-align: left; padding: 10px 0;">
<p>{{lang.t("Job Performance is measured by a combination of network latency, storage IO and job settings efficiency.")}}</p>
</div>
</script>