Update the base model to use string service instead of each sub model

This commit is contained in:
gconsidine 2017-11-10 10:42:05 -05:00
parent e8fd40ace0
commit 8713e38c44
No known key found for this signature in database
GPG Key ID: CC78E4D5913BB71D
12 changed files with 70 additions and 101 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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')
};
}

View File

@ -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
* <name>.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);
};
}