dhxmvp
Version:
A complete boilerplate for building online, offline and syncable MVP Single Page Applications using DHTMLX.
1 lines • 10.5 kB
JavaScript
!function(t){"use strict"}(window.$dhx=window.$dhx||{}),$dhx.dhtmlx=$dhx.dhtmlx||{grid:{formatData:function(t,e){var i=[];return"undefined"!=typeof e&&e.forEach(function(e,n,r){var a={};for(var d in e)e.hasOwnProperty(d)&&(a[d]=e[d]);i.push({id:a[t],data:a.data})}),{rows:i}}},formFields:[],formFields_tofill:[],formFields_filled:[],getFormFields:function(t){var e=$dhx.dhtmlx;return"undefined"!=typeof e.formFields[t]?e.formFields[t]:[]},prepareForm:function(t,e,i){var n=$dhx.dhtmlx;n.formFields[t]=[],n.formFields_tofill[t]=0,n._setFormFieldsToBind(e.template,t),n._setFormMasks(t,i)},unPrepareForm:function(t){var e=$dhx.dhtmlx;delete e.formFields[t],delete e.formFields_tofill[t],delete e.formFields_filled[t]},_setFormFieldsToBind:function(t,e,i){var n=$dhx.dhtmlx;try{for(var r=0;r<t.length;r++){t[r]=t[r]||{};var a=t[r];try{a.type=a.type||"button"}catch(d){}var l=a.type;if("newcolumn"!=l&&"settings"!=l&&"button"!=l){try{"undefined"==typeof n.formFields[e]&&(n.formFields[e]=[])}catch(d){}"block"==l?i?n._setFormFieldsToBind(a.list,e,!0):n._setFormFieldsToBind(a.list,e):"label"==l&&a.list?i?n._setFormFieldsToBind(a.list,e,!0):n._setFormFieldsToBind(a.list,e):"checkbox"==l&&a.list?i?(n.formFields[e].unshift(a),n.formFields_tofill[e]=n.formFields_tofill[e]+1,n._setFormFieldsToBind(a.list,e,!0)):(n.formFields[e].push(a),n.formFields_tofill[e]=n.formFields_tofill[e]+1,n._setFormFieldsToBind(a.list,e)):"fieldset"==l&&a.list?i?(n.formFields[e].unshift(a),n.formFields_tofill[e]=n.formFields_tofill[e]+1,n._setFormFieldsToBind(a.list,e,!0)):(n.formFields[e].push(a),n.formFields_tofill[e]=n.formFields_tofill[e]+1,n._setFormFieldsToBind(a.list,e)):(i?n.formFields[e].unshift(a):n.formFields[e].push(a),n.formFields_tofill[e]=n.formFields_tofill[e]+1)}}}catch(d){}},setCursor:function(){if(this.createTextRange){this.createTextRange();this.move("character",this.value.length),this.select()}else this.setSelectionRange&&this.setSelectionRange(this.value.length,this.value.length);this.focus()},inputIntegerHandler:function(t){$dhx.ui.form.input.mask.integer(this)},inputNumberHandler:function(t){$dhx.ui.form.input.mask.number(this)},inputCreditCardHandler:function(t){$dhx.ui.form.input.mask.credit_card(this)},inputUsPhoneHandler:function(t){$dhx.ui.form.input.mask.us_phone(this)},inputBrPhoneHandler:function(t){$dhx.ui.form.input.mask.br_phone(this)},inputExpirationDateHandler:function(t){$dhx.ui.form.input.mask.expiration_date(this)},inputTimeHandler:function(t){$dhx.ui.form.input.mask.time(this,t)},inputSSNHandler:function(t){$dhx.ui.form.input.mask.ssn(this)},inputCEPandler:function(t){$dhx.ui.form.input.mask.cep(this)},inputCPFandler:function(t){$dhx.ui.form.input.mask.cpf(this)},inputCNPJandler:function(t){$dhx.ui.form.input.mask.cnpj(this)},_setFormMasks:function(t,e){for(var i=$dhx.dhtmlx,n=0;n<i.formFields[t].length;n++){var r=i.formFields[t][n];if(r.name){var a,d,l,o=null;if(a=r.mask_to_use||"","undefined"==typeof r.type&&(r.type=""),l=r.type||"",d=r.name||"","input"==l)if("currency"==a){try{o=e.getInput(d).id}catch(s){o=e.getInput(d).getAttribute("id")}$dhx.ui.form.input.mask.currency(document.getElementById(o),{precision:2,separator:".",delimiter:",",unit:"",suffixUnit:"",zeroCents:!1}),e.getInput(d).addEventListener("keydown",i.setCursor),e.getInput(d).addEventListener("keyup",i.setCursor),e.getInput(d).addEventListener("click",i.setCursor),e.getInput(d).maxLength="34"}else if("can_currency"==a){try{o=e.getInput(d).id}catch(s){o=e.getInput(d).getAttribute("id")}$dhx.ui.form.input.mask.currency(document.getElementById(o),{precision:2,separator:".",delimiter:",",unit:"CAN ",suffixUnit:"",zeroCents:!1}),e.getInput(d).maxLength="34"}else if("br_currency"==a){try{o=e.getInput(d).id}catch(s){o=e.getInput(d).getAttribute("id")}$dhx.ui.form.input.mask.currency(document.getElementById(o),{precision:2,separator:",",delimiter:".",unit:"",suffixUnit:"",zeroCents:!1}),e.getInput(d).maxLength="34"}else"integer"==a?(e.getInput(d).addEventListener("keydown",i.inputIntegerHandler),e.getInput(d).maxLength="10"):"number"==a?e.getInput(d).addEventListener("keydown",i.inputNumberHandler):"credit_card"==a?(e.getInput(d).addEventListener("keydown",i.inputCreditCardHandler),e.getInput(d).maxLength="19"):"us_phone"==a?(e.getInput(d).addEventListener("keydown",i.inputUsPhoneHandler),e.getInput(d).maxLength="13"):"br_phone"==a?(e.getInput(d).addEventListener("keydown",i.inputBrPhoneHandler),e.getInput(d).maxLength="16"):"expiration_date"==a?(e.getInput(d).addEventListener("keydown",i.inputExpirationDateHandler),e.getInput(d).maxLength="5"):"cvv"==a?(e.getInput(d).addEventListener("keydown",i.inputIntegerHandler),e.getInput(d).maxLength="4"):"time"==a?(e.getInput(d).addEventListener("keydown",i.inputTimeHandler),e.getInput(d).maxLength="8"):"SSN"==a?(e.getInput(d).addEventListener("keydown",i.inputSSNHandler),e.getInput(d).maxLength="11"):"CEP"==a?(e.getInput(d).addEventListener("keydown",i.inputCEPHandler),e.getInput(d).maxLength="9"):"CPF"==a?(e.getInput(d).addEventListener("keydown",i.inputCPFHandler),e.getInput(d).maxLength="14"):"CNPJ"==a&&(e.getInput(d).addEventListener("keydown",i.inputCNPJandler),e.getInput(d).maxLength="18");else{if("calendar"!=l)continue;if("time"==a){var u=e.getCalendar(d);e.setCalendarDateFormat(d,"%H:%i:%s","%H:%i:%s"),u.showTime()}}}}},getFormItem:function(t,e){var i=$dhx.dhtmlx;if(void 0===i.formFields[e])return!1;for(var n=0;n<i.formFields[e].length;n++){var r=i.formFields[e][n];if(r.name==t)return r}return!1},getFormDataAsPayload:function(t,e){var i=($dhx.dhtmlx,e.getFormData()),n="";for(var r in i)n=n+r+"="+encodeURIComponent(i[r])+"&";return""===n?null:("&"==n.charAt(n.length-1)&&(n=n.substr(0,n.length-1)),n)},validateForm:function(t,e){var i,n=$dhx.dhtmlx;i=e.getFormData();for(var r in i)if(i.hasOwnProperty(r)){var a=n.getFormItem(r,t);if(!a)continue;if(a.name){var d,l,o,s,u;d=a.name,l=a.type||"",u=a.label||"";try{o=e.getInput(r).value}catch(m){if("btn2state"==l)o=e.isItemChecked(r);else if("checkbox"==l)o=e.isItemChecked(r)?1:0;else if("combo"==l){var h=e.getCombo(r);o=h.getSelectedValue()?h.getSelectedValue():h.getChecked().length>0?h.getChecked():""}else o=i[r]||""}s=a.validate||"";var g=s.toString().match("NotEmpty");if("NotEmpty"==g&&(o=o||"",o.toString().length<1))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_notEmpty(u)});var p=s.toString().match("Empty");if("Empty"==p&&"NotEmpty"!=g&&o.toString().length>0)return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_Empty(u)});var f=s.toString().match("ValidEmail");if("ValidEmail"==f&&o.length>0&&!/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/.test(o))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidEmail(u)});var x=s.toString().match("ValidInteger");if("ValidInteger"==x&&o.length>0&&!o.match(/^\d+$/))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidInteger(u)});var c=s.toString().match("ValidFloat");if("ValidFloat"==c&&o.length>0&&!o.match(/^\d+\.\d+$/))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidFloat(u)});var v=s.toString().match("ValidNumeric");if("ValidNumeric"==v&&o.length>0&&isNaN(o))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidNumeric(u)});var _=s.toString().match("ValidAplhaNumeric");if("ValidAplhaNumeric"==_&&o.length>0&&!o.match(/^[0-9a-z]+$/))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidAplhaNumeric(u)});var y=s.toString().match("ValidDatetime");if("ValidDatetime"==y&&o.length>0&&isNaN(Date.parse(o)))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidDatetime(u)});var F=s.toString().match("ValidDate");if("ValidDate"==F&&o.length>0&&isNaN(Date.parse(o)))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidDate(u)});var $=s.toString().match("ValidTime");if("ValidTime"==$&&o.length>0){var I=o.match(/^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/);if(null===I)return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidTime(u)});if("am"==o.toString().toLowerCase().match("am")||"pm"==o.toString().toLowerCase().match("pm")){if(o.split(":")[0]>12||o.split(":")[1].split(" ")[0]>59)return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidTime(u)})}else if(o.split(":")[0]>23||o.split(":")[1]>59)return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidTime(u)})}var E=s.toString().match("ValidCurrency");if("ValidCurrency"==E&&o.length>0&&(o.indexOf(",")!=-1&&(o=o.replace(/,/g,"")),!/^\d+(?:\.\d{0,2})$/.test(o)))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidCurrency(u)});var V=s.toString().match("ValidSSN");if("ValidSSN"==V&&o.length>0&&!o.match(/^\d{3}\-?\d{2}\-?\d{4}$/))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidSSN(u)});var b=s.toString().match("ValidExpirationdate");if("ValidExpirationdate"==b&&o.length>0){if(5!=o.length)return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidExpirationdate(u)});var k=o.split("/")[0],H=o.split("/")[1];if(isNaN(k)||isNaN(H))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidExpirationdate(u)});if(!(k>0&&k<13))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidExpirationdate(u)});if(!(H>0&&H<99))return $dhx.ui.form.setInputHighlighted(a,e),void dhtmlx.message({type:"error",text:$dhx.ui.language.text_labels.validation_ValidExpirationdate(u)})}}}return!0}};