/********************************************* * Copyright (c) 2013 AnsibleWorks, Inc. * * GeneratorHelpers * * Functions shared between FormGenerator and ListGenerator * */ 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) { // // Generate search widget // var iterator = params.iterator; var form = params.template; var useMini = params.mini; var label = (params.label) ? params.label : null; var html= ''; html += "
\n"; html += (label) ? "" : ""; html += "
\n"; html += "
\n"; html += "\n"; html += "
    \n"; for ( var fld in form.fields) { if (form.fields[fld].notSearchable == undefined || form.fields[fld].notSearchable == false) { html += "
  • " + form.fields[fld].label + "
  • \n"; } } html += "
\n"; html += "
\n"; html += "\n"; html += "\n"; html += "
\n"; html += "\n"; html += "\n"; html += "
\n"; html += "
\n"; html += "
\n"; html += "
\n"; return html; } }) .factory('PaginateWidget', function() { return function(params) { var set = params.set; var iterator = params.iterator; var useMini = params.mini; var mode = (params.mode) ? params.mode : null; var html = ''; if (mode == 'lookup') { html += "
\n"; html += "
\n"; html += "\n"; html += "\n"; if (mode != 'lookup') { html += "\n"; html += "\n"; } html += "
\n"; html += "\n"; html += "
\n"; return html; } });