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 += "
";
-
- // Add ngShow
- html += (rfield.ngShow) ? "" : "";
-
- // 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 += "\n";
+
+ // Add ngShow
+ html += (field.ngShow) ? "" : "";
+
+ // 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 += "\n";
-
- // Add ngShow
- html += (list.fields[fld].ngShow) ? "" : "";
-
- // 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' ) {