diff --git a/awx/ui/client/src/access/add-rbac-user-team/rbac-selected-list.directive.js b/awx/ui/client/src/access/add-rbac-user-team/rbac-selected-list.directive.js index eb67bb30f5..f25d7463e1 100644 --- a/awx/ui/client/src/access/add-rbac-user-team/rbac-selected-list.directive.js +++ b/awx/ui/client/src/access/add-rbac-user-team/rbac-selected-list.directive.js @@ -42,7 +42,8 @@ export default ['$compile', 'i18n', 'generateList', name: list.fields.name, scm_type: list.fields.scm_type }; - list.fields.name.ngClick = 'linkoutResource("project", project)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/projects/{{project.id}}"; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; list.fields.scm_type.columnClass = 'col-md-5 col-sm-5 hidden-xs'; break; @@ -51,7 +52,8 @@ export default ['$compile', 'i18n', 'generateList', name: list.fields.name, organization: list.fields.organization }; - list.fields.name.ngClick = 'linkoutResource("inventory", inventory)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = '{{inventory.linkToDetails}}'; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; list.fields.organization.columnClass = 'col-md-5 col-sm-5 hidden-xs'; break; @@ -62,7 +64,8 @@ export default ['$compile', 'i18n', 'generateList', name: list.fields.name }; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; - list.fields.name.ngClick = 'linkoutResource("job_template", job_template)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/templates/job_template/{{job_template.id}}"; break; case 'workflow_templates': list.name = 'workflow_job_templates'; @@ -71,20 +74,23 @@ export default ['$compile', 'i18n', 'generateList', name: list.fields.name }; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; - list.fields.name.ngClick = 'linkoutResource("workflow_job_template", workflow_job_template)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/templates/workflow_job_template/{{workflow_template.id}}"; break; case 'credentials': list.fields = { name: list.fields.name }; - list.fields.name.ngClick = 'linkoutResource("credential", credential)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/credentials/{{credential.id}}"; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; break; case 'organizations': list.fields = { name: list.fields.name }; - list.fields.name.ngClick = 'linkoutResource("organization", organization)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/organizations/{{organization.id}}"; list.fields.name.columnClass = 'col-md-5 col-sm-5 col-xs-10'; break; } @@ -118,6 +124,24 @@ export default ['$compile', 'i18n', 'generateList', scope[list.name] = _.values(scope.collection); }); + scope.$watch(list.name, function(){ + if(scope.list.name === 'inventories') { + if (scope[list.name] !== undefined) { + scope[list.name].forEach(function(item, item_idx) { + var itm = scope[list.name][item_idx]; + + if(itm.kind && itm.kind === "smart") { + itm.linkToDetails = `#/inventories/smart/${itm.id}`; + } + else { + itm.linkToDetails = `#/inventories/inventory/${itm.id}`; + } + + }); + } + } + }); + scope.removeSelection = function(resource, type){ let multiselect_scope, deselectedIdx; diff --git a/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js b/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js index 5f1bbaf5a0..aa170576f7 100644 --- a/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js +++ b/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js @@ -46,7 +46,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL name: list.fields.name, scm_type: list.fields.scm_type }; - list.fields.name.ngClick = 'linkoutResource("project", project)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/projects/{{project.id}}"; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; list.fields.scm_type.columnClass = 'col-md-5 col-sm-5 hidden-xs'; break; @@ -56,7 +57,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL name: list.fields.name, organization: list.fields.organization }; - list.fields.name.ngClick = 'linkoutResource("inventory", inventory)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = '{{inventory.linkToDetails}}'; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; list.fields.organization.columnClass = 'col-md-5 col-sm-5 hidden-xs'; delete list.disableRow; @@ -69,7 +71,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL list.fields = { name: list.fields.name }; - list.fields.name.ngClick = 'linkoutResource("job_template", job_template)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/templates/job_template/{{job_template.id}}"; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; break; @@ -80,7 +83,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL list.fields = { name: list.fields.name }; - list.fields.name.ngClick = 'linkoutResource("workflow_job_template", workflow_template)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/templates/workflow_job_template/{{workflow_template.id}}"; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; break; case 'Users': @@ -89,7 +93,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL first_name: list.fields.first_name, last_name: list.fields.last_name }; - list.fields.username.ngClick = 'linkoutResource("user", user)'; + delete list.fields.username.ngClick; + list.fields.username.ngHref = "#/users/{{user.id}}"; list.fields.username.columnClass = 'col-md-5 col-sm-5 col-xs-11'; list.fields.first_name.columnClass = 'col-md-3 col-sm-3 hidden-xs'; list.fields.last_name.columnClass = 'col-md-3 col-sm-3 hidden-xs'; @@ -99,7 +104,8 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL name: list.fields.name, organization: list.fields.organization, }; - list.fields.name.ngClick = 'linkoutResource("team", team)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/teams/{{team.id}}"; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; list.fields.organization.columnClass = 'col-md-5 col-sm-5 hidden-xs'; break; @@ -107,14 +113,16 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL list.fields = { name: list.fields.name }; - list.fields.name.ngClick = 'linkoutResource("organization", organization)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/organizations/{{organization.id}}"; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; break; case 'Credentials': list.fields = { name: list.fields.name }; - list.fields.name.ngClick = 'linkoutResource("credential", credential)'; + delete list.fields.name.ngClick; + list.fields.name.ngHref = "#/credentials/{{credential.id}}"; list.fields.name.columnClass = 'col-md-6 col-sm-6 col-xs-11'; break; default: @@ -173,6 +181,20 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL }); } } + else if(scope.list.name === 'inventories') { + if (scope[list.name] !== undefined) { + scope[list.name].forEach(function(item, item_idx) { + var itm = scope[list.name][item_idx]; + + if(itm.kind && itm.kind === "smart") { + itm.linkToDetails = `#/inventories/smart/${itm.id}`; + } + else { + itm.linkToDetails = `#/inventories/inventory/${itm.id}`; + } + }); + } + } } function isSelected(item){ @@ -184,6 +206,7 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL }); return item; } + element.append(list_html); $compile(element.contents())(scope); diff --git a/awx/ui/client/src/inventories-hosts/hosts/hosts.partial.html b/awx/ui/client/src/inventories-hosts/hosts/hosts.partial.html index 3eef5ad07d..acc6f585cd 100644 --- a/awx/ui/client/src/inventories-hosts/hosts/hosts.partial.html +++ b/awx/ui/client/src/inventories-hosts/hosts/hosts.partial.html @@ -64,12 +64,12 @@