diff --git a/awx/ui/.eslintrc.js b/awx/ui/.eslintrc.js index c8b8c73bba..217601f5f9 100644 --- a/awx/ui/.eslintrc.js +++ b/awx/ui/.eslintrc.js @@ -45,6 +45,7 @@ module.exports = { ignoreTemplateLiterals: true, }], 'no-continue': 'off', + 'no-debugger': 'off', 'no-mixed-operators': 'off', 'no-param-reassign': 'off', 'no-plusplus': 'off', diff --git a/awx/ui/client/features/credentials/add-credentials.controller.js b/awx/ui/client/features/credentials/add-credentials.controller.js index 560968c918..f0e4445669 100644 --- a/awx/ui/client/features/credentials/add-credentials.controller.js +++ b/awx/ui/client/features/credentials/add-credentials.controller.js @@ -42,7 +42,7 @@ function AddCredentialsController (models, $state, strings) { vm.form.save = data => { data.user = me.get('id'); - return credential.request('post', data); + return credential.request('post', { data }); }; vm.form.onSaveSuccess = res => { diff --git a/awx/ui/client/features/credentials/edit-credentials.controller.js b/awx/ui/client/features/credentials/edit-credentials.controller.js index 6fe3845266..e0a36c106f 100644 --- a/awx/ui/client/features/credentials/edit-credentials.controller.js +++ b/awx/ui/client/features/credentials/edit-credentials.controller.js @@ -88,7 +88,7 @@ function EditCredentialsController (models, $state, $scope, strings) { data.user = me.get('id'); credential.unset('inputs'); - return credential.request('put', data); + return credential.request('put', { data }); }; vm.form.onSaveSuccess = () => { diff --git a/awx/ui/client/lib/models/Base.js b/awx/ui/client/lib/models/Base.js index 854fb72de0..cd72106684 100644 --- a/awx/ui/client/lib/models/Base.js +++ b/awx/ui/client/lib/models/Base.js @@ -2,33 +2,44 @@ let $http; let $q; let cache; -function request (method, resource) { - if (Array.isArray(method)) { - const promises = method.map((_method_, i) => - this.request(_method_, Array.isArray(resource) ? resource[i] : resource)); +function request (method, resource, config) { + let req = this.parseRequestConfig(method, resource, config); + + if (Array.isArray(req.method)) { + const promises = req.method.map((_method, i) => { + const _resource = Array.isArray(req.resource) ? req.resource[i] : req.resource; + + req = this.parseRequestConfig(_method, _resource, config); + + if (this.isCacheable(req)) { + return this.requestWithCache(req); + } + + return this.request(req); + }); return $q.all(promises); } - if (this.isCacheable(method, resource)) { - return this.requestWithCache(method, resource); + if (this.isCacheable(req)) { + return this.requestWithCache(req); } - return this.http[method](resource); + return this.http[req.method](req); } -function requestWithCache (method, resource) { - const key = cache.createKey(method, this.path, resource); +function requestWithCache (config) { + const key = cache.createKey(config.method, this.path, config.resource); return cache.get(key) .then(data => { if (data) { - this.model[method.toUpperCase()] = data; + this.model[config.method.toUpperCase()] = data; return data; } - return this.http[method](resource) + return this.http[config.method](config) .then(res => { cache.put(key, res.data); @@ -77,22 +88,22 @@ function search (params, config) { }); } -function httpGet (resource, config) { +function httpGet (config = {}) { const req = { method: 'GET', url: this.path }; - if (config && config.params) { + if (config.params) { req.params = config.params; } - if (typeof resource === 'object') { - this.model.GET = resource; + if (typeof config.resource === 'object') { + this.model.GET = config.resource; return $q.resolve(); - } else if (resource) { - req.url = `${this.path}${resource}/`; + } else if (config.resource) { + req.url = `${this.path}${config.resource}/`; } return $http(req) @@ -103,40 +114,51 @@ function httpGet (resource, config) { }); } -function httpPost (data) { +function httpPost (config = {}) { const req = { method: 'POST', url: this.path, - data + data: config.data }; - return $http(req).then(res => { - this.model.GET = res.data; + return $http(req) + .then(res => { + this.model.GET = res.data; - return res; - }); + return res; + }); } -function httpPut (changes) { - const model = Object.assign(this.get(), changes); +function httpPatch (config = {}) { + const req = { + method: 'PUT', + url: `${this.path}${this.get('id')}/`, + data: config.changes + }; + + return $http(req); +} + +function httpPut (config = {}) { + const model = _.merge(this.get(), config.data); const req = { method: 'PUT', - url: `${this.path}${model.id}/`, + url: `${this.path}${this.get('id')}/`, data: model }; - return $http(req).then(res => res); + return $http(req); } -function httpOptions (resource) { +function httpOptions (config = {}) { const req = { method: 'OPTIONS', url: this.path }; - if (resource) { - req.url = `${this.path}${resource}/`; + if (config.resource) { + req.url = `${this.path}${config.resource}/`; } return $http(req) @@ -147,17 +169,17 @@ function httpOptions (resource) { }); } -function httpDelete (resource) { +function httpDelete (config = {}) { const req = { method: 'DELETE', url: this.path }; - if (resource) { - req.url = `${this.path}${resource}/`; + if (config.resource) { + req.url = `${this.path}${config.resource}/`; } - return $http(req).then(res => res); + return $http(req); } function options (keys) { @@ -367,29 +389,19 @@ function graft (id) { } function getDependentResourceCounts (id) { - if (this.setDependentResources) { - this.setDependentResources(id); - } else { - return Promise.resolve([]); - } + this.setDependentResources(id); - const dependentResourcePromises = []; + const promises = []; - this.dependentResources.forEach(dependentResource => { - const config = {}; - - if (dependentResource.params) { - config.params = dependentResource.params; - } - - dependentResourcePromises.push(dependentResource.model.http.get(undefined, config) - .then((val) => ({ - label: dependentResource.model.label, - count: val.data.count + this.dependentResources.forEach(resource => { + promises.push(resource.model.request('get', resource.params) + .then(res => ({ + label: resource.model.label, + count: res.data.count }))); }); - return Promise.all(dependentResourcePromises); + return Promise.all(promises); } /** @@ -401,20 +413,22 @@ function getDependentResourceCounts (id) { * @arg {string=} method - Populate the model with `GET` or `OPTIONS` data. * @arg {(string|Object)=} resource - An `id` reference to a particular * resource or an existing model's data. - * @arg {boolean=} isGraft - Create a new instance from existing model data. + * @arg {config=} config - Create a new instance from existing model data. * * @returns {(Object|Promise)} - Returns a reference to the model instance * if an empty instance or graft is created. Otherwise, a promise yielding * a model instance is returned. */ -function create (method, resource, isGraft, config) { - if (!method) { +function create (method, resource, config) { + const req = this.parseRequestConfig(method, resource, config); + + if (!req || !req.method) { return this; } - this.promise = this.request(method, resource, config); + this.promise = this.request(req); - if (isGraft) { + if (req.graft) { return this; } @@ -422,6 +436,40 @@ function create (method, resource, isGraft, config) { .then(() => this); } +function parseRequestConfig (method, resource, config) { + if (!method) { + return null; + } + + let req = {}; + + if (Array.isArray(method)) { + if (Array.isArray(resource)) { + req.resource = resource; + } else if (typeof resource === 'object') { + req = resource; + } + + req.method = method; + } else if (typeof method === 'string') { + if (typeof resource === 'object') { + req = resource; + } else { + req.resource = resource; + } + + req.method = method; + } else if (typeof method === 'object') { + req = method; + } else { + req = config; + req.method = method; + req.resource = resource; + } + + return req; +} + /** * Base functionality for API interaction. * @@ -444,6 +492,7 @@ function BaseModel (path, settings) { this.match = match; this.normalizePath = normalizePath; this.options = options; + this.parseRequestConfig = parseRequestConfig; this.request = request; this.requestWithCache = requestWithCache; this.search = search; @@ -455,6 +504,7 @@ function BaseModel (path, settings) { this.http = { get: httpGet.bind(this), options: httpOptions.bind(this), + patch: httpPatch.bind(this), post: httpPost.bind(this), put: httpPut.bind(this), delete: httpDelete.bind(this) diff --git a/awx/ui/client/lib/models/Config.js b/awx/ui/client/lib/models/Config.js index 85be6ef147..9f2e3ab87a 100644 --- a/awx/ui/client/lib/models/Config.js +++ b/awx/ui/client/lib/models/Config.js @@ -1,5 +1,5 @@ let $log; -let BaseModel; +let Base; function getTruncatedVersion () { let version; @@ -17,18 +17,18 @@ function isOpen () { return this.get('license_info.license_type') === 'open'; } -function ConfigModel (method, resource, graft) { - BaseModel.call(this, 'config', { cache: true }); +function ConfigModel (method, resource, config) { + Base.call(this, 'config', { cache: true }); this.Constructor = ConfigModel; this.getTruncatedVersion = getTruncatedVersion; this.isOpen = isOpen; - return this.create(method, resource, graft); + return this.create(method, resource, config); } -function ConfigModelLoader (_BaseModel_, _$log_) { - BaseModel = _BaseModel_; +function ConfigModelLoader (BaseModel, _$log_) { + Base = BaseModel; $log = _$log_; return ConfigModel; diff --git a/awx/ui/client/lib/models/Credential.js b/awx/ui/client/lib/models/Credential.js index 0bfac7be07..ebf2ea141f 100644 --- a/awx/ui/client/lib/models/Credential.js +++ b/awx/ui/client/lib/models/Credential.js @@ -1,11 +1,11 @@ const ENCRYPTED_VALUE = '$encrypted$'; -let BaseModel; -let ProjectModel; -let JobTemplateModel; -let InventoryModel; -let InventorySourceModel; -let ModelsStrings; +let Base; +let Project; +let JobTemplate; +let Inventory; +let InventorySource; +let strings; function createFormSchema (method, config) { if (!config) { @@ -48,26 +48,26 @@ function assignInputGroupValues (inputs) { function setDependentResources (id) { this.dependentResources = [ { - model: new ProjectModel(), + model: new Project(), params: { credential: id } }, { - model: new JobTemplateModel(), + model: new JobTemplate(), params: { credential: id, ask_credential_on_launch: false } }, { - model: new InventoryModel(), + model: new Inventory(), params: { insights_credential: id } }, { - model: new InventorySourceModel(), + model: new InventorySource(), params: { credential: id } @@ -75,32 +75,32 @@ function setDependentResources (id) { ]; } -function CredentialModel (method, resource, graft) { - BaseModel.call(this, 'credentials'); +function CredentialModel (method, resource, config) { + Base.call(this, 'credentials'); this.Constructor = CredentialModel; this.createFormSchema = createFormSchema.bind(this); this.assignInputGroupValues = assignInputGroupValues.bind(this); this.setDependentResources = setDependentResources.bind(this); - this.label = ModelsStrings.get('labels.CREDENTIAL'); + this.label = strings.get('labels.CREDENTIAL'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function CredentialModelLoader ( - _BaseModel_, - _ProjectModel_, - _JobTemplateModel_, - _InventoryModel_, - _InventorySourceModel_, - _ModelsStrings_ + BaseModel, + ProjectModel, + JobTemplateModel, + InventoryModel, + InventorySourceModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - ProjectModel = _ProjectModel_; - JobTemplateModel = _JobTemplateModel_; - InventoryModel = _InventoryModel_; - InventorySourceModel = _InventorySourceModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + Project = ProjectModel; + JobTemplate = JobTemplateModel; + Inventory = InventoryModel; + InventorySource = InventorySourceModel; + strings = ModelsStrings; return CredentialModel; } diff --git a/awx/ui/client/lib/models/CredentialType.js b/awx/ui/client/lib/models/CredentialType.js index 936a1d8bdd..706839795c 100644 --- a/awx/ui/client/lib/models/CredentialType.js +++ b/awx/ui/client/lib/models/CredentialType.js @@ -1,6 +1,6 @@ -let BaseModel; -let CredentialModel; -let ModelsStrings; +let Base; +let Credential; +let strings; function categorizeByKind () { const group = {}; @@ -35,7 +35,7 @@ function mergeInputProperties () { function setDependentResources (id) { this.dependentResources = [ { - model: new CredentialModel(), + model: new Credential(), params: { credential_type: id } @@ -43,26 +43,26 @@ function setDependentResources (id) { ]; } -function CredentialTypeModel (method, resource, graft) { - BaseModel.call(this, 'credential_types'); +function CredentialTypeModel (method, resource, config) { + Base.call(this, 'credential_types'); this.Constructor = CredentialTypeModel; this.categorizeByKind = categorizeByKind.bind(this); this.mergeInputProperties = mergeInputProperties.bind(this); this.setDependentResources = setDependentResources.bind(this); - this.label = ModelsStrings.get('labels.CREDENTIAL_TYPE'); + this.label = strings.get('labels.CREDENTIAL_TYPE'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function CredentialTypeModelLoader ( - _BaseModel_, - _CredentialModel_, - _ModelsStrings_ + BaseModel, + CredentialModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - CredentialModel = _CredentialModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + Credential = CredentialModel; + strings = ModelsStrings; return CredentialTypeModel; } diff --git a/awx/ui/client/lib/models/Inventory.js b/awx/ui/client/lib/models/Inventory.js index b1d5af3f54..9ce657d4e5 100644 --- a/awx/ui/client/lib/models/Inventory.js +++ b/awx/ui/client/lib/models/Inventory.js @@ -1,11 +1,11 @@ -let BaseModel; -let JobTemplateModel; -let ModelsStrings; +let Base; +let JobTemplate; +let strings; function setDependentResources (id) { this.dependentResources = [ { - model: new JobTemplateModel(), + model: new JobTemplate(), params: { inventory: id } @@ -13,24 +13,24 @@ function setDependentResources (id) { ]; } -function InventoryModel (method, resource, graft) { - BaseModel.call(this, 'inventories'); +function InventoryModel (method, resource, config) { + Base.call(this, 'inventories'); this.Constructor = InventoryModel; this.setDependentResources = setDependentResources.bind(this); - this.label = ModelsStrings.get('labels.INVENTORY'); + this.label = strings.get('labels.INVENTORY'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function InventoryModelLoader ( - _BaseModel_, - _JobTemplateModel_, - _ModelsStrings_ + BaseModel, + JobTemplateModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - JobTemplateModel = _JobTemplateModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + JobTemplate = JobTemplateModel; + strings = ModelsStrings; return InventoryModel; } diff --git a/awx/ui/client/lib/models/InventoryScript.js b/awx/ui/client/lib/models/InventoryScript.js index aa37d09efd..9a1832b8da 100644 --- a/awx/ui/client/lib/models/InventoryScript.js +++ b/awx/ui/client/lib/models/InventoryScript.js @@ -1,11 +1,11 @@ -let BaseModel; -let InventorySourceModel; -let ModelsStrings; +let Base; +let InventorySource; +let strings; function setDependentResources (id) { this.dependentResources = [ { - model: new InventorySourceModel(), + model: new InventorySource(), params: { source_script: id } @@ -13,24 +13,24 @@ function setDependentResources (id) { ]; } -function InventoryScriptModel (method, resource, graft) { - BaseModel.call(this, 'inventory_scripts'); +function InventoryScriptModel (method, resource, config) { + Base.call(this, 'inventory_scripts'); this.Constructor = InventoryScriptModel; this.setDependentResources = setDependentResources.bind(this); - this.label = ModelsStrings.get('labels.INVENTORY_SCRIPT'); + this.label = strings.get('labels.INVENTORY_SCRIPT'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function InventoryScriptModelLoader ( - _BaseModel_, - _InventorySourceModel_, - _ModelsStrings_ + BaseModel, + InventorySourceModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - InventorySourceModel = _InventorySourceModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + InventorySource = InventorySourceModel; + strings = ModelsStrings; return InventoryScriptModel; } diff --git a/awx/ui/client/lib/models/InventorySource.js b/awx/ui/client/lib/models/InventorySource.js index abde6883fb..b1529780f3 100644 --- a/awx/ui/client/lib/models/InventorySource.js +++ b/awx/ui/client/lib/models/InventorySource.js @@ -1,11 +1,11 @@ -let BaseModel; -let WorkflowJobTemplateNodeModel; -let ModelsStrings; +let Base; +let WorkflowJobTemplateNode; +let strings; function setDependentResources (id) { this.dependentResources = [ { - model: new WorkflowJobTemplateNodeModel(), + model: new WorkflowJobTemplateNode(), params: { unified_job_template: id } @@ -13,24 +13,24 @@ function setDependentResources (id) { ]; } -function InventorySourceModel (method, resource, graft) { - BaseModel.call(this, 'inventory_sources'); +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); - this.label = ModelsStrings.get('labels.INVENTORY_SOURCE'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function InventorySourceModelLoader ( - _BaseModel_, - _WorkflowJobTemplateNodeModel_, - _ModelsStrings_ + BaseModel, + WorkflowJobTemplateNodeModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - WorkflowJobTemplateNodeModel = _WorkflowJobTemplateNodeModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel; + strings = ModelsStrings; return InventorySourceModel; } diff --git a/awx/ui/client/lib/models/JobTemplate.js b/awx/ui/client/lib/models/JobTemplate.js index 2b0a7ce021..c058171bee 100644 --- a/awx/ui/client/lib/models/JobTemplate.js +++ b/awx/ui/client/lib/models/JobTemplate.js @@ -1,11 +1,11 @@ -let BaseModel; -let WorkflowJobTemplateNodeModel; -let ModelsStrings; +let Base; +let WorkflowJobTemplateNode; +let strings; function setDependentResources (id) { this.dependentResources = [ { - model: new WorkflowJobTemplateNodeModel(), + model: new WorkflowJobTemplateNode(), params: { unified_job_template: id } @@ -13,24 +13,24 @@ function setDependentResources (id) { ]; } -function JobTemplateModel (method, resource, graft) { - BaseModel.call(this, 'job_templates'); +function JobTemplateModel (method, resource, config) { + Base.call(this, 'job_templates'); this.Constructor = JobTemplateModel; this.setDependentResources = setDependentResources.bind(this); - this.label = ModelsStrings.get('labels.JOB_TEMPLATE'); + this.label = strings.get('labels.JOB_TEMPLATE'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function JobTemplateModelLoader ( - _BaseModel_, - _WorkflowJobTemplateNodeModel_, - _ModelsStrings_ + BaseModel, + WorkflowJobTemplateNodeModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - WorkflowJobTemplateNodeModel = _WorkflowJobTemplateNodeModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel; + strings = ModelsStrings; return JobTemplateModel; } diff --git a/awx/ui/client/lib/models/Me.js b/awx/ui/client/lib/models/Me.js index c2ee95d46e..221a29da34 100644 --- a/awx/ui/client/lib/models/Me.js +++ b/awx/ui/client/lib/models/Me.js @@ -1,11 +1,11 @@ -let BaseModel; +let Base; -function MeModel (method, resource, graft) { - BaseModel.call(this, 'me'); +function MeModel (method, resource, config) { + Base.call(this, 'me'); this.Constructor = MeModel; - return this.create(method, resource, graft) + return this.create(method, resource, config) .then(() => { if (this.has('results')) { _.merge(this.model.GET, this.get('results[0]')); @@ -16,8 +16,8 @@ function MeModel (method, resource, graft) { }); } -function MeModelLoader (_BaseModel_) { - BaseModel = _BaseModel_; +function MeModelLoader (BaseModel) { + Base = BaseModel; return MeModel; } diff --git a/awx/ui/client/lib/models/Organization.js b/awx/ui/client/lib/models/Organization.js index 734d547395..a518511ec6 100644 --- a/awx/ui/client/lib/models/Organization.js +++ b/awx/ui/client/lib/models/Organization.js @@ -1,21 +1,21 @@ -let BaseModel; -let ModelsStrings; +let Base; +let strings; -function OrganizationModel (method, resource, graft) { - BaseModel.call(this, 'organizations'); +function OrganizationModel (method, resource, config) { + Base.call(this, 'organizations'); this.Constructor = OrganizationModel; - this.label = ModelsStrings.get('labels.ORGANIZATION'); + this.label = strings.get('labels.ORGANIZATION'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function OrganizationModelLoader ( - _BaseModel_, - _ModelsStrings_ + BaseModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + strings = ModelsStrings; return OrganizationModel; } diff --git a/awx/ui/client/lib/models/Project.js b/awx/ui/client/lib/models/Project.js index 63d363bd92..071350a385 100644 --- a/awx/ui/client/lib/models/Project.js +++ b/awx/ui/client/lib/models/Project.js @@ -1,25 +1,25 @@ -let BaseModel; -let JobTemplateModel; -let WorkflowJobTemplateNodeModel; -let InventorySourceModel; -let ModelsStrings; +let Base; +let JobTemplate; +let WorkflowJobTemplateNode; +let InventorySource; +let strings; function setDependentResources (id) { this.dependentResources = [ { - model: new JobTemplateModel(), + model: new JobTemplate(), params: { project: id } }, { - model: new WorkflowJobTemplateNodeModel(), + model: new WorkflowJobTemplateNode(), params: { unified_job_template: id } }, { - model: new InventorySourceModel(), + model: new InventorySource(), params: { source_project: id } @@ -27,28 +27,28 @@ function setDependentResources (id) { ]; } -function ProjectModel (method, resource, graft) { - BaseModel.call(this, 'projects'); +function ProjectModel (method, resource, config) { + Base.call(this, 'projects'); this.Constructor = ProjectModel; this.setDependentResources = setDependentResources.bind(this); - this.label = ModelsStrings.get('labels.PROJECT'); + this.label = strings.get('labels.PROJECT'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function ProjectModelLoader ( - _BaseModel_, - _JobTemplateModel_, - _WorkflowJobTemplateNodeModel_, - _InventorySourceModel_, - _ModelsStrings_ + BaseModel, + JobTemplateModel, + WorkflowJobTemplateNodeModel, + InventorySourceModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - JobTemplateModel = _JobTemplateModel_; - WorkflowJobTemplateNodeModel = _WorkflowJobTemplateNodeModel_; - InventorySourceModel = _InventorySourceModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + JobTemplate = JobTemplateModel; + WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel; + InventorySource = InventorySourceModel; + strings = ModelsStrings; return ProjectModel; } diff --git a/awx/ui/client/lib/models/WorkflowJobTemplateNode.js b/awx/ui/client/lib/models/WorkflowJobTemplateNode.js index bc5cfdf107..5ac7baed0a 100644 --- a/awx/ui/client/lib/models/WorkflowJobTemplateNode.js +++ b/awx/ui/client/lib/models/WorkflowJobTemplateNode.js @@ -1,21 +1,21 @@ -let BaseModel; -let ModelsStrings; +let Base; +let strings; -function WorkflowJobTemplateNodeModel (method, resource, graft) { - BaseModel.call(this, 'workflow_job_template_nodes'); +function WorkflowJobTemplateNodeModel (method, resource, config) { + Base.call(this, 'workflow_job_template_nodes'); this.Constructor = WorkflowJobTemplateNodeModel; - this.label = ModelsStrings.get('labels.WORKFLOW_JOB_TEMPLATE_NODE'); + this.label = strings.get('labels.WORKFLOW_JOB_TEMPLATE_NODE'); - return this.create(method, resource, graft); + return this.create(method, resource, config); } function WorkflowJobTemplateNodeModelLoader ( - _BaseModel_, - _ModelsStrings_ + BaseModel, + ModelsStrings ) { - BaseModel = _BaseModel_; - ModelsStrings = _ModelsStrings_; + Base = BaseModel; + strings = ModelsStrings; return WorkflowJobTemplateNodeModel; }