diff --git a/ansibleworks/ui/static/lib/ansible/form-generator.js b/ansibleworks/ui/static/lib/ansible/form-generator.js index 161aa47754..92713aeccb 100644 --- a/ansibleworks/ui/static/lib/ansible/form-generator.js +++ b/ansibleworks/ui/static/lib/ansible/form-generator.js @@ -9,61 +9,17 @@ */ angular.module('FormGenerator', ['GeneratorHelpers']) - .factory('GenerateForm', [ '$compile', 'SearchWidget', 'PaginateWidget', function($compile, SearchWidget, PaginateWidget) { + .factory('GenerateForm', [ '$compile', 'SearchWidget', 'PaginateWidget', 'Attr', 'Icon', 'Column', + function($compile, SearchWidget, PaginateWidget, Attr, Icon, Column) { return { setForm: function(form) { this.form = form; }, - attr: function(obj, key) { - var result; - switch(key) { - case 'ngClick': - result = "ng-click=\"" + obj[key] + "\" "; - break; - case 'ngOptions': - result = "ng-options=\"" + obj[key] + "\" "; - break; - case 'ngChange': - result = "ng-change=\"" + obj[key] + "\" "; - break; - case 'ngShow': - result = "ng-show=\"" + obj[key] + "\" "; - break; - case 'ngHide': - result = "ng-hide=\"" + obj[key] + "\" "; - break; - case 'trueValue': - result = "ng-true-value=\"" + obj[key] + "\" "; - break; - case 'falseValue': - result = "ng-false-value=\"" + obj[key] + "\" "; - break; - case 'awToolTip': - result = "aw-tool-tip=\"" + obj[key] + "\" "; - break; - case 'awPopOver': - result = "aw-pop-over='" + obj[key] + "' "; - break; - case 'dataTitle': - result = "data-title=\"" + obj[key] + "\" "; - break; - case 'dataPlacement': - result = "data-placement=\"" + obj[key] + "\" "; - break; - case 'icon': - result = " "; - break; - default: - result = key + "=\"" + obj[key] + "\" "; - } - return result; - }, + attr: Attr, - icon: function(icon) { - return " "; - }, + icon: Icon, has: function(key) { return (this.form[key] && this.form[key] != null && this.form[key] != undefined) ? true : false; @@ -103,7 +59,6 @@ angular.module('FormGenerator', ['GeneratorHelpers']) this.scope.formHeader = (options.mode == 'add') ? form.addTitle : form.editTitle; $('#form-modal').modal(); } - return this.scope; }, @@ -652,7 +607,7 @@ angular.module('FormGenerator', ['GeneratorHelpers']) } if (this.form.name == 'inventory' && options.mode == 'edit') { - html += this.buildTree(); + html += this.buildTree(options); } else { if ((!this.modal) && options.related && this.form.related) { @@ -664,7 +619,7 @@ angular.module('FormGenerator', ['GeneratorHelpers']) }, - buildTree: function() { + buildTree: function(options) { // // Used to create the inventory detail view // @@ -755,56 +710,7 @@ angular.module('FormGenerator', ['GeneratorHelpers']) for (var fld in form.related[itm].fields) { cnt++; rfield = form.related[itm].fields[fld]; - html += "" : ""; - - // Start link:/linkTo:/ngClick: - if ((rfield.key || rfield.link || rfield.linkTo || rfield.ngClick )) { - if (rfield.linkTo) { - html += ""; - } - else if (rfield.ngClick) { - html += ""; - } - else { - html += ""; - } - } - - // Add icon: - if (rfield.ngShowIcon) { - html += " "; - } - else { - html += this.icon(rfield.icon) + " "; - } - - // Add data binds - if (rfield.showValue == undefined || rfield.showValue == true) { - if (rfield.ngBind) { - html += "{{ " + rfield.ngBind + " }}"; - } - else { - html += "{{" + form.related[itm].iterator + "." + fld + "}}"; - } - } - - // Add additional text: - if (rfield.text) { - html += rfield.text; - } - - // close the link - html += (rfield.key || rfield.link || rfield.linkTo || rfield.ngClick) ? "" : ""; - - // close ngShow - html += (rfield.ngShow) ? "" : ""; - - html += "\n"; + html += Column({ list: form.related[itm], fld: fld, options: options, base: base }) } // Row level actions diff --git a/ansibleworks/ui/static/lib/ansible/generator-helpers.js b/ansibleworks/ui/static/lib/ansible/generator-helpers.js index e0d27bfd58..f01fc6ca99 100644 --- a/ansibleworks/ui/static/lib/ansible/generator-helpers.js +++ b/ansibleworks/ui/static/lib/ansible/generator-helpers.js @@ -7,7 +7,142 @@ * */ -angular.module('GeneratorHelpers', []) +angular.module('GeneratorHelpers', ['GeneratorHelpers']) + + .factory('Attr', function() { + return function(obj, key) { + var result; + switch(key) { + case 'ngClick': + result = "ng-click=\"" + obj[key] + "\" "; + break; + case 'ngOptions': + result = "ng-options=\"" + obj[key] + "\" "; + break; + case 'ngClass': + result = "ng-class=\"" + obj[key] + "\" "; + break; + case 'ngChange': + result = "ng-change=\"" + obj[key] + "\" "; + break; + case 'ngDisabled': + result = "ng-disabled=\"" + obj[key] + "\" "; + break; + case 'ngShow': + result = "ng-show=\"" + obj[key] + "\" "; + break; + case 'ngHide': + result = "ng-hide=\"" + obj[key] + "\" "; + break; + case 'ngBind': + result = "ng-bind=\"" + obj[key] + "\" "; + break; + case 'trueValue': + result = "ng-true-value=\"" + obj[key] + "\" "; + break; + case 'falseValue': + result = "ng-false-value=\"" + obj[key] + "\" "; + break; + case 'awToolTip': + result = "aw-tool-tip=\"" + obj[key] + "\" "; + break; + case 'awPopOver': + result = "aw-pop-over='" + obj[key] + "' "; + break; + case 'dataTitle': + result = "data-title=\"" + obj[key] + "\" "; + break; + case 'dataPlacement': + result = "data-placement=\"" + obj[key] + "\" "; + break; + case 'awToolTip': + result = "aw-tool-tip=\"" + obj[key] + "\" "; + break; + default: + result = key + "=\"" + obj[key] + "\" "; + } + + return result; + + } + }) + + .factory('Icon', function() { + return function(icon) { + return " "; + } + }) + + .factory('Column', ['Attr', 'Icon', function(Attr, Icon) { + return function(params) { + var list = params['list']; + var fld = params['fld']; + var options = params['options']; + var base = params['base']; + + var field = list['fields'][fld]; + var html = ''; + + html += "" : ""; + + // Start the Link + if ((field.key || field.link || field.linkTo || field.ngClick ) && options['mode'] != 'lookup' && options['mode'] != 'select') { + if (field.linkTo) { + html += ""; + } + else if (field.ngClick) { + html += ""; + } + else { + html += ""; + } + } + + // Add icon: + if (field.ngShowIcon) { + html += " "; + } + else { + html += Icon(field.icon) + " "; + } + + // Add data binds + if (field.showValue == undefined || field.showValue == true) { + if (field.ngBind) { + html += "{{ " + field.ngBind + " }}"; + } + else { + html += "{{" + list.iterator + "." + fld + "}}"; + } + } + + // Add additional text: + if (field.text) { + html += field.text; + } + + // close the link + if ((field.key || field.link || field.linkTo || field.ngClick ) + && options.mode != 'lookup' && options.mode != 'select') { + html += ""; + } + + // close ngShow + html += (field.ngShow) ? "" : ""; + + return html += "\n"; + + } + }]) + .factory('SearchWidget', function() { return function(params) { // diff --git a/ansibleworks/ui/static/lib/ansible/list-generator.js b/ansibleworks/ui/static/lib/ansible/list-generator.js index 7bc5079f63..4b8d524fb4 100644 --- a/ansibleworks/ui/static/lib/ansible/list-generator.js +++ b/ansibleworks/ui/static/lib/ansible/list-generator.js @@ -8,47 +8,18 @@ */ angular.module('ListGenerator', ['GeneratorHelpers']) - .factory('GenerateList', [ '$location', '$compile', '$rootScope', 'SearchWidget', 'PaginateWidget', - function($location, $compile, $rootScope, SearchWidget, PaginateWidget) { + .factory('GenerateList', [ '$location', '$compile', '$rootScope', 'SearchWidget', 'PaginateWidget', 'Attr', 'Icon', + 'Column', + function($location, $compile, $rootScope, SearchWidget, PaginateWidget, Attr, Icon, Column) { return { setList: function(list) { this.list = list; }, - attr: function(obj, key) { - var result; - switch (key) { - case 'ngClick': - result = "ng-click=\"" + obj[key] + "\" "; - break; - case 'ngClass': - result = "ng-class=\"" + obj[key] + "\" "; - break; - case 'ngDisabled': - result = "ng-disabled=\"" + obj[key] + "\" "; - break; - case 'ngBind': - result = "ng-bind=\"" + obj[key] + "\" "; - break; - case 'ngShow': - result = "ng-show=\"" + obj[key] + "\" "; - break; - case 'ngHide': - result = "ng-hide=\"" + obj[key] + "\" "; - break; - case 'awToolTip': - result = "aw-tool-tip=\"" + obj[key] + "\" "; - break; - default: - result = key + "=\"" + obj[key] + "\" "; - } - return result; - }, + attr: Attr, - icon: function(icon) { - return " "; - }, + icon: Icon, has: function(key) { return (this.form[key] && this.form[key] != null && this.form[key] != undefined) ? true : false; @@ -221,63 +192,7 @@ angular.module('ListGenerator', ['GeneratorHelpers']) base = base.replace(/^\//,''); for (fld in list.fields) { cnt++; - html += "" : ""; - - // Start the Link - if ((list.fields[fld].key || list.fields[fld].link || list.fields[fld].linkTo || list.fields[fld].ngClick ) - && options.mode != 'lookup' && options.mode != 'select') { - if (list.fields[fld].linkTo) { - html += ""; - } - else if (list.fields[fld].ngClick) { - html += ""; - } - else { - html += ""; - } - } - - // Add icon: - if (list.fields[fld].ngShowIcon) { - html += " "; - } - else { - html += this.icon(list.fields[fld].icon) + " "; - } - - // Add data binds - if (list.fields[fld].showValue == undefined || list.fields[fld].showValue == true) { - if (list.fields[fld].ngBind) { - html += "{{ " + list.fields[fld].ngBind + " }}"; - } - else { - html += "{{" + list.iterator + "." + fld + "}}"; - } - } - - // Add additional text: - if (list.fields[fld].text) { - html += list.fields[fld].text; - } - - // close the link - if ((list.fields[fld].key || list.fields[fld].link || list.fields[fld].linkTo || list.fields[fld].ngClick ) - && options.mode != 'lookup' && options.mode != 'select') { - html += ""; - } - - // close ngShow - html += (list.fields[fld].ngShow) ? "" : ""; - - html += "\n"; + html += Column({ list: list, fld: fld, options: options, base: base }); } if (options.mode == 'select' ) {