diff --git a/src/main/coffeescript/view/ParameterView.coffee b/src/main/coffeescript/view/ParameterView.coffee deleted file mode 100644 index bac2bcd8..00000000 --- a/src/main/coffeescript/view/ParameterView.coffee +++ /dev/null @@ -1,79 +0,0 @@ -class ParameterView extends Backbone.View - initialize: -> - Handlebars.registerHelper 'isArray', - (param, opts) -> - if param.type.toLowerCase() == 'array' || param.allowMultiple - opts.fn(@) - else - opts.inverse(@) - - render: -> - type = @model.type || @model.dataType - - if typeof type is 'undefined' - schema = @model.schema - if schema and schema['$ref'] - ref = schema['$ref'] - if ref.indexOf('#/definitions/') is 0 - type = ref.substring('#/definitions/'.length) - else - type = ref - - @model.type = type - @model.paramType = @model.in || @model.paramType - @model.isBody = true if @model.paramType == 'body' or @model.in == 'body' - @model.isFile = true if type and type.toLowerCase() == 'file' - @model.default = (@model.default || @model.defaultValue) - - if@model.allowableValues - @model.isList = true - - template = @template() - $(@el).html(template(@model)) - - signatureModel = - sampleJSON: @model.sampleJSON - isParam: true - signature: @model.signature - - if @model.sampleJSON - signatureView = new SignatureView({model: signatureModel, tagName: 'div'}) - $('.model-signature', $(@el)).append signatureView.render().el - else - $('.model-signature', $(@el)).html(@model.signature) - - isParam = false - - if @model.isBody - isParam = true - - contentTypeModel = - isParam: isParam - - contentTypeModel.consumes = @model.consumes - - if isParam - parameterContentTypeView = new ParameterContentTypeView({model: contentTypeModel}) - $('.parameter-content-type', $(@el)).append parameterContentTypeView.render().el - - else - responseContentTypeView = new ResponseContentTypeView({model: contentTypeModel}) - $('.response-content-type', $(@el)).append responseContentTypeView.render().el - - @ - - # Return an appropriate template based on if the parameter is a list, readonly, required - template: -> - if @model.isList - Handlebars.templates.param_list - else - if @options.readOnly - if @model.required - Handlebars.templates.param_readonly_required - else - Handlebars.templates.param_readonly - else - if @model.required - Handlebars.templates.param_required - else - Handlebars.templates.param diff --git a/src/main/coffeescript/view/ParameterView.js b/src/main/coffeescript/view/ParameterView.js new file mode 100644 index 00000000..1253ba8c --- /dev/null +++ b/src/main/coffeescript/view/ParameterView.js @@ -0,0 +1,101 @@ +'use strict'; + +var ParameterView = Backbone.View.extend({ + initialize: function(){ + Handlebars.registerHelper('isArray', function(param, opts) { + if (param.type.toLowerCase() === 'array' || param.allowMultiple) { + opts.fn(this); + } else { + opts.inverse(this); + } + }); + }, + + render: function() { + var type = this.model.type || this.model.dataType; + + if (typeof type === 'undefined') { + var schema = this.model.schema; + if (schema && schema.$ref) { + var ref = schema.$ref; + if (ref.indexOf('#/definitions/') === 0) { + type = ref.substring('#/definitions/'.length); + } else { + type = ref; + } + } + } + + this.model.type = type; + this.model.paramType = this.model.in || this.model.paramType; + this.model.isBody = this.model.paramType === 'body' || this.model.in === 'body'; + this.model.isFile = type && type.toLowerCase() === 'file'; + this.model.default = (this.model.default || this.model.defaultValue); + + if (this.model.allowableValues) { + this.model.isList = true; + } + + var template = this.template(); + $(this.el).html(template(this.model)); + + var signatureModel = { + sampleJSON: this.model.sampleJSON, + isParam: true, + signature: this.model.signature + }; + + if (this.model.sampleJSON) { + var signatureView = new SignatureView({model: signatureModel, tagName: 'div'}); + $('.model-signature', $(this.el)).append(signatureView.render().el); + } + else { + $('.model-signature', $(this.el)).html(this.model.signature); + } + + var isParam = false; + + if (this.model.isBody) { + isParam = true; + } + + var contentTypeModel = { + isParam: isParam + }; + + contentTypeModel.consumes = this.model.consumes; + + if (isParam) { + var parameterContentTypeView = new ParameterContentTypeView({model: contentTypeModel}); + $('.parameter-content-type', $(this.el)).append(parameterContentTypeView.render().el); + } + + else { + var responseContentTypeView = new ResponseContentTypeView({model: contentTypeModel}); + $('.response-content-type', $(this.el)).append(responseContentTypeView.render().el); + } + + return this; + }, + + // Return an appropriate template based on if the parameter is a list, readonly, required + template: function(){ + if (this.model.isList) { + return Handlebars.templates.param_list; + } else { + if (this.options.readOnly) { + if (this.model.required) { + return Handlebars.templates.param_readonly_required; + } else { + return Handlebars.templates.param_readonly; + } + } else { + if (this.model.required) { + return Handlebars.templates.param_required; + } else { + return Handlebars.templates.param; + } + } + } + } +}); \ No newline at end of file