This repository has been archived by the owner on Jun 23, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathsupler.min.js
2 lines (2 loc) · 36.8 KB
/
supler.min.js
1
2
var Supler;!function(a){var b=function(){function a(){}return a.STRING="string",a.INTEGER="integer",a.FLOAT="float",a.BOOLEAN="boolean",a.SELECT="select",a.SUBFORM="subform",a.STATIC="static",a.ACTION="action",a.META="meta",a}();a.FieldTypes=b;var c=function(){function a(){}return a.FIELD_TYPE="supler:fieldType",a.MULTIPLE="supler:multiple",a.FIELD_NAME="supler:fieldName",a.VALIDATION_ID="supler:validationId",a.PATH="supler:path",a}();a.SuplerAttributes=c;var d=function(){function a(){}return a.META="supler_meta",a}();a.FormSections=d}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a,b,c,d,e){this.renderOptionsGetter=a,this.i18n=b,this.validatorFnFactories=c,this.fieldsOptions=d,this.fieldOrder=e,this.idCounter=0}return b.prototype.renderForm=function(b,d,e){function f(b){var c=h[b];return c||a.Log.warn("Trying to access field not found in JSON: "+b),c}var g=this;void 0===e&&(e=new a.FormElementDictionary);var h={};d.fields.forEach(function(a){h[a.name]=a});var i=this.fieldOrder||d.fieldOrder,j="";return i.forEach(function(a){j+=g.row(a.map(f),e,g.renderOptionsGetter.defaultRenderOptions())}),this.verifyAllFieldsDisplayed(i,d.fields.map(function(a){return a.name})),new c(this.generateMeta(b)+this.renderOptionsGetter.defaultRenderOptions().renderForm(j),e)},b.prototype.verifyAllFieldsDisplayed=function(b,c){var d=[];b.forEach(function(a){return a.forEach(function(a){return d.push(a)})});var e=a.Util.arrayDifference(c,d);e.length>0&&a.Log.warn("There are fields sent from the server that were not shown on the form: ["+e+"]")},b.prototype.generateMeta=function(b){if(b){var c='<span class="supler_meta" style="display: none; visibility: hidden">\n';return a.Util.foreach(b,function(b,d){var e={type:"hidden",value:d};e[a.SuplerAttributes.FIELD_TYPE]=a.FieldTypes.META,e[a.SuplerAttributes.FIELD_NAME]=b,c+=a.HtmlUtil.renderTag("input",e)+"\n"}),c+"</span>\n"}return""},b.prototype.row=function(a,b,c){var d=this,e="";return a.forEach(function(c){e+=d.fieldFromJson(c,b,!1,a.length)}),c.renderRow(e)},b.prototype.fieldFromJson=function(b,c,d,e){var f=this.nextId(),g=this.nextId(),h=new a.FieldData(f,g,b,this.labelFor(b.label),e),i=this.fieldsOptions.forFieldData(h);i&&i.renderHint&&(h=h.withRenderHintOverride(i.renderHint));var j=this.fieldHtmlFromJson(h,c,d);return j?(c.getElement(f).validator=new a.ElementValidator(this.fieldValidatorFns(h),h.validate.required,b.empty_value),j):null},b.prototype.fieldValidatorFns=function(b){var c=this,d=[],e=this.validatorFnFactories["type_"+b.type];e&&d.push(e.apply(this));var f=b.validate;return a.Util.foreach(f,function(a,e){c.validatorFnFactories[a]&&d.push(c.validatorFnFactories[a](e,b.json))}),d},b.prototype.fieldHtmlFromJson=function(b,c,d){var e=this.renderOptionsGetter.forField(b.path,b.type,b.getRenderHintName()),f=a.Util.copyProperties({id:b.id,name:b.path,"supler:fieldName":b.name,"supler:fieldType":b.type,"supler:multiple":b.multiple,"supler:validationId":b.validationId,"supler:path":b.path},e.additionalFieldOptions());switch(b.enabled||(f.disabled=!0),b.type){case a.FieldTypes.BOOLEAN:return this.booleanFieldFromJson(e,b,f,d);case a.FieldTypes.SELECT:return this.selectFieldFromJson(e,b,f,d);case a.FieldTypes.SUBFORM:return this.subformFieldFromJson(e,b,c);case a.FieldTypes.STATIC:return this.staticFieldFromJson(e,b,d);case a.FieldTypes.ACTION:return this.actionFieldFromJson(e,b,f,c,d);default:return this.textFieldFromJson(e,b,f,d)}},b.prototype.textFieldFromJson=function(b,c,d,e){if("textarea"===c.getRenderHintName()){var f=c.getRenderHint(),g=a.Util.copyProperties({rows:f.rows,cols:f.cols},d);return b.renderTextareaField(c,g,e)}return"hidden"===c.getRenderHintName()?b.renderHiddenField(c,d,e):"date"===c.getRenderHintName()?b.renderDateField(c,d,e):b.renderTextField(c,d,e)},b.prototype.booleanFieldFromJson=function(b,c,d,e){var f=[new a.SelectValue("0",this.i18n.label_boolean_false()),new a.SelectValue("1",this.i18n.label_boolean_true())];return c.value=c.value?"1":"0",b.renderSingleChoiceRadioField(c,f,this.checkableContainerOptions(c.id,d),d,e)},b.prototype.selectFieldFromJson=function(b,c,d,e){var f=this,g=c.json.possible_values.map(function(b){return new a.SelectValue(b.id,f.labelFor(b.label))}),h=this.checkableContainerOptions(c.id,d);if(c.multiple)return b.renderMultiChoiceCheckboxField(c,g,h,d,e);var i=c.json.validate&&c.json.validate.required,j=c.value===c.json.empty_value,k="radio"===c.getRenderHintName();return k||i&&!j||(g=[new a.SelectValue(null,"")].concat(g)),k?b.renderSingleChoiceRadioField(c,g,h,d,e):b.renderSingleChoiceSelectField(c,g,h,d,e)},b.prototype.checkableContainerOptions=function(b,c){return{id:b,"supler:validationId":c[a.SuplerAttributes.VALIDATION_ID],"supler:path":c[a.SuplerAttributes.PATH]}},b.prototype.subformFieldFromJson=function(b,c,d){var e,f=this,g="",h={"supler:fieldType":a.FieldTypes.SUBFORM,"supler:fieldName":c.name,"supler:multiple":c.multiple};if(e="undefined"!=typeof c.value?c.multiple?c.value:[c.value]:[],this.propagateDisabled(c,e),"list"===c.getRenderHintName())for(var i in e){var j=this.renderForm(null,e[i],d);g+=b.renderSubformListElement(j.html,h)}else{for(var k=this.getTableHeaderLabels(c.json),l=[],m=0;m<e.length;m++){var n=0;l[m]=[];var o=e[m].fields;a.Util.foreach(o,function(a,b){l[m][n]=f.fieldFromJson(b,d,!0,-1),n+=1})}g+=b.renderSubformTable(k,l,h)}return b.renderSubformDecoration(g,c.label,c.id,c.name)},b.prototype.propagateDisabled=function(b,c){if(!b.enabled)for(var d in c)a.Util.foreach(c[d].fields,function(a,b){return b.enabled=!1})},b.prototype.staticFieldFromJson=function(a,b,c){var d=this.i18n.fromKeyAndParams(b.value.key,b.value.params);return d||(d="-"),b.value=d,a.renderStaticField(b,c)},b.prototype.actionFieldFromJson=function(b,c,d,e,f){return e.getElement(c.id).validationScope=a.ValidationScopeParser.fromJson(c.json.validation_scope),b.renderActionField(c,d,f)},b.prototype.getTableHeaderLabels=function(b){var c=this;if(b.value.length>0){var d=b.value[0],e=[];return a.Util.foreach(d.fields,function(b,d){d.type===a.FieldTypes.ACTION?e.push(""):e.push(c.labelFor(d.label))}),e}return[]},b.prototype.labelFor=function(a){return this.i18n.fromKeyAndParams(a,[])},b.prototype.nextId=function(){return this.idCounter+=1,"id"+this.idCounter},b}();a.CreateFormFromJson=b;var c=function(){function a(a,b){this.html=a,this.formElementDictionary=b}return a}();a.RenderFormResult=c}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a){this.container=a,this.idxPattern=/([^\[]+)\[(\d+)\]/}return b.prototype.byPath=function(a){return this.insideByPath(this.container,a.split("."))},b.prototype.insideByPath=function(a,b){if(0===b.length)return a;var c=b.shift(),d=this.searchForElement(a,c);return d?this.insideByPath(d,b):null},b.prototype.searchForElement=function(b,c){for(var d=this.extractElementIdx(c),e=d.pathPart,f=d.elementIdx,g=[b];g.length>0;){var h=g.shift();if(h.getAttribute(a.SuplerAttributes.FIELD_NAME)===e){if(0===f)return h;f-=1}else for(var i=h.children,j=0;j<i.length;j++)g.push(i[j])}return null},b.prototype.extractElementIdx=function(a){var b=this.idxPattern.exec(a);return b&&b.length>=3?{pathPart:b[1],elementIdx:parseInt(b[2])}:{pathPart:a,elementIdx:0}},b}();a.ElementSearch=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(a,b,c,d,e,f){void 0===f&&(f=null),this.id=a,this.validationId=b,this.json=c,this.label=d,this.fieldsPerRow=e,this.renderHintOverride=f,this.name=c.name,this.value=c.value,this.path=c.path,this.multiple=c.multiple,this.type=c.type,this.enabled=c.enabled,this.validate=c.validate||{},this.description=c.description}return a.prototype.getRenderHint=function(){return this.renderHintOverride?this.renderHintOverride:this.json.render_hint},a.prototype.getRenderHintName=function(){return this.renderHintOverride?this.renderHintOverride.name:this.json.render_hint?this.json.render_hint.name:null},a.prototype.withRenderHintOverride=function(b){return new a(this.id,this.validationId,this.json,this.label,this.fieldsPerRow,b)},a}();a.FieldData=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(){}return a.prototype.matches=function(a,b,c){return!0},a}();a.AllFieldMatcher=b;var c=function(){function a(a,b){this.m1=a,this.m2=b}return a.prototype.matches=function(a,b,c){return this.m1.matches(a,b,c)&&this.m2.matches(a,b,c)},a}();a.CompositeFieldMatcher=c;var d=function(){function b(b){var c=b.split("[]");1===c.length?this.pathMatcher=new RegExp(a.Util.escapeRegExp(b)):this.pathMatcher=new RegExp(c.join("\\[\\d*\\]"))}return b.prototype.matches=function(a,b,c){return this.pathMatcher.test(a)},b}();a.PathFieldMatcher=d;var e=function(){function a(a){this.type=a}return a.prototype.matches=function(a,b,c){return this.type===b},a}();a.TypeFieldMatcher=e;var f=function(){function a(a){this.renderHintName=a}return a.prototype.matches=function(a,b,c){return this.renderHintName===c},a}();a.RenderHintFieldMatcher=f;var g=function(){function a(){}return a.parseMatcher=function(g){var h=new b;return g.hasAttribute(a.FIELD_PATH_MATCHER)&&(h=new c(h,new d(g.getAttribute(a.FIELD_PATH_MATCHER)))),g.hasAttribute(a.FIELD_TYPE_MATCHER)&&(h=new c(h,new e(g.getAttribute(a.FIELD_TYPE_MATCHER)))),g.hasAttribute(a.FIELD_RENDERHINT_MATCHER)&&(h=new c(h,new f(g.getAttribute(a.FIELD_RENDERHINT_MATCHER)))),h},a.FIELD_PATH_MATCHER="supler:fieldPath",a.FIELD_TYPE_MATCHER="supler:fieldType",a.FIELD_RENDERHINT_MATCHER="supler:fieldRenderHint",a}();a.FieldMatcherHtmlParser=g}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(b){var d=this;this.fieldOptions=[],this.RENDER_HINT_MATCHER_PREFIX="render_hint:",a.Util.foreach(b||{},function(b,e){var f;f=0===b.indexOf(d.RENDER_HINT_MATCHER_PREFIX)?new a.RenderHintFieldMatcher(b.substring(d.RENDER_HINT_MATCHER_PREFIX.length)):new a.PathFieldMatcher(b),d.fieldOptions.push(new c(f,e))})}return b.prototype.forFieldData=function(a){return this.forField(a.path,a.type,a.getRenderHintName())},b.prototype.forField=function(b,c,d){return a.Util.find(this.fieldOptions,function(a){return a.matcher.matches(b,c,d)})},b.prototype.forEach=function(a){this.fieldOptions.forEach(a)},b}();a.FieldsOptions=b;var c=function(){function a(a,b){this.matcher=a,b.render_hint&&("string"==typeof b.render_hint?this.renderHint={name:b.render_hint}:this.renderHint=b.render_hint),this.renderOptions=b.render_options,this.readValue=b.read_value}return a}();a.FieldOptions=c}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(){}return a}();a.FormElement=b;var c=function(){function c(){this.formElements=[]}return c.prototype.getElement=function(a){var c=this.formElements[a];return c||(c=new b,this.formElements[a]=c),c},c.prototype.foreach=function(b){a.Util.foreach(this.formElements,b)},c}();a.FormElementDictionary=c}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(){}return b.renderTagEscaped=function(a,c,d){return void 0===d&&(d=null),b._renderTag(a,c,d,!0)},b.renderTag=function(a,c,d){return void 0===d&&(d=null),b._renderTag(a,c,d,!1)},b._renderTag=function(a,c,d,e){void 0===e&&(e=!0);var f="<"+a+" ";return f+=b.renderAttrs(c),f+=">",d&&(f+=e?b.escapeForAttribute(d,!0):d),f+="</"+a+">"},b.renderAttrs=function(c){var d="";return a.Util.foreach(c,function(a,c){(c||0===c||""===c||c===!1)&&(d+=a+'="'+b.escapeForAttribute(c,!1)+'" ')}),d},b.addClass=function(a,b){-1===a.className.indexOf(b)&&(a.className=a.className+" "+b)},b.removeClass=function(a,b){a.className=a.className.replace(b,"")},b.escapeForAttribute=function(a,b){return b=b?" ":"\n",(""+a).replace(/&/g,"&").replace(/'/g,"'").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">").replace(/\r\n/g,b).replace(/[\r\n]/g,b)},b.findElementWithAttr=function(a,c){if(a.hasAttribute(c))return a;for(var d=a.children.length,e=0;d>e;e++){var f=a.children[e];if(f.tagName){var g=b.findElementWithAttr(f,c);if(g)return g}}throw"No element with attribute "+c+" found!"},b}();a.HtmlUtil=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(){}return a.prototype.fromKeyAndParams=function(a,b){var c=this[a];return c&&"function"==typeof c?c.apply(this,b):c?c:a},a.prototype.error_valueRequired=function(){return"Value is required"},a.prototype.error_number_ge=function(a){return"Must be greater or equal to "+a},a.prototype.error_number_gt=function(a){return"Must be greater than "+a},a.prototype.error_number_le=function(a){return"Must be less or equal to "+a},a.prototype.error_number_lt=function(a){return"Must be less than "+a},a.prototype.error_length_tooShort=function(a){return"Too short; minimum length: "+a},a.prototype.error_length_tooLong=function(a){return"Too long; maximum length: "+a},a.prototype.error_type_number=function(){return"Must be a number"},a.prototype.label_boolean_true=function(){return"Yes"},a.prototype.label_boolean_false=function(){return"No"},a}();a.I18n=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(){}return a.warn=function(a){console&&(console.warn?console.warn(a):console.log("[WARN]"+a))},a.info=function(a){console&&console.log(a)},a}();a.Log=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a){this.fieldsOptions=a}return b.prototype.getValueFrom=function(b,c,d){void 0===c&&(c=null),void 0===d&&(d={});var e=b.getAttribute(a.SuplerAttributes.FIELD_TYPE);if(b.disabled)return d;if(e){var f=this.fieldsOptions.forField(b.getAttribute("name"),e,null),g=b.getAttribute(a.SuplerAttributes.FIELD_NAME),h="true"===b.getAttribute(a.SuplerAttributes.MULTIPLE);if(f&&f.readValue){var i=f.readValue(b);this.appendFieldValue(d,g,i,h)}else this.getValueDefault(b,e,g,h,c,d)}else b.children.length>0&&this.getValueFromChildren(b,c,d);return d},b.prototype.getValueDefault=function(b,c,d,e,f,g){switch(c){case a.FieldTypes.STRING:this.appendFieldValue(g,d,this.getElementValue(b),e);break;case a.FieldTypes.INTEGER:this.appendFieldValue(g,d,this.parseIntOrNull(this.getElementValue(b)),e);break;case a.FieldTypes.FLOAT:this.appendFieldValue(g,d,this.parseFloatOrNull(this.getElementValue(b)),e);break;case a.FieldTypes.SELECT:this.appendFieldValue(g,d,this.getElementValue(b),e);break;case a.FieldTypes.BOOLEAN:this.appendFieldValue(g,d,this.parseBooleanOrNull(this.getElementValue(b)),e);break;case a.FieldTypes.ACTION:b.id===f&&this.appendFieldValue(g,d,!0,!1);break;case a.FieldTypes.SUBFORM:d=b.getAttribute(a.SuplerAttributes.FIELD_NAME);var h=this.getValueFromChildren(b,f,{});this.appendFieldValue(g,d,h,e);break;case a.FieldTypes.META:this.appendMetaValue(g,d,this.getElementValue(b));break;default:throw new Error("Unknown type: "+c+", cannot read value!")}},b.prototype.getValueFromChildren=function(a,b,c){for(var d=a.children,e=0;e<d.length;e++)this.getValueFrom(d[e],b,c);return c},b.prototype.getElementValue=function(a){if("radio"!==a.type&&"checkbox"!==a.type||a.checked){if("SELECT"===a.nodeName){var b=a.options[a.selectedIndex];return b.hasAttribute("value")?b.value:null}return a.value}return null},b.prototype.appendFieldValue=function(a,b,c,d){d?(a[b]=a[b]||[],null!==c&&a[b].push(c)):(null===a[b]||"undefined"==typeof a[b])&&(a[b]=c)},b.prototype.appendMetaValue=function(b,c,d){var e;(e=b[a.FormSections.META])||(b[a.FormSections.META]=e={}),e[c]=d},b.prototype.parseIntOrNull=function(a){var b=parseInt(a);return isNaN(b)?null:b},b.prototype.parseFloatOrNull=function(a){var b=parseFloat(a);return isNaN(b)?null:b},b.prototype.parseBooleanOrNull=function(a){return null===a?null:"1"===a},b}();a.ReadFormValues=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(){}return b.prototype.renderForm=function(b){return a.HtmlUtil.renderTag("div",{"class":"container-fluid"},b)},b.prototype.renderRow=function(b){return a.HtmlUtil.renderTag("div",{"class":"row"},b)},b.prototype.renderTextField=function(a,b,c){var d=this.inputTypeFor(a);return this.renderField(this.renderHtmlInput(d,a.value,b),a,c)},b.prototype.renderDateField=function(a,b,c){var d=this.addDatePickerOptions(b);return this.renderTextField(a,d,c)},b.prototype.addDatePickerOptions=function(a){var b=a;return b||(b={}),b["class"]?b["class"]+=" datepicker":b["class"]="datepicker",b["data-date-format"]="yyyy-mm-dd",b["data-provide"]="datepicker",b},b.prototype.renderHiddenField=function(a,b,c){return this.renderHiddenFormGroup(this.renderHtmlInput("hidden",a.value,b))},b.prototype.renderTextareaField=function(a,b,c){return this.renderField(this.renderHtmlTextarea(a.value,b),a,c)},b.prototype.renderStaticField=function(a,b){return this.renderField(this.renderStaticText(a.value),a,b)},b.prototype.renderStaticText=function(b){return a.HtmlUtil.renderTagEscaped("div",{"class":"form-control-static"},b)},b.prototype.renderMultiChoiceCheckboxField=function(a,b,c,d,e){return this.renderField(this.renderHtmlCheckboxes(a.value,b,c,d),a,e)},b.prototype.renderMultiChoiceSelectField=function(a,b,c,d,e){return""},b.prototype.renderSingleChoiceRadioField=function(a,b,c,d,e){return this.renderField(this.renderHtmlRadios(a.value,b,c,d),a,e)},b.prototype.renderSingleChoiceSelectField=function(a,b,c,d,e){return this.renderField(this.renderHtmlSelect(a.value,b,d),a,e)},b.prototype.renderActionField=function(b,c,d){var e=a.Util.copyObject(b);return e.label="",this.renderField(this.renderHtmlButton(b.label,c),e,d)},b.prototype.renderField=function(b,c,d){var e,f;d?(e="",f=""):(e=this.renderLabel(c.id,c.label),f=this.renderDescription(c.description));var g=e+"\n"+b+"\n"+f+"\n"+this.renderValidation(c.validationId)+"\n";return a.HtmlUtil.renderTag("div",{"class":"form-group"+this.addColumnWidthClass(c)},g)},b.prototype.addColumnWidthClass=function(a){return a.fieldsPerRow>0?" col-md-"+(a.fieldsPerRow>=12?1:12/a.fieldsPerRow):""},b.prototype.renderHiddenFormGroup=function(b){return a.HtmlUtil.renderTag("span",{"class":"hidden-form-group",style:"visibility: hidden; display: none"},b)},b.prototype.renderLabel=function(b,c){return a.HtmlUtil.renderTagEscaped("label",{"for":b},c)},b.prototype.renderDescription=function(b){return b?a.HtmlUtil.renderTagEscaped("p",{"class":"help-block"},b):""},b.prototype.renderValidation=function(b){return a.HtmlUtil.renderTagEscaped("div",{"class":"text-danger",id:b})},b.prototype.renderSubformDecoration=function(b,c,d,e){var f="\n";return f+=a.HtmlUtil.renderTagEscaped("legend",{},c),f+=b,a.HtmlUtil.renderTag("fieldset",{id:d},f)},b.prototype.renderSubformListElement=function(b,c){var d=a.Util.copyProperties({"class":"well"},c);return a.HtmlUtil.renderTag("div",d,b)},b.prototype.renderSubformTable=function(b,c,d){var e=this.renderSubformTableHeader(b);return e+=this.renderSubformTableBody(c,d),a.HtmlUtil.renderTag("table",{"class":"table"},e)},b.prototype.renderSubformTableHeader=function(b){var c="";return b.forEach(function(b){return c+=a.HtmlUtil.renderTagEscaped("th",{},b)}),a.HtmlUtil.renderTag("tr",{},c)},b.prototype.renderSubformTableBody=function(b,c){for(var d="",e=0;e<b.length;e++){for(var f=b[e],g="",h=0;h<f.length;h++)g+=a.HtmlUtil.renderTag("td",{},f[h]);d+=a.HtmlUtil.renderTag("tr",c,g)+"\n"}return d},b.prototype.renderHtmlInput=function(b,c,d){var e=a.Util.copyProperties({type:b,value:c},d);return a.HtmlUtil.renderTag("input",e)},b.prototype.renderHtmlSelect=function(b,c,d){var e="";a.Util.foreach(c,function(c,d){var f={value:d.id};d.id===b&&(f.selected="selected"),e+=a.HtmlUtil.renderTagEscaped("option",f,d.label)});var f=a.HtmlUtil.renderTag("select",d,e);return f+="\n"},b.prototype.renderHtmlRadios=function(a,b,c,d){return this.renderCheckable("radio",b,c,d,function(b){return b.id===a})},b.prototype.renderHtmlCheckboxes=function(a,b,c,d){return this.renderCheckable("checkbox",b,c,d,function(b){return a.indexOf(b.id)>=0})},b.prototype.renderHtmlTextarea=function(b,c){return a.HtmlUtil.renderTagEscaped("textarea",c,b)},b.prototype.renderHtmlButton=function(b,c){var d=a.Util.copyProperties({type:"button"},c);return d["class"]=d["class"].replace("form-control","btn btn-default"),a.HtmlUtil.renderTagEscaped("button",d,b)},b.prototype.renderCheckable=function(b,c,d,e,f){var g=this,h="";return a.Util.foreach(c,function(c,i){var j=a.Util.copyProperties({},e);j["class"]=j["class"].replace("form-control",""),f(i)&&(j.checked="checked"),j.id=d.id+"."+i.id;var k=g.renderHtmlInput(b,i.id,j);k+=a.HtmlUtil.renderTagEscaped("span",{},i.label);var l=a.HtmlUtil.renderTag("label",{},k);h+=a.HtmlUtil.renderTag("div",{"class":b},l)}),a.HtmlUtil.renderTag("span",d,h)},b.prototype.additionalFieldOptions=function(){return{"class":"form-control"}},b.prototype.inputTypeFor=function(b){switch(b.type){case a.FieldTypes.INTEGER:return"number";case a.FieldTypes.FLOAT:return"number"}switch(b.getRenderHintName()){case"password":return"password"}return"text"},b}();a.Bootstrap3RenderOptions=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a,b,c,d,e){this.form=a,this.formElementDictionary=b,this.options=c,this.elementSearch=d,this.validation=e,this.refreshCounter=0,this.actionInProgress=!1}return b.prototype.attachRefreshListeners=function(){var a=this;this.forEachFormElement(function(b){"FIELDSET"!=b.nodeName&&(b.onchange=function(){return a.refreshListenerFor(b)})})},b.prototype.attachActionListeners=function(){var b=this;this.forEachFormElement(function(c){c.getAttribute(a.SuplerAttributes.FIELD_TYPE)===a.FieldTypes.ACTION&&(c.onclick=function(){return b.actionListenerFor(c)})})},b.prototype.refreshListenerFor=function(a){var b=this,c=this.validation.processClientSingle(a.id);if(!this.actionInProgress&&this.options.sendEnabled()&&!c){this.refreshCounter+=1;var d=this.refreshCounter,e=function(){return!b.actionInProgress&&d===b.refreshCounter};this.options.sendFormFunction(this.form.getValue(),this.sendSuccessFn(e,function(){}),function(){},!1,a)}},b.prototype.actionListenerFor=function(a){var b=this;if(!this.actionInProgress&&this.options.sendEnabled()){this.actionInProgress=!0;var c=a.id,d=!this.validation.processClientSingle(c)&&!this.validation.processClient(this.formElementDictionary.getElement(c).validationScope);d?this.options.sendFormFunction(this.form.getValue(c),this.sendSuccessFn(function(){return!0},function(){return b.actionCompleted()}),function(){return b.actionCompleted()},!0,a):this.actionCompleted()}},b.prototype.actionCompleted=function(){this.actionInProgress=!1},b.prototype.forEachFormElement=function(a){this.formElementDictionary.foreach(function(b,c){var d=document.getElementById(b);d&&a(d)})},b.prototype.sendSuccessFn=function(b,c){var d=this;return function(e){if(b()){var f,g=document.activeElement;if(g&&(f=g.getAttribute(a.SuplerAttributes.PATH)),d.form.render(e),f){var h=d.elementSearch.byPath(f);h&&h.focus()}}c()}},b}();a.SendController=b;var c=function(){function a(a){this.sendFormFunction=a.send_form_function}return a.prototype.sendEnabled=function(){return null!==this.sendFormFunction&&"undefined"!=typeof this.sendFormFunction},a}();a.SendControllerOptions=c}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(b,c){this.container=b,c=c||{},this.fieldsOptions=new a.FieldsOptions(c.field_options),this.i18n=new a.I18n,a.Util.copyProperties(this.i18n,c.i18n);var d=new a.Bootstrap3RenderOptions;a.Util.copyProperties(d,c.render_options),this.renderOptionsGetter=a.RenderOptionsGetter.parse(d,b,this.fieldsOptions,c.field_templates),this.validatorFnFactories=new a.ValidatorFnFactories(this.i18n),a.Util.copyProperties(this.validatorFnFactories,c.validators),this.validatorRenderOptions=new a.ValidatorRenderOptions,a.Util.copyProperties(this.validatorRenderOptions,c.validation_render),this.sendControllerOptions=new a.SendControllerOptions(c),this.elementSearch=new a.ElementSearch(b),this.afterRenderFn=c.after_render_function||function(){},this.customDataHandlerFn=c.custom_data_handler||function(a){},this.fieldOrder=c.field_order,this.readFormValues=new a.ReadFormValues(this.fieldsOptions)}return b.prototype.render=function(b){if(this.isSuplerForm(b)){var c=new a.CreateFormFromJson(this.renderOptionsGetter,this.i18n,this.validatorFnFactories,this.fieldsOptions,this.fieldOrder).renderForm(b[a.FormSections.META],b.main_form);this.container.innerHTML=c.html,this.initializeValidation(c.formElementDictionary,b);var d=new a.SendController(this,c.formElementDictionary,this.sendControllerOptions,this.elementSearch,this.validation);d.attachRefreshListeners(),d.attachActionListeners()}var e=this.getCustomData(b);e&&this.customDataHandlerFn(e),this.afterRenderFn()},b.prototype.initializeValidation=function(b,c){var d=this.validation;this.validation=new a.Validation(this.elementSearch,b,this.validatorRenderOptions,this.i18n,this.readFormValues),this.validation.processServer(c.errors),d&&this.validation.reprocessClientFrom(d)},b.prototype.getValue=function(a){return void 0===a&&(a=null),this.readFormValues.getValueFrom(this.container,a)},b.prototype.validate=function(b){return void 0===b&&(b=a.ValidateAll),this.validation.processClient(b)},b.prototype.getCustomData=function(a){return this.isSuplerForm(a)?a.custom_data:a},b.prototype.isSuplerForm=function(a){return a.is_supler_form===!0},b}();a.Form=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(){}return a.foreach=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(c,a[c])},a.copyProperties=function(b,c){return a.foreach(c,function(a,c){b[a]=c}),b},a.getSingleProperty=function(a){var b=null;for(var c in a)if(a.hasOwnProperty(c)){if(null!=b)throw"Multiple properties in "+a+", while a single property was expected!";b=a[c]}return b},a.find=function(a,b){for(var c=0;c<a.length;c++)if(b(a[c]))return a[c];return null},a.copyObject=function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},a.deepEqual=function(a,b){if(a===b)return!0;if(!(a instanceof Object&&a instanceof Object))return!1;if(a.constructor!==b.constructor)return!1;for(var c in a)if(a.hasOwnProperty(c)){if(!b.hasOwnProperty(c))return!1;if(a[c]!==b[c]){if("object"!=typeof a[c])return!1;if(!this.deepEqual(a[c],b[c]))return!1}}for(c in b)if(b.hasOwnProperty(c)&&!a.hasOwnProperty(c))return!1;return!0},a.escapeRegExp=function(a){return a.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")},a.arrayDifference=function(a,b){for(var c=[],d=[],e=0;e<a.length;e++)c[a[e]]=!0;for(var e=0;e<b.length;e++)c[b[e]]?delete c[b[e]]:c[b[e]]=!0;for(var f in c)d.push(f);return d},a}();a.Util=b;var c=function(){function a(a,b){this.id=a,this.label=b}return a}();a.SelectValue=c;var d=function(){function a(){}return a.fieldIsEmpty=function(a,b){return null===a||"undefined"==typeof a||0==a.length||a===b},a}();a.FieldUtil=d}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a){this.container=a}return b.prototype.parse=function(){for(var a=[],b=0;b<this.container.children.length;b++){var c=this.container.children[b];if(c.tagName){var d=this.parseElement(c);d&&a.push(d)}}return a},b.prototype.parseElement=function(b){var c=a.SingleTemplateParser.parseRenderOptionsModifier(b);return c?new a.RenderModifierWithMatcher(a.FieldMatcherHtmlParser.parseMatcher(b),c):null},b}();a.HTMLRenderTemplateParser=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a){this.fieldsOptions=a}return b.prototype.parse=function(){var b=[];return this.fieldsOptions.forEach(function(c){c.renderOptions&&b.push(new a.RenderModifierWithMatcher(c.matcher,a.CreateRenderOptionsModifier.withOverride(c.renderOptions)))}),b},b}();a.RenderModifiersFromFieldOptions=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a,b){this.fallbackRenderOptions=a,this.modifiers=b}return b.prototype.forField=function(a,b,c){for(var d=this.fallbackRenderOptions,e=0;e<this.modifiers.length;e++){var f=this.modifiers[e];f.matcher.matches(a,b,c)&&(d=f.renderOptionsModifier(d))}return d},b.prototype.defaultRenderOptions=function(){return this.fallbackRenderOptions},b.parse=function(c,d,e,f){var g=[];return g=g.concat(new a.RenderModifiersFromFieldOptions(e).parse()),g=g.concat(new a.HTMLRenderTemplateParser(d).parse()),(f||[]).forEach(function(b){var c=document.getElementById(b);c&&(g=g.concat(new a.HTMLRenderTemplateParser(c).parse()))}),new b(c,g)},b}();a.RenderOptionsGetter=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(){}return b.withOverride=function(b){var c=function(){a.Util.copyProperties(this,b)};return function(a){return c.prototype=a,new c}},b}();a.CreateRenderOptionsModifier=b;var c=function(){function a(a,b){this.matcher=a,this.renderOptionsModifier=b}return a}();a.RenderModifierWithMatcher=c}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(){}return b.parseRenderOptionsModifier=function(a){return a.hasAttribute(this.FIELD_TEMPLATE)?this.parseFieldTemplate(a):a.hasAttribute(this.FIELD_LABEL_TEMPLATE)?this.parseFieldLabelTemplate(a):a.hasAttribute(this.FIELD_DESCRIPTION_TEMPLATE)?this.parseFieldDescriptionTemplate(a):a.hasAttribute(this.FIELD_VALIDATION_TEMPLATE)?this.parseFieldValidationTemplate(a):a.hasAttribute(this.FIELD_INPUT_TEMPLATE)?this.parseFieldInputTemplate(a):null},b.parseFieldTemplate=function(b){var c=b.innerHTML;return a.CreateRenderOptionsModifier.withOverride({renderField:function(a,b,d){var e=d?"":this.renderLabel(b.id,b.label),f=d?"":this.renderDescription(b.description),g=this.renderValidation(b.validationId);return c.replace("{{suplerLabel}}",e).replace("{{suplerDescription}}",f).replace("{{suplerInput}}",a).replace("{{suplerValidation}}",g)}})},b.parseFieldLabelTemplate=function(b){var c=b.innerHTML;return a.CreateRenderOptionsModifier.withOverride({renderLabel:function(a,b){return c.replace("{{suplerLabelForId}}",a).replace("{{suplerLabelText}}",b)}})},b.parseFieldDescriptionTemplate=function(b){var c=b.innerHTML;return a.CreateRenderOptionsModifier.withOverride({renderDescription:function(a){return a?c.replace("{{suplerDescriptionText}}",a):""}})},b.parseFieldValidationTemplate=function(b){var c=b.innerHTML;return a.CreateRenderOptionsModifier.withOverride({renderValidation:function(a){return c.replace("{{suplerValidationId}}",a)}})},b.parseFieldInputTemplate=function(b){function c(a,b,c){var d=a.indexOf(h)>-1;null===c||d?delete b.value:b.value=c}function d(b,d,e){return c(b,d,e),b.replace(g,a.HtmlUtil.renderAttrs(d)).replace(g.toLowerCase(),a.HtmlUtil.renderAttrs(d)).replace(h,e).replace(h.toLowerCase(),e)}function e(c,e,g,h){var j=b.hasAttribute("super:singleInput")&&"true"===b.getAttribute("super:singleInput").toLowerCase();j&&(e=g);var k=a.HtmlUtil.findElementWithAttr(b,"supler:possibleValueTemplate").outerHTML,l="";return a.Util.foreach(c,function(c,e){var f=a.Util.copyProperties({},g);f.id=g.id+"."+e.id,h(e)&&(f[b.getAttribute("supler:selectedAttrName")]=b.getAttribute("supler:selectedAttrValue")),l+=d(k,f,e.id).replace("{{suplerFieldInputLabel}}",e.label)}),f.replace(i,a.HtmlUtil.renderAttrs(e)).replace(i.toLowerCase(),a.HtmlUtil.renderAttrs(e)).replace(k,l)}var f=b.innerHTML,g="{{suplerFieldInputAttrs}}",h="{{suplerFieldInputValue}}",i="{{suplerFieldInputContainerAttrs}}";return a.CreateRenderOptionsModifier.withOverride({additionalFieldOptions:function(){return{}},renderHtmlInput:function(b,c,e){var g=a.Util.copyProperties({type:b},e);return d(f,g,c)},renderHtmlTextarea:function(a,b){return d(f,b,a)},renderHtmlButton:function(a,b){return d(f,b,null)},renderHtmlSelect:function(a,b,c,d){return e(b,c,d,function(b){return b.id===a})},renderHtmlRadios:function(a,b,c,d){return e(b,c,d,function(b){return b.id===a})},renderHtmlCheckboxes:function(a,b,c,d){return e(b,c,d,function(b){return a.indexOf(b.id)>=0})}})},b.FIELD_TEMPLATE="supler:fieldTemplate",b.FIELD_LABEL_TEMPLATE="supler:fieldLabelTemplate",b.FIELD_DESCRIPTION_TEMPLATE="supler:fieldDescriptionTemplate",b.FIELD_VALIDATION_TEMPLATE="supler:fieldValidationTemplate",b.FIELD_INPUT_TEMPLATE="supler:fieldInputTemplate",b}();a.SingleTemplateParser=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a,b,c){
this.validatorFns=a,this.required=b,this.emptyValue=c}return b.prototype.validate=function(b,c){var d=a.Util.getSingleProperty(b.getValueFrom(c));if(this.required!==!0&&a.FieldUtil.fieldIsEmpty(d,this.emptyValue))return[];for(var e=[],f=0;f<this.validatorFns.length;f++){var g=this.validatorFns[f](d);g&&e.push(g)}return e},b}();a.ElementValidator=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a,b,d,e,f){this.elementSearch=a,this.formElementDictionary=b,this.validatorRenderOptions=d,this.i18n=e,this.readFormValues=f,this.addedValidations=new c}return b.prototype.processServer=function(a){if(this.removeAllValidationErrors(),a)for(var b=0;b<a.length;b++){var c=a[b],d=c.field_path,e=this.elementSearch.byPath(d),f=this.lookupValidationElement(e);this.appendValidation(this.i18n.fromKeyAndParams(c.error_key,c.error_params),f,e)}return a&&a.length>0},b.prototype.processClient=function(b){var c=this;this.removeAllValidationErrors();var d=!1;return this.formElementDictionary.foreach(function(e,f){var g=document.getElementById(e);g&&b.shouldValidate(g.getAttribute(a.SuplerAttributes.PATH))&&(d=c.doProcessClientSingle(g,f.validator)||d)}),d},b.prototype.processClientSingle=function(a){this.removeSingleValidationErrors(a);var b=this.formElementDictionary.getElement(a).validator,c=document.getElementById(a);return c&&b?this.doProcessClientSingle(c,b):!1},b.prototype.doProcessClientSingle=function(a,b){for(var c=!1,d=this.lookupValidationElement(a),e=b.validate(this.readFormValues,a),f=0;f<e.length;f++)this.appendValidation(e[f],d,a),c=!0;return c},b.prototype.lookupValidationElement=function(b){var c=b.getAttribute(a.SuplerAttributes.VALIDATION_ID);return document.getElementById(c)},b.prototype.removeAllValidationErrors=function(){a.Util.foreach(this.addedValidations.byId,function(a,b){b.remove()}),this.addedValidations=new c},b.prototype.removeSingleValidationErrors=function(a){var b=this.addedValidations.byId[a];b&&(b.remove(),delete this.addedValidations.byId[a],delete this.addedValidations.byPath[b.formElementPath()])},b.prototype.appendValidation=function(a,b,c){var e;this.addedValidations.byId.hasOwnProperty(c.id)?e=this.addedValidations.byId[c.id]:(e=new d(this.validatorRenderOptions,this.readFormValues,c,b),this.addedValidations.byId[c.id]=e,this.addedValidations.byPath[e.formElementPath()]=e),e.addText(a)&&this.validatorRenderOptions.appendValidation(a,b,c)},b.prototype.reprocessClientFrom=function(b){var c=this;a.Util.foreach(b.addedValidations.byPath,function(b,d){if(!c.addedValidations.byPath.hasOwnProperty(b)){var e=c.elementSearch.byPath(b);e&&a.Util.deepEqual(d.invalidValue,c.readFormValues.getValueFrom(e))&&c.processClientSingle(e.id)}})},b}();a.Validation=b;var c=function(){function a(){this.byId={},this.byPath={}}return a}(),d=function(){function b(a,b,c,d){this.validatorRenderOptions=a,this.readFormValues=b,this.formElement=c,this.validationElement=d,this.texts=[],this.invalidValue=this.readFormValues.getValueFrom(c)}return b.prototype.addText=function(a){return-1===this.texts.indexOf(a)?(this.texts.push(a),!0):!1},b.prototype.formElementPath=function(){return this.formElement.getAttribute(a.SuplerAttributes.PATH)},b.prototype.remove=function(){this.validatorRenderOptions.removeValidation(this.validationElement,this.formElement)},b}()}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function a(){}return a.prototype.shouldValidate=function(a){return!0},a}();a.ValidateAll=new b;var c=function(){function a(){}return a.prototype.shouldValidate=function(a){return!1},a}();a.ValidateNone=new c;var d=function(){function a(a){this.rootPath=a}return a.prototype.shouldValidate=function(a){return a&&(a===this.rootPath||0===a.indexOf(this.rootPath+".")||0===a.indexOf(this.rootPath+"["))},a}();a.ValidateInPath=d;var e=function(){function b(){}return b.fromJson=function(b){switch(b.name){case"none":return a.ValidateNone;case"all":return a.ValidateAll;case"path":return new d(b.path);default:return a.ValidateNone}},b}();a.ValidationScopeParser=e}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(a){this.i18n=a}return b.prototype.required=function(b,c){var d=this;return function(e){return b===!0&&a.FieldUtil.fieldIsEmpty(e,c.empty_value)?d.i18n.error_valueRequired():null}},b.prototype.ge=function(a){var b=this;return function(c){return parseFloat(c)>=a?null:b.i18n.error_number_ge(a)}},b.prototype.gt=function(a){var b=this;return function(c){return parseFloat(c)>a?null:b.i18n.error_number_gt(a)}},b.prototype.le=function(a){var b=this;return function(c){return parseFloat(c)<=a?null:b.i18n.error_number_le(a)}},b.prototype.lt=function(a){var b=this;return function(c){return parseFloat(c)<a?null:b.i18n.error_number_lt(a)}},b.prototype.min_length=function(a){var b=this;return function(c){return c.length>=a?null:b.i18n.error_length_tooShort(a)}},b.prototype.max_length=function(a){var b=this;return function(c){return c.length<=a?null:b.i18n.error_length_tooLong(a)}},b.prototype.type_integer=function(){var a=this;return function(b){return parseInt(b)===b?null:a.i18n.error_type_number()}},b.prototype.type_float=function(){var a=this;return function(b){return parseFloat(b)===b?null:a.i18n.error_type_number()}},b}();a.ValidatorFnFactories=b}(Supler||(Supler={}));var Supler;!function(a){var b=function(){function b(){}return b.prototype.appendValidation=function(b,c,d){var e=c.innerHTML;e&&e.length>0?c.innerHTML=e+"; "+b:c.innerHTML=b,a.HtmlUtil.addClass(d.parentElement,"has-error")},b.prototype.removeValidation=function(b,c){b.innerHTML="",a.HtmlUtil.removeClass(c.parentElement,"has-error")},b}();a.ValidatorRenderOptions=b}(Supler||(Supler={}));