diff --git a/awx/ui/client/legacy-styles/ansible-ui.less b/awx/ui/client/legacy-styles/ansible-ui.less index dfc996e990..d417b02b8b 100644 --- a/awx/ui/client/legacy-styles/ansible-ui.less +++ b/awx/ui/client/legacy-styles/ansible-ui.less @@ -1167,13 +1167,6 @@ input[type="checkbox"].checkbox-no-label { color: @warning; } - .badge { - padding: 2px 3px 3px 4px; - font-size: 10px; - font-weight: normal; - line-height: 1; - } - /* job_events page */ #jobevents_table { @@ -1423,10 +1416,6 @@ input[type="checkbox"].checkbox-no-label { /* Inventory Edit */ - #groups-container.col-lg-6 { - padding-right: 7px; - } - #hosts-container.col-lg-6 { padding-left: 7px; padding-right: 17px; diff --git a/awx/ui/client/legacy-styles/lists.less b/awx/ui/client/legacy-styles/lists.less index bb2f20fffc..7a57df7c30 100644 --- a/awx/ui/client/legacy-styles/lists.less +++ b/awx/ui/client/legacy-styles/lists.less @@ -7,7 +7,7 @@ * */ - @import "src/shared/branding/colors.default.less"; + @import "awx/ui/client/src/shared/branding/colors.default.less"; table, tbody { @@ -43,6 +43,10 @@ table, tbody { text-align: right; } +.List-tableHeaderSort { + color: @list-header-icon; +} + .List-tableRow { height: 40px; font-size: 14px; @@ -97,3 +101,85 @@ table, tbody { .List-actionButton + .List-actionButton { margin-left: 15px; } + +.List-pagination { + margin-top: 20px; + font-size: 12px; + color: @list-pagin-text; + text-transform: uppercase; + height: 22px; +} + +.List-paginationPager { + display: flex; +} + +.List-paginationPager--pageof { + line-height: 22px; + margin-left: 10px; +} + +.List-paginationPager--item { + border-color: @list-pagin-bord; +} + +.List-paginationPager--active { + border-color: @list-pagin-bord-act!important; + background-color: @list-pagin-bg-act!important; +} + +.List-header { + display: flex; +} + +.List-title { + flex: 1 0 auto; + display: flex; +} + +.List-titleBadge { + font-size: 11px; + font-weight: normal; + padding: 1px 10px; + height: 14px; + margin: 3px 0; + background-color: @list-title-badge; +} + +.List-titleText { + color: @list-title-txt; + font-size: 14px; + font-weight: bold; + margin-right: 10px; + text-transform: uppercase; +} + +.List-actions { + justify-content: flex-end; + display: flex; +} + +.List-buttonSubmit { + transition: background-color 0.2s; + background-color: @submit-button-bg; + color: @submit-button-text; +} + +.List-buttonSubmit:hover, +.List-buttonSubmit:focus { + color: @submit-button-text; + background-color: @submit-button-bg-hov; +} + +.List-buttonDefault { + transition: background-color 0.2s; + background-color: @btn-bg; + color: @btn-txt; + border-color: @btn-bord; +} + +.List-buttonDefault:hover, +.List-buttonDefault:focus { + background-color: @btn-bg-hov; + color: @btn-txt; +} diff --git a/awx/ui/client/src/forms/Credentials.js b/awx/ui/client/src/forms/Credentials.js index 2743d610bc..b4a6df3118 100644 --- a/awx/ui/client/src/forms/Credentials.js +++ b/awx/ui/client/src/forms/Credentials.js @@ -21,12 +21,7 @@ export default forceListeners: true, actions: { - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' - } + }, fields: { diff --git a/awx/ui/client/src/forms/JobTemplates.js b/awx/ui/client/src/forms/JobTemplates.js index be471aa946..131ea7e9c7 100644 --- a/awx/ui/client/src/forms/JobTemplates.js +++ b/awx/ui/client/src/forms/JobTemplates.js @@ -328,12 +328,6 @@ export default mode: 'all', awToolTip: "Refresh the page", ngClick: "refreshSchedules()" - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' } }, fields: { diff --git a/awx/ui/client/src/forms/Projects.js b/awx/ui/client/src/forms/Projects.js index 610aa6cdb1..6c4c7d13e3 100644 --- a/awx/ui/client/src/forms/Projects.js +++ b/awx/ui/client/src/forms/Projects.js @@ -288,12 +288,6 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition']) mode: 'all', awToolTip: "Refresh the page", ngClick: "refreshSchedules()" - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' } }, fields: { diff --git a/awx/ui/client/src/helpers/Hosts.js b/awx/ui/client/src/helpers/Hosts.js index 1a157d6101..d360f11b84 100644 --- a/awx/ui/client/src/helpers/Hosts.js +++ b/awx/ui/client/src/helpers/Hosts.js @@ -240,7 +240,7 @@ angular.module('HostsHelper', [ 'RestServices', 'Utilities', listGenerator.name, generator = GenerateList; // Inject the list html - generator.inject(InventoryHosts, { scope: host_scope, mode: 'edit', id: 'hosts-container', searchSize: 'col-lg-6 col-md-6 col-sm-6' }); + generator.inject(InventoryHosts, { scope: host_scope, mode: 'edit', id: 'host-list-container', searchSize: 'col-lg-6 col-md-6 col-sm-6' }); // Load data HostsReload({ scope: host_scope, group_id: group_id, inventory_id: inventory_id, parent_scope: group_scope, pageSize: pageSize }); diff --git a/awx/ui/client/src/inventory-scripts/inventory-scripts.list.js b/awx/ui/client/src/inventory-scripts/inventory-scripts.list.js index 76630be07e..2be8de8f86 100644 --- a/awx/ui/client/src/inventory-scripts/inventory-scripts.list.js +++ b/awx/ui/client/src/inventory-scripts/inventory-scripts.list.js @@ -9,6 +9,7 @@ export default function(){ return { name: 'inventory_scripts' , + listTitle: 'Inventory Scripts', iterator: 'inventory_script', index: false, hover: false, @@ -39,14 +40,9 @@ export default function(){ add: { mode: 'all', // One of: edit, select, all ngClick: 'addCustomInv()', - awToolTip: 'Create a new credential' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - icon: "icon-comments-alt", - mode: 'edit', - awFeature: 'activity_streams' + awToolTip: 'Create a new custom inventory', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/CloudCredentials.js b/awx/ui/client/src/lists/CloudCredentials.js index a676db2719..297225b7d3 100644 --- a/awx/ui/client/src/lists/CloudCredentials.js +++ b/awx/ui/client/src/lists/CloudCredentials.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + @@ -49,8 +49,9 @@ export default add: { mode: 'all', // One of: edit, select, all ngClick: 'addCredential()', - "class": 'btn-sm', - awToolTip: 'Create a new credential' + awToolTip: 'Create a new credential', + actionClass: 'btn btn-sm List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/Credentials.js b/awx/ui/client/src/lists/Credentials.js index 47a3b7fbf8..e2ce931bb4 100644 --- a/awx/ui/client/src/lists/Credentials.js +++ b/awx/ui/client/src/lists/Credentials.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + @@ -15,6 +15,7 @@ export default iterator: 'credential', selectTitle: 'Add Credentials', editTitle: 'Credentials', + listTitle: 'Credentials', selectInstructions: "

Select existing credentials by clicking each credential or checking the related checkbox. When " + "finished, click the blue Select button, located bottom right.

Create a brand new credential by clicking ", index: false, @@ -46,13 +47,9 @@ export default add: { mode: 'all', // One of: edit, select, all ngClick: 'addCredential()', - awToolTip: 'Create a new credential' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' + awToolTip: 'Create a new credential', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/HomeGroups.js b/awx/ui/client/src/lists/HomeGroups.js index 51730f7ef6..bcb242d132 100644 --- a/awx/ui/client/src/lists/HomeGroups.js +++ b/awx/ui/client/src/lists/HomeGroups.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('HomeGroupListDefinition', []) @@ -161,12 +161,7 @@ export default }, actions: { - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'all', - awFeature: 'activity_streams' - } + } }); diff --git a/awx/ui/client/src/lists/HomeHosts.js b/awx/ui/client/src/lists/HomeHosts.js index 6ec1b04b14..c3cfcf0ccd 100644 --- a/awx/ui/client/src/lists/HomeHosts.js +++ b/awx/ui/client/src/lists/HomeHosts.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('HomeHostListDefinition', []) @@ -94,12 +94,7 @@ export default }, actions: { - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'all', - awFeature: 'activity_streams' - } + } }); diff --git a/awx/ui/client/src/lists/Inventories.js b/awx/ui/client/src/lists/Inventories.js index c2dec0758f..a9c6678fbc 100644 --- a/awx/ui/client/src/lists/Inventories.js +++ b/awx/ui/client/src/lists/Inventories.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('InventoriesListDefinition', []) @@ -13,6 +13,7 @@ export default iterator: 'inventory', selectTitle: 'Add Inventories', editTitle: 'Inventories', + listTitle: 'Inventories', selectInstructions: "Click on a row to select it, and click Finished when done. Click the " + "button to create a new inventory.", index: false, @@ -83,14 +84,9 @@ export default add: { mode: 'all', // One of: edit, select, all ngClick: 'addInventory()', - awToolTip: 'Create a new inventory' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - icon: "icon-comments-alt", - mode: 'edit', - awFeature: 'activity_streams' + awToolTip: 'Create a new inventory', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/InventoryGroups.js b/awx/ui/client/src/lists/InventoryGroups.js index c411f377b6..1e20536753 100644 --- a/awx/ui/client/src/lists/InventoryGroups.js +++ b/awx/ui/client/src/lists/InventoryGroups.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('InventoryGroupsDefinition', []) .value('InventoryGroups', { @@ -11,6 +11,7 @@ export default name: 'groups', iterator: 'group', editTitle: '{{ inventory.name }}', + listTitle: 'Groups', showTitle: false, well: true, index: false, @@ -82,44 +83,33 @@ export default }, actions: { - create: { + refresh: { mode: 'all', - ngClick: "createGroup()", - awToolTip: "Create a new group" - }, - properties: { - mode: 'all', - awToolTip: "Edit inventory properties", - ngClick: 'editInventoryProperties()' + awToolTip: "Refresh the page", + ngClick: "refreshGroups()", + ngShow: "socketStatus == 'error'", + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' }, launch: { mode: 'all', ngShow: 'inventory.can_run_ad_hoc_commands', ngClick: 'populateAdhocForm()', - awToolTip: "Run a command on the selected inventory" + awToolTip: "Run a command on the selected inventory", + actionClass: 'btn List-buttonDefault', + buttonContent: 'RUN COMMANDS' // TODO: set up a tip watcher and change text based on when // things are selected/not selected. This is started and // commented out in the inventory controller within the watchers. // awToolTip: "{{ adhocButtonTipContents }}", // dataTipWatch: "adhocButtonTipContents" }, - refresh: { + create: { mode: 'all', - awToolTip: "Refresh the page", - ngClick: "refreshGroups()", - ngShow: "socketStatus == 'error'" - }, - stream: { - ngClick: "showGroupActivity()", - awToolTip: "View Activity Stream", - mode: 'all', - awFeature: 'activity_streams' - }, - help: { - mode: 'all', - awToolTip: "Get help building your inventory", - ngClick: "showGroupHelp()", - id: "inventory-summary-help" + ngClick: "createGroup()", + awToolTip: "Create a new group", + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/InventoryHosts.js b/awx/ui/client/src/lists/InventoryHosts.js index 7fde554088..60a4d776aa 100644 --- a/awx/ui/client/src/lists/InventoryHosts.js +++ b/awx/ui/client/src/lists/InventoryHosts.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('InventoryHostsDefinition', []) .value('InventoryHosts', { @@ -11,6 +11,7 @@ export default name: 'hosts', iterator: 'host', editTitle: '{{ selected_group }}', + listTitle: 'Hosts', showTitle: false, well: true, index: false, @@ -92,23 +93,21 @@ export default ngDisabled: 'systemTrackingDisabled', ngShow: 'hostsSelected' }, - create: { - mode: 'all', - ngClick: "createHost()", - awToolTip: "Create a new host" - }, refresh: { mode: 'all', awToolTip: "Refresh the page", ngClick: "refreshGroups()", - ngShow: "socketStatus == 'error'" + ngShow: "socketStatus == 'error'", + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' }, - stream: { - ngClick: "showHostActivity()", - awToolTip: "View Activity Stream", + create: { mode: 'all', - awFeature: 'activity_streams' - }, + ngClick: "createHost()", + awToolTip: "Create a new host", + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' + } } }); diff --git a/awx/ui/client/src/lists/JobEvents.js b/awx/ui/client/src/lists/JobEvents.js index 2fbfd9b0cd..b1954b1c4b 100644 --- a/awx/ui/client/src/lists/JobEvents.js +++ b/awx/ui/client/src/lists/JobEvents.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('JobEventsListDefinition', []) @@ -97,7 +97,9 @@ export default refresh: { mode: 'all', awToolTip: 'Refresh the page', - ngClick: 'refresh()' + ngClick: 'refresh()', + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' } }, diff --git a/awx/ui/client/src/lists/JobHosts.js b/awx/ui/client/src/lists/JobHosts.js index 4b9f53f66d..95ec4c7997 100644 --- a/awx/ui/client/src/lists/JobHosts.js +++ b/awx/ui/client/src/lists/JobHosts.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('JobHostDefinition', []) @@ -112,17 +112,18 @@ export default dataPlacement: 'left', dataContainer: "body", mode: 'all', - 'class': 'btn-xs btn-help', + actionClass: 'btn-xs btn-help', awToolTip: 'Click for help', dataTitle: 'Job Host Summary', id: 'jobhost-help-button' }, refresh: { mode: 'all', - 'class': 'btn-xs', awToolTip: "Refresh the page", ngClick: "refresh()", - ngShow: "host_id == null" //don't show when viewing from inventory->hosts + ngShow: "host_id == null", //don't show when viewing from inventory->hosts + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' } } diff --git a/awx/ui/client/src/lists/JobTemplates.js b/awx/ui/client/src/lists/JobTemplates.js index 084cacfe0c..5b49911541 100644 --- a/awx/ui/client/src/lists/JobTemplates.js +++ b/awx/ui/client/src/lists/JobTemplates.js @@ -13,6 +13,7 @@ export default iterator: 'job_template', selectTitle: 'Add Job Template', editTitle: 'Job Templates', + listTitle: 'Job Templates', selectInstructions: "Click on a row to select it, and click Finished when done. Use the " + "button to create a new job template.", index: false, @@ -44,15 +45,9 @@ export default ngClick: 'addJobTemplate()', basePaths: ['job_templates'], awToolTip: 'Create a new template', - ngHide: 'portalMode===true' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - icon: "icon-comments-alt", - awFeature: 'activity_streams', - mode: 'edit', - ngHide: 'portalMode===true' + ngHide: 'portalMode===true', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/Organizations.js b/awx/ui/client/src/lists/Organizations.js index 2a2e6a6fd6..45525675a7 100644 --- a/awx/ui/client/src/lists/Organizations.js +++ b/awx/ui/client/src/lists/Organizations.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('OrganizationListDefinition', []) @@ -37,13 +37,9 @@ export default mode: 'all', // One of: edit, select, all ngClick: 'addOrganization()', awToolTip: 'Create a new organization', - awFeature: 'multiple_organizations' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' + awFeature: 'multiple_organizations', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/Projects.js b/awx/ui/client/src/lists/Projects.js index daad0ba239..15e3cb3adf 100644 --- a/awx/ui/client/src/lists/Projects.js +++ b/awx/ui/client/src/lists/Projects.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('ProjectsListDefinition', []) @@ -13,6 +13,7 @@ export default iterator: 'project', selectTitle: 'Add Project', editTitle: 'Projects', + listTitle: 'Projects', selectInstructions: '

Select existing projects by clicking each project or checking the related checkbox. When finished, click the blue ' + 'Select button, located bottom right.

Create a new project by clicking the button.

', index: false, @@ -60,19 +61,17 @@ export default add: { mode: 'all', // One of: edit, select, all ngClick: 'addProject()', - awToolTip: 'Create a new project' + awToolTip: 'Create a new project', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' }, refresh: { mode: 'all', awToolTip: "Refresh the page", ngClick: "refresh()", - ngShow: "socketStatus == 'error'" - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' + ngShow: "socketStatus == 'error'", + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' } }, diff --git a/awx/ui/client/src/lists/ScanJobs.js b/awx/ui/client/src/lists/ScanJobs.js index 4f19054404..599a1f54ed 100644 --- a/awx/ui/client/src/lists/ScanJobs.js +++ b/awx/ui/client/src/lists/ScanJobs.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('ScanJobsListDefinition', []) @@ -35,15 +35,9 @@ export default ngClick: 'addScanJobTemplate()', basePaths: ['job_templates'], awToolTip: 'Create a new template', - ngHide: 'portalMode===true' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - icon: "icon-comments-alt", - mode: 'edit', ngHide: 'portalMode===true', - awFeature: 'activity_streams' + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/Schedules.js b/awx/ui/client/src/lists/Schedules.js index f3eb000bce..9384652137 100644 --- a/awx/ui/client/src/lists/Schedules.js +++ b/awx/ui/client/src/lists/Schedules.js @@ -45,21 +45,19 @@ export default }, actions: { - add: { - mode: 'all', - ngClick: 'addSchedule()', - awToolTip: 'Add a new schedule' - }, refresh: { mode: 'all', awToolTip: "Refresh the page", - ngClick: "refreshSchedules()" + ngClick: "refreshSchedules()", + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' + add: { + mode: 'all', + ngClick: 'addSchedule()', + awToolTip: 'Add a new schedule', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/Streams.js b/awx/ui/client/src/lists/Streams.js index 5a793fd073..2b40c91376 100644 --- a/awx/ui/client/src/lists/Streams.js +++ b/awx/ui/client/src/lists/Streams.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('StreamListDefinition', []) @@ -255,14 +255,17 @@ export default close: { mode: 'all', awToolTip: "Close Activity Stream view", - ngClick: "closeStream()" + ngClick: "closeStream()", + actionClass: 'btn List-buttonDefault', + buttonContent: 'CLOSE' }, refresh: { mode: 'all', id: 'activity-stream-refresh-btn', - 'class': 'btn-xs', awToolTip: "Refresh the page", - ngClick: "refreshStream()" + ngClick: "refreshStream()", + actionClass: 'btn List-buttonDefault', + buttonContent: 'REFRESH' } }, diff --git a/awx/ui/client/src/lists/Teams.js b/awx/ui/client/src/lists/Teams.js index 9dedb28a55..284af44993 100644 --- a/awx/ui/client/src/lists/Teams.js +++ b/awx/ui/client/src/lists/Teams.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('TeamsListDefinition', []) @@ -13,6 +13,7 @@ export default iterator: 'team', selectTitle: 'Add Team', editTitle: 'Teams', + listTitle: 'Teams', selectInstructions: "Click on a row to select it, and click Finished when done. Click the " + "button to create a new team.", index: false, @@ -44,13 +45,9 @@ export default add: { mode: 'all', // One of: edit, select, all ngClick: 'addTeam()', - awToolTip: 'Create a new team' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' + awToolTip: 'Create a new team', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/lists/Users.js b/awx/ui/client/src/lists/Users.js index a454112654..922d0bf3d5 100644 --- a/awx/ui/client/src/lists/Users.js +++ b/awx/ui/client/src/lists/Users.js @@ -3,7 +3,7 @@ * * All Rights Reserved *************************************************/ - + export default angular.module('UserListDefinition', []) @@ -13,6 +13,7 @@ export default iterator: 'user', selectTitle: 'Add Users', editTitle: 'Users', + listTitle: 'Users', selectInstructions: '

Select existing users by clicking each user or checking the related checkbox. When finished, click the blue ' + 'Select button, located bottom right.

When available, a brand new user can be created by clicking the ' + ' button.

', @@ -41,14 +42,9 @@ export default mode: 'all', // One of: edit, select, all ngClick: 'addUser()', basePaths: ['organizations', 'users'], // base path must be in list, or action not available - "class": 'btn-xs', - awToolTip: 'Create a new user' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' + awToolTip: 'Create a new user', + actionClass: 'btn List-buttonSubmit', + buttonContent: '+ ADD' } }, diff --git a/awx/ui/client/src/management-jobs/management-jobs.list.js b/awx/ui/client/src/management-jobs/management-jobs.list.js index 1a2f16e766..77da124746 100644 --- a/awx/ui/client/src/management-jobs/management-jobs.list.js +++ b/awx/ui/client/src/management-jobs/management-jobs.list.js @@ -22,13 +22,7 @@ export default function(){ } }, actions: { - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - icon: "icon-comments-alt", - mode: 'edit', - awFeature: 'activity_streams' - } + }, fieldActions: { submit: { diff --git a/awx/ui/client/src/partials/inventory-manage.html b/awx/ui/client/src/partials/inventory-manage.html index b8fc629267..452df8bbb8 100644 --- a/awx/ui/client/src/partials/inventory-manage.html +++ b/awx/ui/client/src/partials/inventory-manage.html @@ -3,9 +3,11 @@
-
+
+
+
+
-
diff --git a/awx/ui/client/src/partials/jobs.html b/awx/ui/client/src/partials/jobs.html index 1c100d120d..3753029090 100644 --- a/awx/ui/client/src/partials/jobs.html +++ b/awx/ui/client/src/partials/jobs.html @@ -1,8 +1,5 @@
-
- -
diff --git a/awx/ui/client/src/permissions/shared/permissions.form.js b/awx/ui/client/src/permissions/shared/permissions.form.js index de97aa01ad..e60dd6762c 100644 --- a/awx/ui/client/src/permissions/shared/permissions.form.js +++ b/awx/ui/client/src/permissions/shared/permissions.form.js @@ -18,17 +18,6 @@ export default function() { well: true, //Wrap the form with TB well forceListeners: true, - stream: { - 'class': "btn-primary btn-xs activity-btn", - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - awFeature: 'activity_streams', - dataPlacement: "top", - icon: "icon-comments-alt", - mode: 'edit', - iconSize: 'large' - }, - fields: { category: { label: 'Permission Type', diff --git a/awx/ui/client/src/permissions/shared/permissions.list.js b/awx/ui/client/src/permissions/shared/permissions.list.js index f9c50c7818..ca83a4128a 100644 --- a/awx/ui/client/src/permissions/shared/permissions.list.js +++ b/awx/ui/client/src/permissions/shared/permissions.list.js @@ -48,12 +48,6 @@ ngClick: 'addPermission()', awToolTip: 'Add a new permission', ngShow: 'PermissionAddAllowed' - }, - stream: { - ngClick: "showActivity()", - awToolTip: "View Activity Stream", - mode: 'edit', - awFeature: 'activity_streams' } }, diff --git a/awx/ui/client/src/shared/branding/colors.default.less b/awx/ui/client/src/shared/branding/colors.default.less index 34017ba341..ee6c307a01 100644 --- a/awx/ui/client/src/shared/branding/colors.default.less +++ b/awx/ui/client/src/shared/branding/colors.default.less @@ -5,7 +5,7 @@ @default-icon-hov: #D7D7D7; // also selected button @default-border: #E8E8E8; @default-second-border: #E1E1E1; -@default-bg: #FFFFFF; // also slected btn txt +@default-bg: #FFFFFF; // also selected btn txt @default-secondary-bg: #FCFCFC; // page/input field bg, just adds depth @default-tertiary-bg: #FAFAFA; // hover bg, alt-list @default-err: #FF5850; @@ -48,6 +48,12 @@ @list-actn-del-bg-hov: @default-err; @list-actn-bord-hov: @default-link; @list-row-select-bord: @default-link; +@list-pagin-text: @default-interface-txt; +@list-pagin-bord: @default-second-border; +@list-pagin-bord-act: @default-icon-hov; +@list-pagin-bg-act: @default-icon-hov; +@list-title-txt: @default-interface-txt; +@list-title-badge: @default-icon-hov; // tooltups @tooltip-bg: @default-interface-txt; diff --git a/awx/ui/client/src/shared/generator-helpers.js b/awx/ui/client/src/shared/generator-helpers.js index ece64c26aa..c2814a1c99 100644 --- a/awx/ui/client/src/shared/generator-helpers.js +++ b/awx/ui/client/src/shared/generator-helpers.js @@ -734,31 +734,39 @@ angular.module('GeneratorHelpers', [systemStatus.name]) set = params.set, html = ''; html += "\n"; - html += "
\n"; + html += "
\n"; html += "
\n"; - html += "
\n"; html += "
\n"; - html += "
\n"; - html += "Page {{ " + iterator + "_page }} of {{ " + iterator + "_num_pages }} ({{ " + iterator + "_total_rows | number:0 }} items)"; + html += "
\n"; + html += "ITEMS "; + html += "{{ (" + iterator + "_total_rows | number:0) < 1 ? 0 : (" + iterator + "_page-1)*" + iterator + "_page_size+1}}"; + html += "–{{ (" + iterator + "_total_rows | number:0) < (" + iterator + "_page)*" + iterator + "_page_size ? (" + iterator + "_total_rows | number:0) : (" + iterator + "_page)*" + iterator + "_page_size}}"; + html += " OF "; + html += "{{ " + iterator + "_total_rows | number:0 }}"; + html += ""; html += "
\n"; html += "
\n"; html += "
\n"; diff --git a/awx/ui/client/src/shared/list-generator/list-actions.partial.html b/awx/ui/client/src/shared/list-generator/list-actions.partial.html index cd75004527..5a97698872 100644 --- a/awx/ui/client/src/shared/list-generator/list-actions.partial.html +++ b/awx/ui/client/src/shared/list-generator/list-actions.partial.html @@ -4,14 +4,12 @@ diff --git a/awx/ui/client/src/shared/list-generator/list-generator.factory.js b/awx/ui/client/src/shared/list-generator/list-generator.factory.js index 3cc699cefa..875e0d9e3e 100644 --- a/awx/ui/client/src/shared/list-generator/list-generator.factory.js +++ b/awx/ui/client/src/shared/list-generator/list-generator.factory.js @@ -80,13 +80,13 @@ * * | Attribute | Description | * | --------- | ----------- | + * | actionclass | Set to a string containing any CSS classes to add to the button. | * | awToolTip | Adds the aw-tool-tip directive. Set to the value of the HTML or text to dislay in the tooltip. | - * | 'class' | Set to a string containing any CSS classes to add to the <a> element. | + * | buttonContent | String containing button content. HTML is accepted in this string. | * | dataPlacement | Set to the Bootstrip tooltip placement - right, left, top, bottom, etc. | * | dataTipWatch | Set to the $scope variable that contains the text and HTML to display in the tooltip. A $scope.$watch will be added to the variable so that anytime its value changes the tooltip will change. | - * | iconClass | By default the CSS icon class is set by the SelectIcon() method in js/shared/generator-helpers.js. The icon is based on the action name. Use iconClass to override the default value. | * | mode | One of 'all' or 'edit'. Will generally be 'all'. Note that field actions are not displayed when the list is in 'lookup' mode. | - * | ngClass | Adds the ng-class directive. Set to the JS expressino that ng-class will evaluate. | + * | ngClass | Adds the ng-class directive. Set to the JS expression that ng-class will evaluate. | * | ngShow | Adds the ng-show directive. Set to the JS expression that ng-show will evaluate. | * * ##Actions @@ -299,6 +299,30 @@ export default ['$location', '$compile', '$rootScope', 'SearchWidget', 'Paginate list = this.list, base, size, action, fld, cnt, field_action, fAction, itm; + html += "
"; + html += "
"; + + if (list.listTitle) { + + html += "
" + list.listTitle + "
"; + html += "{{(" + list.iterator + "_total_rows | number:0)}}"; + + } + + html += "
"; + html += "
"; + html += "
\n"; + + for (action in list.actions) { + list.actions[action] = _.defaults(list.actions[action], { dataPlacement: "top" }); + } + + html += "
\n"; + html += "
"; + html += "
"; + if (options.mode === 'edit' && list.editInstructions) { html += "
\n"; html += "\n"; @@ -317,15 +341,6 @@ export default ['$location', '$compile', '$rootScope', 'SearchWidget', 'Paginate html += "
\n"; } - if (options.activityStream) { - // Add a title row - html += "
\n"; - html += "
\n"; - html += "
{{ streamTitle }}
\n"; - html += "
\n"; - html += "
\n"; - } - if (options.showSearch=== undefined || options.showSearch === true) { html += "
\n"; if (options.searchSize) { @@ -357,45 +372,6 @@ export default ['$location', '$compile', '$rootScope', 'SearchWidget', 'Paginate mini: true }); } - - if (options.mode !== 'lookup') { - //actions - html += "
\n"; - - - html += "
\n"; - - for (action in list.actions) { - list.actions[action] = - _.defaults(list.actions[action], - { dataPlacement: "top" - }); - } - - html += "
\n"; - - html += "
\n"; - } else { - //lookup - html += "
\n"; - } html += "
\n"; } @@ -594,11 +570,12 @@ export default ['$location', '$compile', '$rootScope', 'SearchWidget', 'Paginate function buildSelectAll() { return $('') - .addClass('col-xs-1 select-column') + .addClass('col-xs-1 select-column List-tableHeader') .append( $('') .attr('selections-empty', 'selectedItems.length === 0') - .attr('items-length', list.name + '.length')); + .attr('items-length', list.name + '.length') + .attr('label', '')); } if (options === undefined) { @@ -608,7 +585,7 @@ export default ['$location', '$compile', '$rootScope', 'SearchWidget', 'Paginate html = "\n"; html += "\n"; if (list.index) { - html += "#\n"; + html += "#\n"; } if (list.multiSelect) { @@ -631,7 +608,7 @@ export default ['$location', '$compile', '$rootScope', 'SearchWidget', 'Paginate html += ">"; html += list.fields[fld].label; if (list.fields[fld].nosort === undefined || list.fields[fld].nosort !== true) { - html += "