diff --git a/awx/ui/client/features/jobs/jobsList.controller.js b/awx/ui/client/features/jobs/jobsList.controller.js index a398a03818..0f6e92f0d8 100644 --- a/awx/ui/client/features/jobs/jobsList.controller.js +++ b/awx/ui/client/features/jobs/jobsList.controller.js @@ -132,11 +132,11 @@ function ListJobsController ( let reloadListStateParams = null; if (vm.jobs.length === 1 && $state.params.job_search && - _.has($state, 'params.job_search.page') && - $state.params.job_search.page !== '1') { + _.has($state, 'params.job_search.page') && + $state.params.job_search.page !== '1') { reloadListStateParams = _.cloneDeep($state.params); reloadListStateParams.job_search.page = - (parseInt(reloadListStateParams.job_search.page, 10) - 1).toString(); + (parseInt(reloadListStateParams.job_search.page, 10) - 1).toString(); } $state.go('.', reloadListStateParams, { reload: true }); @@ -173,8 +173,8 @@ function ListJobsController ( let reloadListStateParams = null; if (vm.jobs.length === 1 && $state.params.job_search && - !_.isEmpty($state.params.job_search.page) && - $state.params.job_search.page !== '1') { + !_.isEmpty($state.params.job_search.page) && + $state.params.job_search.page !== '1') { const page = `${(parseInt(reloadListStateParams .job_search.page, 10) - 1)}`; reloadListStateParams = _.cloneDeep($state.params); @@ -213,6 +213,16 @@ function ListJobsController ( vm.job_dataset = data; }); } + + vm.isCollapsed = true; + + vm.onCollapse = () => { + vm.isCollapsed = true; + }; + + vm.onExpand = () => { + vm.isCollapsed = false; + }; } ListJobsController.$inject = [ diff --git a/awx/ui/client/features/jobs/jobsList.view.html b/awx/ui/client/features/jobs/jobsList.view.html index 783a734024..ea3058dbad 100644 --- a/awx/ui/client/features/jobs/jobsList.view.html +++ b/awx/ui/client/features/jobs/jobsList.view.html @@ -13,86 +13,92 @@ search-bar-full-width="vm.isPortalMode"> + + - +
- - -
+
+ + +
+ + + + + + +
+
+
+ value="{{ job.started | longDate }}"> + value="{{ job.finished | longDate }}"> + + + + + + + + + +
- - - - - - - - - - - - - - - -
-
- - - - - - +
+ + + + + +
diff --git a/awx/ui/client/lib/components/index.js b/awx/ui/client/lib/components/index.js index 8dadf920b8..c9e5ba93ee 100644 --- a/awx/ui/client/lib/components/index.js +++ b/awx/ui/client/lib/components/index.js @@ -34,6 +34,7 @@ import tab from '~components/tabs/tab.directive'; import tabGroup from '~components/tabs/group.directive'; import tag from '~components/tag/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 truncate from '~components/truncate/truncate.directive'; import atCodeMirror from '~components/code-mirror'; @@ -69,6 +70,7 @@ angular .component('atLaunchTemplate', launchTemplate) .directive('atLayout', layout) .directive('atList', list) + .directive('atListToolbar', toolbar) .component('atRelaunch', relaunch) .directive('atRow', row) .directive('atRowItem', rowItem) diff --git a/awx/ui/client/lib/components/list/_index.less b/awx/ui/client/lib/components/list/_index.less index 072780a456..2127f0a823 100644 --- a/awx/ui/client/lib/components/list/_index.less +++ b/awx/ui/client/lib/components/list/_index.less @@ -58,16 +58,68 @@ right: 0; } +.at-List-toolbar--attached { + display: flex; + justify-content: flex-end; + border: @at-border-default-width solid @at-color-list-border; + border-bottom: none; + border-radius: @at-border-radius; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.at-List-toolbar-item { + padding: 2px 10px; + border-left: 1px solid @at-color-list-border; + border-right: 1px solid @at-color-list-border; + + &:hover { + cursor: pointer; + background: @at-gray-f2; + } + + &:first-of-type { + border-right: none; + } + + &:last-of-type { + border: none; + } + + &:first-child { + border-left: 1px solid @at-color-list-border; + } + + &.active { + background: @at-blue; + color: @at-white; + } +} + .at-List-container { border: @at-border-default-width solid @at-color-list-border; border-radius: @at-border-radius; } +// Remove top left and right rounded corners of a list if there is a toolbar above it +.at-List-toolbar--attached + .at-List > .at-List-container { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.at-List-toolbar--attached + .at-List { + margin-top: 0; +} + .at-Row { display: grid; grid-template-columns: 10px 1fr; + overflow: hidden; } +.at-Row--collapsed { + max-height: 50px !important; +} .at-Row--active { border-left: @at-border-style-list-active-indicator; border-top-left-radius: @at-border-radius; @@ -122,6 +174,7 @@ .at-Row-actions { display: flex; + flex-wrap: wrap; } .at-Row-items { @@ -129,12 +182,12 @@ } .at-RowItem { - display: grid; - grid-template-columns: 120px 1fr; align-items: center; line-height: @at-height-list-row-item; word-wrap: break-word; word-break: break-all; + display: block; + margin-right: 10px; } .at-RowItem-status { @@ -151,6 +204,16 @@ line-height: @at-line-height-list-row-item-header; } +.at-Row-container { + display: flex; + justify-content: space-between; +} + +.at-Row-container--wrapped { + display: flex; + flex-wrap: wrap; +} + .at-RowItem--isHeaderLink { color: @at-blue; cursor: pointer; @@ -161,8 +224,7 @@ .at-RowItem--labels { line-height: @at-line-height-list-row-item-labels; - display: flex; - flex-wrap: wrap; + display: inline-block; * { font-size: 10px; @@ -174,8 +236,7 @@ } .at-RowItem-tagContainer { - display: flex; - margin-left: @at-margin-left-list-row-item-tag-container; + display: inline-block; flex-wrap: wrap; line-height: initial; } @@ -186,7 +247,7 @@ border-radius: @at-border-radius; color: @at-color-list-row-item-tag; font-size: @at-font-size-list-row-item-tag; - margin: @at-space; + margin: @at-space @at-space-4x; padding: @at-padding-list-row-item-tag; line-height: @at-line-height-list-row-item-tag; word-break: keep-all; @@ -207,13 +268,17 @@ } .at-RowItem-label { + display: inline-block; text-transform: uppercase; color: @at-color-list-row-item-label; font-size: @at-font-size; + margin-right: 10px; } .at-RowItem-value { + display: inline-block; font-size: @at-font-size-3x; + margin-right: 20px; } .at-RowItem-badge { diff --git a/awx/ui/client/lib/components/list/list-toolbar.directive.js b/awx/ui/client/lib/components/list/list-toolbar.directive.js new file mode 100644 index 0000000000..57183e32af --- /dev/null +++ b/awx/ui/client/lib/components/list/list-toolbar.directive.js @@ -0,0 +1,18 @@ +const templateUrl = require('~components/list/list-toolbar.partial.html'); + +function atListToolbar () { + return { + restrict: 'E', + replace: true, + transclude: true, + templateUrl, + scope: { + onExpand: '=', + onCollapse: '=', + sortOnly: '=', + isCollapsed: '=', + } + }; +} + +export default atListToolbar; diff --git a/awx/ui/client/lib/components/list/list-toolbar.partial.html b/awx/ui/client/lib/components/list/list-toolbar.partial.html new file mode 100644 index 0000000000..4511be1760 --- /dev/null +++ b/awx/ui/client/lib/components/list/list-toolbar.partial.html @@ -0,0 +1,5 @@ +
+
Compact
+
Expanded
+
Sort
+
\ No newline at end of file diff --git a/awx/ui/client/lib/components/tag/_index.less b/awx/ui/client/lib/components/tag/_index.less index 5834c5208d..4d13212442 100644 --- a/awx/ui/client/lib/components/tag/_index.less +++ b/awx/ui/client/lib/components/tag/_index.less @@ -10,7 +10,11 @@ min-height: @at-space-4x; overflow: hidden; max-width: 200px; - margin: @at-space; + margin: @at-space 0; + + &:last-of-type { + margin-right: 20px; + } } .TagComponent-name { diff --git a/awx/ui/client/src/templates/labels/labelsList.block.less b/awx/ui/client/src/templates/labels/labelsList.block.less index 9796abc56f..63910ffc00 100644 --- a/awx/ui/client/src/templates/labels/labelsList.block.less +++ b/awx/ui/client/src/templates/labels/labelsList.block.less @@ -7,19 +7,16 @@ } .LabelList-tagContainer { - height: fit-content; + display: inline-block; } -.LabelList-tagContainer, -.LabelList-seeMoreLess { - display: flex; +.LabelList-tagContainer { max-width: 200px; } .LabelList-tag, .JobSubmission-previewTag { border-radius: 5px; padding: 2px 10px; - margin: 3px 0px; font-size: 12px; color: @default-interface-txt; background-color: @default-list-header-bg; @@ -36,6 +33,7 @@ cursor: pointer; border-radius: 5px; font-size: 11px; + display: inherit; } .LabelList-seeMoreLess:hover {