diff --git a/awx/ui/client/lib/models/Base.js b/awx/ui/client/lib/models/Base.js index cd72106684..171c046a41 100644 --- a/awx/ui/client/lib/models/Base.js +++ b/awx/ui/client/lib/models/Base.js @@ -1,6 +1,7 @@ let $http; let $q; let cache; +let strings; function request (method, resource, config) { let req = this.parseRequestConfig(method, resource, config); @@ -473,14 +474,14 @@ function parseRequestConfig (method, resource, config) { /** * Base functionality for API interaction. * - * @arg {string} path - The API resource for the model extending BaseModel to + * @arg {string} resource - The API resource for the model extending BaseModel to * use. * @arg {Object=} settings - Configuration applied to all instances of the * extending model. * @arg {boolean=} settings.cache - Cache the model data. * */ -function BaseModel (path, settings) { +function BaseModel (resource, settings) { this.create = create; this.find = find; this.get = get; @@ -511,18 +512,20 @@ function BaseModel (path, settings) { }; this.model = {}; - this.path = this.normalizePath(path); + this.path = this.normalizePath(resource); + this.label = strings.get(`${resource}.LABEL`); this.settings = settings || {}; } -function BaseModelLoader (_$http_, _$q_, _cache_) { +function BaseModelLoader (_$http_, _$q_, _cache_, ModelsStrings) { $http = _$http_; $q = _$q_; cache = _cache_; + strings = ModelsStrings; return BaseModel; } -BaseModelLoader.$inject = ['$http', '$q', 'CacheService']; +BaseModelLoader.$inject = ['$http', '$q', 'CacheService', 'ModelsStrings']; export default BaseModelLoader; diff --git a/awx/ui/client/lib/models/Credential.js b/awx/ui/client/lib/models/Credential.js index ebf2ea141f..93d29bb002 100644 --- a/awx/ui/client/lib/models/Credential.js +++ b/awx/ui/client/lib/models/Credential.js @@ -5,7 +5,6 @@ let Project; let JobTemplate; let Inventory; let InventorySource; -let strings; function createFormSchema (method, config) { if (!config) { @@ -82,7 +81,6 @@ function CredentialModel (method, resource, config) { this.createFormSchema = createFormSchema.bind(this); this.assignInputGroupValues = assignInputGroupValues.bind(this); this.setDependentResources = setDependentResources.bind(this); - this.label = strings.get('labels.CREDENTIAL'); return this.create(method, resource, config); } @@ -92,15 +90,13 @@ function CredentialModelLoader ( ProjectModel, JobTemplateModel, InventoryModel, - InventorySourceModel, - ModelsStrings + InventorySourceModel ) { Base = BaseModel; Project = ProjectModel; JobTemplate = JobTemplateModel; Inventory = InventoryModel; InventorySource = InventorySourceModel; - strings = ModelsStrings; return CredentialModel; } @@ -110,8 +106,7 @@ CredentialModelLoader.$inject = [ 'ProjectModel', 'JobTemplateModel', 'InventoryModel', - 'InventorySourceModel', - 'ModelsStrings' + 'InventorySourceModel' ]; export default CredentialModelLoader; diff --git a/awx/ui/client/lib/models/CredentialType.js b/awx/ui/client/lib/models/CredentialType.js index 706839795c..0607350ad8 100644 --- a/awx/ui/client/lib/models/CredentialType.js +++ b/awx/ui/client/lib/models/CredentialType.js @@ -1,6 +1,5 @@ let Base; let Credential; -let strings; function categorizeByKind () { const group = {}; @@ -50,27 +49,20 @@ function CredentialTypeModel (method, resource, config) { this.categorizeByKind = categorizeByKind.bind(this); this.mergeInputProperties = mergeInputProperties.bind(this); this.setDependentResources = setDependentResources.bind(this); - this.label = strings.get('labels.CREDENTIAL_TYPE'); return this.create(method, resource, config); } -function CredentialTypeModelLoader ( - BaseModel, - CredentialModel, - ModelsStrings -) { +function CredentialTypeModelLoader (BaseModel, CredentialModel) { Base = BaseModel; Credential = CredentialModel; - strings = ModelsStrings; return CredentialTypeModel; } CredentialTypeModelLoader.$inject = [ 'BaseModel', - 'CredentialModel', - 'ModelsStrings' + 'CredentialModel' ]; export default CredentialTypeModelLoader; diff --git a/awx/ui/client/lib/models/Inventory.js b/awx/ui/client/lib/models/Inventory.js index 9ce657d4e5..3d270dfc79 100644 --- a/awx/ui/client/lib/models/Inventory.js +++ b/awx/ui/client/lib/models/Inventory.js @@ -1,6 +1,5 @@ let Base; let JobTemplate; -let strings; function setDependentResources (id) { this.dependentResources = [ @@ -18,27 +17,20 @@ function InventoryModel (method, resource, config) { this.Constructor = InventoryModel; this.setDependentResources = setDependentResources.bind(this); - this.label = strings.get('labels.INVENTORY'); return this.create(method, resource, config); } -function InventoryModelLoader ( - BaseModel, - JobTemplateModel, - ModelsStrings -) { +function InventoryModelLoader (BaseModel, JobTemplateModel) { Base = BaseModel; JobTemplate = JobTemplateModel; - strings = ModelsStrings; return InventoryModel; } InventoryModelLoader.$inject = [ 'BaseModel', - 'JobTemplateModel', - 'ModelsStrings' + 'JobTemplateModel' ]; export default InventoryModelLoader; diff --git a/awx/ui/client/lib/models/InventoryScript.js b/awx/ui/client/lib/models/InventoryScript.js index 9a1832b8da..1b759410ab 100644 --- a/awx/ui/client/lib/models/InventoryScript.js +++ b/awx/ui/client/lib/models/InventoryScript.js @@ -1,6 +1,5 @@ let Base; let InventorySource; -let strings; function setDependentResources (id) { this.dependentResources = [ @@ -18,27 +17,20 @@ function InventoryScriptModel (method, resource, config) { this.Constructor = InventoryScriptModel; this.setDependentResources = setDependentResources.bind(this); - this.label = strings.get('labels.INVENTORY_SCRIPT'); return this.create(method, resource, config); } -function InventoryScriptModelLoader ( - BaseModel, - InventorySourceModel, - ModelsStrings -) { +function InventoryScriptModelLoader (BaseModel, InventorySourceModel) { Base = BaseModel; InventorySource = InventorySourceModel; - strings = ModelsStrings; return InventoryScriptModel; } InventoryScriptModelLoader.$inject = [ 'BaseModel', - 'InventorySourceModel', - 'ModelsStrings' + 'InventorySourceModel' ]; export default InventoryScriptModelLoader; diff --git a/awx/ui/client/lib/models/InventorySource.js b/awx/ui/client/lib/models/InventorySource.js index b1529780f3..27ec05b6e9 100644 --- a/awx/ui/client/lib/models/InventorySource.js +++ b/awx/ui/client/lib/models/InventorySource.js @@ -1,6 +1,5 @@ let Base; let WorkflowJobTemplateNode; -let strings; function setDependentResources (id) { this.dependentResources = [ @@ -17,7 +16,6 @@ function InventorySourceModel (method, resource, config) { Base.call(this, 'inventory_sources'); this.Constructor = InventorySourceModel; - this.label = strings.get('labels.INVENTORY_SOURCE'); this.setDependentResources = setDependentResources.bind(this); return this.create(method, resource, config); @@ -25,20 +23,17 @@ function InventorySourceModel (method, resource, config) { function InventorySourceModelLoader ( BaseModel, - WorkflowJobTemplateNodeModel, - ModelsStrings + WorkflowJobTemplateNodeModel ) { Base = BaseModel; WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel; - strings = ModelsStrings; return InventorySourceModel; } InventorySourceModelLoader.$inject = [ 'BaseModel', - 'WorkflowJobTemplateNodeModel', - 'ModelsStrings' + 'WorkflowJobTemplateNodeModel' ]; export default InventorySourceModelLoader; diff --git a/awx/ui/client/lib/models/JobTemplate.js b/awx/ui/client/lib/models/JobTemplate.js index c058171bee..885f1338a9 100644 --- a/awx/ui/client/lib/models/JobTemplate.js +++ b/awx/ui/client/lib/models/JobTemplate.js @@ -1,6 +1,5 @@ let Base; let WorkflowJobTemplateNode; -let strings; function setDependentResources (id) { this.dependentResources = [ @@ -18,27 +17,20 @@ function JobTemplateModel (method, resource, config) { this.Constructor = JobTemplateModel; this.setDependentResources = setDependentResources.bind(this); - this.label = strings.get('labels.JOB_TEMPLATE'); return this.create(method, resource, config); } -function JobTemplateModelLoader ( - BaseModel, - WorkflowJobTemplateNodeModel, - ModelsStrings -) { +function JobTemplateModelLoader (BaseModel, WorkflowJobTemplateNodeModel) { Base = BaseModel; WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel; - strings = ModelsStrings; return JobTemplateModel; } JobTemplateModelLoader.$inject = [ 'BaseModel', - 'WorkflowJobTemplateNodeModel', - 'ModelsStrings' + 'WorkflowJobTemplateNodeModel' ]; export default JobTemplateModelLoader; diff --git a/awx/ui/client/lib/models/Organization.js b/awx/ui/client/lib/models/Organization.js index a518511ec6..2e29f72473 100644 --- a/awx/ui/client/lib/models/Organization.js +++ b/awx/ui/client/lib/models/Organization.js @@ -1,28 +1,21 @@ let Base; -let strings; function OrganizationModel (method, resource, config) { Base.call(this, 'organizations'); this.Constructor = OrganizationModel; - this.label = strings.get('labels.ORGANIZATION'); return this.create(method, resource, config); } -function OrganizationModelLoader ( - BaseModel, - ModelsStrings -) { +function OrganizationModelLoader (BaseModel) { Base = BaseModel; - strings = ModelsStrings; return OrganizationModel; } OrganizationModelLoader.$inject = [ - 'BaseModel', - 'ModelsStrings' + 'BaseModel' ]; export default OrganizationModelLoader; diff --git a/awx/ui/client/lib/models/Project.js b/awx/ui/client/lib/models/Project.js index 071350a385..bb08c09179 100644 --- a/awx/ui/client/lib/models/Project.js +++ b/awx/ui/client/lib/models/Project.js @@ -2,7 +2,6 @@ let Base; let JobTemplate; let WorkflowJobTemplateNode; let InventorySource; -let strings; function setDependentResources (id) { this.dependentResources = [ @@ -32,7 +31,6 @@ function ProjectModel (method, resource, config) { this.Constructor = ProjectModel; this.setDependentResources = setDependentResources.bind(this); - this.label = strings.get('labels.PROJECT'); return this.create(method, resource, config); } @@ -42,13 +40,11 @@ function ProjectModelLoader ( JobTemplateModel, WorkflowJobTemplateNodeModel, InventorySourceModel, - ModelsStrings ) { Base = BaseModel; JobTemplate = JobTemplateModel; WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel; InventorySource = InventorySourceModel; - strings = ModelsStrings; return ProjectModel; } @@ -57,8 +53,7 @@ ProjectModelLoader.$inject = [ 'BaseModel', 'JobTemplateModel', 'WorkflowJobTemplateNodeModel', - 'InventorySourceModel', - 'ModelsStrings' + 'InventorySourceModel' ]; export default ProjectModelLoader; diff --git a/awx/ui/client/lib/models/WorkflowJobTemplateNode.js b/awx/ui/client/lib/models/WorkflowJobTemplateNode.js index 5ac7baed0a..c08cbd2e8c 100644 --- a/awx/ui/client/lib/models/WorkflowJobTemplateNode.js +++ b/awx/ui/client/lib/models/WorkflowJobTemplateNode.js @@ -1,28 +1,21 @@ let Base; -let strings; function WorkflowJobTemplateNodeModel (method, resource, config) { Base.call(this, 'workflow_job_template_nodes'); this.Constructor = WorkflowJobTemplateNodeModel; - this.label = strings.get('labels.WORKFLOW_JOB_TEMPLATE_NODE'); return this.create(method, resource, config); } -function WorkflowJobTemplateNodeModelLoader ( - BaseModel, - ModelsStrings -) { +function WorkflowJobTemplateNodeModelLoader (BaseModel) { Base = BaseModel; - strings = ModelsStrings; return WorkflowJobTemplateNodeModel; } WorkflowJobTemplateNodeModelLoader.$inject = [ - 'BaseModel', - 'ModelsStrings' + 'BaseModel' ]; export default WorkflowJobTemplateNodeModelLoader; diff --git a/awx/ui/client/lib/models/models.strings.js b/awx/ui/client/lib/models/models.strings.js index 55b72be5f0..acb2dd5bbf 100644 --- a/awx/ui/client/lib/models/models.strings.js +++ b/awx/ui/client/lib/models/models.strings.js @@ -4,16 +4,46 @@ function ModelsStrings (BaseString) { const { t } = this; const ns = this.models; - ns.labels = { - CREDENTIAL: t.s('Credentials'), - CREDENTIAL_TYPE: t.s('Credential Types'), - INVENTORY: t.s('Inventories'), - INVENTORY_SCRIPT: t.s('Inventory Scripts'), - INVENTORY_SOURCE: t.s('Inventory Sources'), - JOB_TEMPLATE: t.s('Job Templates'), - ORGANIZATION: t.s('Organizations'), - PROJECT: t.s('Projects'), - WORKFLOW_JOB_TEMPLATE_NODE: t.s('Workflow Job Template Nodes') + ns.credentials = { + LABEL: t.s('Credentials') + }; + + ns.credential_types = { + LABEL: t.s('Credential Types') + }; + + ns.inventories = { + LABEL: t.s('Inventories') + }; + + ns.inventory_scripts = { + LABEL: t.s('Inventory Scripts') + + }; + + ns.inventory_sources = { + LABEL: t.s('Inventory Sources') + + }; + + ns.job_templates = { + LABEL: t.s('Job Templates') + + }; + + ns.organizations = { + LABEL: t.s('Organizations') + + }; + + ns.projects = { + LABEL: t.s('Projects') + + }; + + ns.workflow_job_template_nodes = { + LABEL: t.s('Workflow Job Template Nodes') + }; } diff --git a/awx/ui/client/lib/services/base-string.service.js b/awx/ui/client/lib/services/base-string.service.js index 4f0df6b545..74d6611956 100644 --- a/awx/ui/client/lib/services/base-string.service.js +++ b/awx/ui/client/lib/services/base-string.service.js @@ -4,7 +4,6 @@ let i18n; function BaseStringService (namespace) { const ERROR_NO_NAMESPACE = 'BaseString cannot be extended without providing a namespace'; - const ERROR_NO_STRING = 'No string exists with this name'; if (!namespace) { throw new Error(ERROR_NO_NAMESPACE); @@ -67,8 +66,6 @@ function BaseStringService (namespace) { * the more globally relevant strings defined here. Strings with with dots as delimeters are * supported to give flexibility to extending classes to nest strings as necessary. * - * If no match is found, an error is thrown to alert the developer immediately instead of - * failing silently. * * The `t.s` and `t.p` calls should only be used where strings are defined in * .strings.js` files. To use translated strings elsewhere, access them through this @@ -88,13 +85,13 @@ function BaseStringService (namespace) { } else { value = value[key]; } - - if (!value) { - throw new Error(`${ERROR_NO_STRING}: ${name}`); - } }); - return typeof value === 'string' ? value : value(...args); + if (!value || typeof value === 'string') { + return value; + } + + return value(...args); }; }