Add expand/collapse toolbar to Jobs List view.

This commit is contained in:
Kia Lam
2019-01-23 11:49:01 -05:00
parent 05c24df9e3
commit a9663c2900
3 changed files with 91 additions and 74 deletions

View File

@@ -213,6 +213,16 @@ function ListJobsController (
vm.job_dataset = data; vm.job_dataset = data;
}); });
} }
vm.isCollapsed = true;
vm.onCollapse = () => {
vm.isCollapsed = true;
};
vm.onExpand = () => {
vm.isCollapsed = false;
};
} }
ListJobsController.$inject = [ ListJobsController.$inject = [

View File

@@ -13,11 +13,18 @@
search-bar-full-width="vm.isPortalMode"> search-bar-full-width="vm.isPortalMode">
</smart-search> </smart-search>
</div> </div>
<at-list-toolbar
sort-only="false"
on-collapse="vm.onCollapse"
on-expand="vm.onExpand"
is-collapsed="vm.isCollapsed">
</at-list-toolbar>
<at-list results="vm.jobs" empty-list-reason="{{ vm.emptyListReason }}"> <at-list results="vm.jobs" empty-list-reason="{{ vm.emptyListReason }}">
<!-- TODO: implement resources are missing red indicator as present in mockup --> <!-- TODO: implement resources are missing red indicator as present in mockup -->
<at-row ng-repeat="job in vm.jobs" id="job-{{ job.id }}"> <at-row ng-repeat="job in vm.jobs" id="job-{{ job.id }}" ng-class="vm.isCollapsed ? 'at-Row--collapsed' : ''">
<div class="at-Row-items"> <div class="at-Row-items">
<!-- TODO: include workflow tab as well --> <!-- TODO: include workflow tab as well -->
<div class="at-Row-container">
<at-row-item <at-row-item
status="{{ job.status }}" status="{{ job.status }}"
status-tip="{{ vm.strings.get('list.STATUS_TOOLTIP', job.status) }}" status-tip="{{ vm.strings.get('list.STATUS_TOOLTIP', job.status) }}"
@@ -26,28 +33,45 @@
header-tag="{{ vm.jobTypes[job.type] }}" header-tag="{{ vm.jobTypes[job.type] }}"
secondary-tag="{{ vm.getSliceJobDetails(job) }}"> secondary-tag="{{ vm.getSliceJobDetails(job) }}">
</at-row-item> </at-row-item>
<div class="at-Row--inline"> <div class="at-Row-actions">
<at-relaunch job="job" ng-show="job.summary_fields.user_capabilities.start">
</at-relaunch>
<at-row-action icon="fa-minus-circle" ng-click="vm.cancelJob(job)" tooltip="{{ vm.strings.get('listActions.CANCEL', vm.strings.get('list.JOB')) }}"
ng-show="!vm.isPortalMode && (job.summary_fields.user_capabilities.start &&
(job.status === 'pending' ||
job.status === 'waiting' ||
job.status === 'running')) || ($root.user_is_superuser && job.type === 'system_job' &&
(job.status === 'pending' ||
job.status === 'waiting' ||
job.status === 'running'))">
</at-row-action>
<at-row-action icon="fa-trash" ng-click="vm.deleteJob(job)" tooltip="{{ vm.strings.get('listActions.DELETE', vm.strings.get('list.JOB')) }}"
ng-show="!vm.isPortalMode && job.summary_fields.user_capabilities.delete &&
!(job.status === 'pending' ||
job.status === 'waiting' ||
job.status === 'running')">
</at-row-action>
</div>
</div>
<div class="at-Row-container--wrapped">
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_STARTED') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_STARTED') }}"
value="{{ job.started | longDate }}" value="{{ job.started | longDate }}">
inline="true">
</at-row-item> </at-row-item>
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_FINISHED') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_FINISHED') }}"
value="{{ job.finished | longDate }}" value="{{ job.finished | longDate }}">
inline="true">
</at-row-item>
</div>
<at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_WORKFLOW_JOB') }}"
value="{{ job.summary_fields.source_workflow_job.name }}"
value-link="/#/workflows/{{ job.summary_fields.source_workflow_job.id }}">
</at-row-item> </at-row-item>
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_LAUNCHED_BY') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_LAUNCHED_BY') }}"
value="{{ job.summary_fields.created_by.username }}" value="{{ job.summary_fields.created_by.username }}"
value-link="/#/users/{{ job.summary_fields.created_by.id }}"> value-link="/#/users/{{ job.summary_fields.created_by.id }}">
</at-row-item> </at-row-item>
<at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_WORKFLOW_JOB') }}"
value="{{ job.summary_fields.source_workflow_job.name }}"
value-link="/#/workflows/{{ job.summary_fields.source_workflow_job.id }}">
</at-row-item>
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_JOB_TEMPLATE') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_JOB_TEMPLATE') }}"
value="{{ job.summary_fields.job_template.name }}" value="{{ job.summary_fields.job_template.name }}"
@@ -63,6 +87,8 @@
value="{{ job.summary_fields.project.name }}" value="{{ job.summary_fields.project.name }}"
value-link="/#/projects/{{ job.summary_fields.project.id }}"> value-link="/#/projects/{{ job.summary_fields.project.id }}">
</at-row-item> </at-row-item>
</div>
<div class="at-Row-container--wrapped">
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_CREDENTIALS') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_CREDENTIALS') }}"
tag-values="job.summary_fields.credentials" tag-values="job.summary_fields.credentials"
@@ -72,27 +98,6 @@
<labels-list class="LabelList" show-delete="false" is-row-item="true" state="job"> <labels-list class="LabelList" show-delete="false" is-row-item="true" state="job">
</labels-list> </labels-list>
</div> </div>
<div class="at-Row-actions">
<at-relaunch job="job"
ng-show="job.summary_fields.user_capabilities.start">
</at-relaunch>
<at-row-action icon="fa-minus-circle" ng-click="vm.cancelJob(job)"
tooltip="{{ vm.strings.get('listActions.CANCEL', vm.strings.get('list.JOB')) }}"
ng-show="!vm.isPortalMode && (job.summary_fields.user_capabilities.start &&
(job.status === 'pending' ||
job.status === 'waiting' ||
job.status === 'running')) || ($root.user_is_superuser && job.type === 'system_job' &&
(job.status === 'pending' ||
job.status === 'waiting' ||
job.status === 'running'))">
</at-row-action>
<at-row-action icon="fa-trash" ng-click="vm.deleteJob(job)"
tooltip="{{ vm.strings.get('listActions.DELETE', vm.strings.get('list.JOB')) }}"
ng-show="!vm.isPortalMode && job.summary_fields.user_capabilities.delete &&
!(job.status === 'pending' ||
job.status === 'waiting' ||
job.status === 'running')">
</at-row-action>
</div> </div>
</at-row> </at-row>
</at-list> </at-list>

View File

@@ -34,6 +34,7 @@ import tab from '~components/tabs/tab.directive';
import tabGroup from '~components/tabs/group.directive'; import tabGroup from '~components/tabs/group.directive';
import tag from '~components/tag/tag.directive'; import tag from '~components/tag/tag.directive';
import toggleTag from '~components/toggle-tag/toggle-tag.directive'; import toggleTag from '~components/toggle-tag/toggle-tag.directive';
import toolbar from '~components/list/list-toolbar.directive';
import topNavItem from '~components/layout/top-nav-item.directive'; import topNavItem from '~components/layout/top-nav-item.directive';
import truncate from '~components/truncate/truncate.directive'; import truncate from '~components/truncate/truncate.directive';
import atCodeMirror from '~components/code-mirror'; import atCodeMirror from '~components/code-mirror';
@@ -69,6 +70,7 @@ angular
.component('atLaunchTemplate', launchTemplate) .component('atLaunchTemplate', launchTemplate)
.directive('atLayout', layout) .directive('atLayout', layout)
.directive('atList', list) .directive('atList', list)
.directive('atListToolbar', toolbar)
.component('atRelaunch', relaunch) .component('atRelaunch', relaunch)
.directive('atRow', row) .directive('atRow', row)
.directive('atRowItem', rowItem) .directive('atRowItem', rowItem)