|
<span page-title ng-model="contentHost">{{ 'Packages for: ' | translate }} {{ contentHost.name }}</span>
|
|
<section ng-hide="denied('edit_content_hosts', contentHost)">
|
|
<div alch-alert success-messages="successMessages" error-messages="errorMessages"></div>
|
|
<h4 translate>Package Actions</h4>
|
|
<section>
|
|
<form ng-submit="performPackageAction()" role="form" class="row">
|
|
|
|
<div class="col-sm-2">
|
|
<select class="form-control" ng-model="packageAction.actionType" required>
|
|
<option value="packageInstall" translate>Package Install</option>
|
|
<option value="packageUpdate" translate>Package Update</option>
|
|
<option value="packageRemove" translate>Package Remove</option>
|
|
<option value="groupInstall" translate>Group Install</option>
|
|
<option value="groupRemove" translate>Group Remove</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="input-group col-sm-5">
|
|
<input class="form-control"
|
|
type="text"
|
|
placeholder="{{ 'Package/Group Name' | translate}}"
|
|
ng-model="packageAction.term"/>
|
|
|
|
<span class="input-group-btn">
|
|
<button class="btn btn-default"
|
|
ng-hide="denied('edit_content_hosts', contentHost)"
|
|
ng-disabled="working || packageAction.term === undefined || packageAction.term.length === 0"
|
|
translate>
|
|
Perform</button>
|
|
</span>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
</section>
|
|
|
|
<section>
|
|
<h4 translate>Installed Packages</h4>
|
|
|
|
<div class="nutupane-bar">
|
|
<form>
|
|
<input type="text"
|
|
class="form-control filter-input"
|
|
placeholder="{{ 'Filter' | translate }}"
|
|
ng-model="currentPackagesTable.filter"/>
|
|
</form>
|
|
<span class="nutupane-info" translate>Showing {{ currentPackagesTable.resource.total }} Packages</span>
|
|
|
|
<div class="fr" ng-hide="denied('edit_content_hosts', contentHost)">
|
|
<button class="btn btn-primary"
|
|
translate
|
|
ng-click="updateAll()"
|
|
ng-disabled="working">
|
|
Update All
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div alch-table="currentPackagesTable">
|
|
<div alch-container-scroll control-width="table" alch-infinite-scroll="currentPackagesTable.loadMorePackages()" data="currentPackagesTable.rows">
|
|
<table ng-class="{'table-mask': currentPackagesTable.working}" class="table table-striped">
|
|
<thead>
|
|
<tr alch-table-head>
|
|
<th alch-table-column="name" translate>Installed Package</th>
|
|
<th alch-table-column="remove" translate ng-hide="currentPackagesTable.contentHost.readonly">Remove</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tr alch-table-row ng-repeat="package in currentPackagesTable.rows | filter: currentPackagesTable.filter | limitTo: currentPackagesTable.limit" >
|
|
<td alch-table-cell>{{ package.nvrea }}</td>
|
|
<td alch-table-cell ng-hide="currentPackagesTable.contentHost.readonly">
|
|
|
|
<i class="active icon-remove-sign" ng-hide="package.removeTask" tooltip="{{ 'Remove' | translate }}"
|
|
ng-click="currentPackagesTable.removePackage(package)"></i>
|
|
|
|
<i class="icon-spinner icon-spin" ng-show="package.removeTask.pending"></i>
|
|
<span ng-show="package.removeTask && !package.removeTask.pending">
|
|
|
|
<i ng-show="currentPackagesTable.taskFailed(package.removeTask)" class="icon-exclamation-sign" tooltip="{{ 'Failed' | translate }}"></i>
|
|
<i ng-hide="currentPackagesTable.taskFailed(package.removeTask)" class="icon-check-sign" tooltip="{{ 'Success' | translate }}"></i>
|
|
|
|
<a ng-click="currentPackagesTable.openEventInfo(package.removeTask)" >
|
|
<span translate ng-show="package.removeTask.affected_units == 1">
|
|
{{ package.removeTask.affected_units }} package removed
|
|
</span>
|
|
|
|
<span translate ng-show="!package.removeTask.failed && package.removeTask.affected_units != 1">
|
|
{{ package.removeTask.affected_units }} packages removed
|
|
</span>
|
|
|
|
<span translate ng-show="package.removeTask.failed">
|
|
Package removal failed
|
|
</span>
|
|
</a>
|
|
</span>
|
|
</td>
|
|
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</section>
|