UNPKG

big-head

Version:

A control panel generator for APIed-Piper

1,031 lines (974 loc) 78.7 kB
var iForm = function (SpaceSelector, ArrayForm, Options) { this.makeid = function (limit) { if (!limit) { limit = 10; } var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz_0123456789"; for (var i = 0; i < limit; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; }; this.HTML_ID = this.makeid(10); this.Space = SpaceSelector; this.ObjArray = ArrayForm; this.options = Options; this.selectors = []; this.drawForm = function () { var el = this; var options = el.options; var colorRange = '#4CAF50'; $('head').append('<style> .form-control-file { width: 100%; height: 39px; padding: 6px 12px; background-color: #fff; border: 1px solid #ccc; border-radius: 4px; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } label { font-weight: 700; display: inline-block;margin-bottom: 5px; } .form-control-error { border-color: #D0021B; } .form-text-error { color: #D0021B; } </style>'); if (options.colorRange && options.colorRange !== '') { colorRange = options.colorRange; } $('head').append('<style>.slider{-webkit-appearance: none; width: 100%; height: 15px; border-radius: 5px; background: #d3d3d3; outline: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}.slider:hover{opacity: 1;}.slider::-webkit-slider-thumb{-webkit-appearance: none; appearance: none; width: 25px; height: 25px; border-radius: 50%; background: ' + colorRange + '; cursor: pointer;}.slider::-moz-range-thumb{width: 25px; height: 25px; border-radius: 50%; background: ' + colorRange + '; cursor: pointer;}</style>'); var classs = ''; var action = ''; var method = ''; var enctype = ''; if (options.formClass && options.formClass !== '') { classs = options.formClass; } if (options.action && options.action !== '') { action = options.action; } if (options.formMethod && options.formMethod !== '') { method = options.formMethod; } if (options.enctype && options.enctype !== '') { enctype = options.enctype; } var CadForm = '<form action="' + action + '" id="' + el.HTML_ID + '" enctype="' + enctype + '" class="' + classs + '" method="' + method + '"> </form>'; $(this.Space).html(CadForm); $.each(el.ObjArray, function (i, item) { if (item.type) { var separator = ''; var elHTML_ID = el.makeid(7); el.ObjArray[i].lx_cm = elHTML_ID; el.selectors.push($('[lx_cm=' + elHTML_ID + ']')); var elClass = ''; var elId = ''; var elStyle = ''; var elAtrib = ''; var elLabel = ''; var elAst = ''; var elName = ''; var elPlaceholder = ''; var tooltip = ''; if (item.tooltip && item.tooltip !== '') { tooltip = '<span id="_tooltip' + item.lx_cm + '_" data-alignment="top" data-tooltip data-position="left" title="' + item.tooltip + '" ><i class="fa fa-fw fa-map-pin"></i></span>'; } if (item.placeholder && item.placeholder !== '') { elPlaceholder = item.placeholder; } if (item.class && item.class !== '') { elClass = item.class; } if (item.name && item.name !== '') { elName = item.name; } if (item.id && item.id !== '') { elId = item.id; } if (item.style && item.style !== '') { elStyle = item.style; } if (item.attrib && item.attrib !== '') { elAtrib = item.attrib; } if (item.label && item.label !== '') { elLabel = item.label; } if (el.options.separator && el.options.separator !== '') { separator = el.options.separator; } if (eval(item.mandatory)) { elAst = '<span style="white-space:nowrap !important;" id="' + elHTML_ID + '_Ast"> * </span>'; } switch (item.type) { /*Input type color*/ case 'range': var min = 0, max = 100; if (item.min) { min = item.min; } if (item.max) { max = item.max; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input max="' + max + '" min="' + min + '" lx_cm="' + elHTML_ID + '" type="range" name="' + elName + '" id="' + elId + '" class=" slider ' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type color*/ case 'color': $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" type="color" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style=" width: 50px; ' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; case 'time': $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" type="time" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type date*/ case 'date': $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" type="date" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type file*/ case 'file': var accept = ''; if (item.accept && item.accept !== '') { accept = item.accept; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" type="file" accept="' + accept + '" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type text*/ case 'text': var maxlength = ''; if (item.maxLength && item.maxLength !== '') { maxlength = item.maxLength; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" type="text" placeholder="' + elPlaceholder + '" maxlength="' + maxlength + '" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type text*/ case 'email': $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" type="email" placeholder="' + elPlaceholder + '" maxlength="' + maxlength + '" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type text*/ case 'textarea': var maxlength = ''; if (item.maxLength && item.maxLength !== '') { maxlength = item.maxLength; } var rows = ''; if (item.rows && item.rows !== '') { rows = item.rows; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<textarea lx_cm="' + elHTML_ID + '" placeholder="' + elPlaceholder + '" rows="' + rows + '" type="text" maxlength="' + maxlength + '" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '</textarea>' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type text*/ case 'select': var textSelect = 'Select an item ...'; if (el.options.textForSelect) { textSelect = el.options.textForSelect; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<select lx_cm="' + elHTML_ID + '" type="text" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' > ' + '<option value="-1"> ' + textSelect + '</option>' + '</select>' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); if (item.items) { $.each(item.items, function (j, jtem) { var value = j + 1; if (jtem.value && jtem.value !== '') { value = jtem.value; } $('[lx_cm="' + elHTML_ID + '"]').append('<option value="' + value + '" >' + jtem.text + '</option>'); }); } break; /*Input type radio*/ case 'radio': $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<div lx_cm="' + elHTML_ID + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' > ' + '</div>' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); if (item.items) { $.each(item.items, function (j, jtem) { var value = j + 1; var id = el.makeid(12); if (jtem.id && jtem.id) { id = jtem.id; } if (jtem.value && jtem.value !== '') { value = jtem.value; } var sep = ''; if (item.itemSepartor) { sep = item.itemSepartor; } $('[lx_cm="' + elHTML_ID + '"]').append(sep + '<input id="' + id + '" type="radio" name="' + item.name + '" value="' + value + '" checked=""> ' + jtem.text); }); } break; /*Input type checkbox*/ case 'checkbox': $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<div lx_cm="' + elHTML_ID + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' > ' + '</div>' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); if (item.items) { $.each(item.items, function (j, jtem) { var value = j + 1; var id = el.makeid(12); if (jtem.id && jtem.id) { id = jtem.id; } if (jtem.value && jtem.value !== '') { value = jtem.value; } var sep = ''; if (item.itemSepartor) { sep = item.itemSepartor; } $('[lx_cm="' + elHTML_ID + '"]').append(sep + '<input id="' + id + '" type="checkbox" name="' + item.name + '" value="' + value + '" > ' + jtem.text); }); } break; /*Input type password*/ case 'password': var maxlength = ''; if (item.maxLength && item.maxLength !== '') { maxlength = item.maxLength; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" autocomplete="off" type="password" placeholder="' + elPlaceholder + '" maxlength="' + maxlength + '" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; /*Input type number*/ case 'number': var maxlength = ''; if (item.maxLength && item.maxLength.toString() !== '') { maxlength = item.maxLength; } var max = ''; if (item.maxNumber && item.maxNumber.toString() !== '') { max = item.maxNumber; } var min = ''; if (item.minNumber && item.minNumber.toString() !== '') { min = item.minNumber; } $('#' + el.HTML_ID).append(separator + '<label class="form-text"> ' + elLabel + elAst + ': ' + tooltip + ' </label><br>' + '<input lx_cm="' + elHTML_ID + '" placeholder="' + elPlaceholder + '" min="' + min + '" max="' + max + '" type="number" maxlength="' + maxlength + '" name="' + elName + '" id="' + elId + '" class="' + elClass + '" style="' + elStyle + '" ' + elAtrib + ' >' + '<small id="' + elHTML_ID + '_mini" style="display: none;" class="form-text form-text-error" >Verifica la informaci&oacute;n</small>' ); break; default: console.warn('unrecognized type ' + item.type); break; } } else { console.warn('unset type for field no ' + i); } }); }; this.drawSubmit = function (value, classs, id, preventDefault) { var el = this; if (!id) { id = el.makeid(); } if (!classs) { classs = ''; } if (!value) { value = 'send'; } $('#' + el.HTML_ID).append('<br><input class="' + classs + '" type="submit" value="' + value + '" id="' + id + '">'); if (preventDefault === true) { $('#' + id).click(function (e) { e.preventDefault(); }); } } this.inicialize = function (F_er, F_) { var el = this; var options = el.options; var validTypes = ['checkbox', 'radio', 'range', 'time', 'date', 'color', 'email', 'file', 'text', 'textarea', 'select', 'password', 'number']; $.each(el.ObjArray, function (i, item) { item.errors = []; if (item.lx_cm && item.type && validTypes.includes(item.type) && item.options && item.options.validateOn) { var validateOn = item.options.validateOn; var skipUntilEndValidation = []; if (item.options.skipUntilEndValidation) { skipUntilEndValidation = item.options.skipUntilEndValidation; } var lx_cm = item.lx_cm; if (validateOn.includes('keyUp')) { $('[lx_cm="' + lx_cm + '"]').keyup(function () { el.resetField(item.lx_cm); var x = el.validations(el, item, skipUntilEndValidation); if (x.success === false) { if (F_er && $.isFunction(F_er)) { F_er(x.errors); } } }); } if (validateOn.includes('keyDown')) { $('[lx_cm="' + lx_cm + '"]').keydown(function () { el.resetField(item.lx_cm); var x = el.validations(el, item, skipUntilEndValidation); if (x.success === false) { if (F_er && $.isFunction(F_er)) { F_er(x.errors); } } }); } if (validateOn.includes('Change')) { $('[lx_cm="' + lx_cm + '"]').change(function () { el.resetField(item.lx_cm); var x = el.validations(el, item, skipUntilEndValidation); if (x.success === false) { if (F_er && $.isFunction(F_er)) { F_er(x.errors); } } }); } if (validateOn.includes('Click')) { $('[lx_cm="' + lx_cm + '"]').click(function () { el.resetField(item.lx_cm); var x = el.validations(el, item, skipUntilEndValidation); if (x.success === false) { if (F_er && $.isFunction(F_er)) { F_er(x.errors); } } }); } /*Forzar limites y cambio de estado */ $('[lx_cm="' + lx_cm + '"]').change(function () { var valueI = $('[lx_cm="' + lx_cm + '"]').val(); if (item.type === 'number' && valueI !== '' && item.numberOfDecimals && item.numberOfDecimals !== "") { if (Number(item.numberOfDecimals) === 0) { valueI = Math.trunc(el.CutDecimals(Number(valueI), item.numberOfDecimals), 0); } else { valueI = el.CutDecimals(Number(valueI), item.numberOfDecimals); } $('[lx_cm="' + lx_cm + '"]').val(valueI); } if (item.type === 'file' && item.accept && item.accept.toUpperCase().includes('PDF')) { el.extChanged(el, item); } if (item.type === 'file' && item.options.getDataAs && item.options.getDataAs !== '') { item.data = ''; el.chargeData(el, item, item.options.getDataAs); } else if (item.type === 'select' && item.options.getDataAs && item.options.getDataAs === 'text') { item.data = $('[lx_cm="' + lx_cm + '"] option:selected').text(); } else if (item.type === 'select' && item.options.getDataAs && item.options.getDataAs === 'value') { item.data = $('[lx_cm="' + lx_cm + '"]').val(); } else if (item.type !== 'file' && item.type !== 'select' && item.options.getDataAs && item.options.getDataAs === 'text') { item.data = $('[lx_cm="' + lx_cm + '"]').val(); } else { item.data = $('[lx_cm="' + lx_cm + '"]').val(); } }); $('[lx_cm="' + lx_cm + '"]').change(function () { if (item.type === 'text') { if (item.options && item.options.toUpperCase) { var txt = $('[lx_cm="' + lx_cm + '"]').val(); $('[lx_cm="' + lx_cm + '"]').val(txt.toUpperCase()); } if (item.options && item.options.toLowerCase) { var txt = $('[lx_cm="' + lx_cm + '"]').val(); $('[lx_cm="' + lx_cm + '"]').val(txt.toLowerCase()); } if (item.options && item.options.forceLimits && item.maxLength) { var txt = $('[lx_cm="' + lx_cm + '"]').val(); $('[lx_cm="' + lx_cm + '"]').val(txt.substring(1, Number(item.maxLength))); } } if (item.type === 'textarea') { if (item.options && item.options.toUpperCase) { var txt = $('[lx_cm="' + lx_cm + '"]').val(); $('[lx_cm="' + lx_cm + '"]').val(txt.toUpperCase()); } if (item.options && item.options.toLowerCase) { var txt = $('[lx_cm="' + lx_cm + '"]').val(); $('[lx_cm="' + lx_cm + '"]').val(txt.toLowerCase()); } } if (item.type === 'number') { if (item.options && item.options.forceLimits && item.maxLength) { var txt = $('[lx_cm="' + lx_cm + '"]').val(); $('[lx_cm="' + lx_cm + '"]').val(txt.substring(0, Number(item.maxLength))); } } }); if (item.type === 'email' || item.type === 'password' || item.type === 'text') { if (item.options && item.options.disableCopyPaste) { el.disableCopyPaste(item.lx_cm); } } } try { $('#_tooltip' + item.lx_cm + '_').tooltip(); } catch (e) { setTimeout(function () { try { $('#_tooltip' + item.lx_cm + '_').tooltip(); } catch (e) { try { var selector = $('#_tooltip' + item.lx_cm + '_'); new Foundation.Tooltip(selector, {}); } catch (e) { try { var selector = $('#_tooltip' + item.lx_cm + '_'); new Foundation.Tooltip(selector, {}); } catch (e) { } } } }, 1000 * 2); } }); if (F_ && $.isFunction(F_)) { F_(); } }; this.getData = function (_element_, getAs) { var el = this; if (!getAs) { getAs = 'value'; } var lx_cm = ''; var No_elem = -1; if ((_element_ && isNaN(_element_) && _element_.includes('radio:')) || (_element_ && isNaN(_element_) && _element_.includes('checkbox:'))) { if (_element_.includes('checkbox')) { _element_ = _element_.replace('checkbox:', ''); var arrInt = []; $("input[name='" + _element_ + "']:checked").each(function () { arrInt.push($(this).val()); }) return arrInt; } else { _element_ = _element_.replace('radio:', ''); return $("input[name='" + _element_ + "']:checked").val(); } } else if ((_element_ && isNaN(_element_) && _element_.includes('id:')) || (_element_ && isNaN(_element_) && _element_.includes('class:'))) { _element_ = _element_.replace('id:', '#'); _element_ = _element_.replace('class', '.'); lx_cm = $(_element_).attr('lx_cm'); No_elem = el.findOutIn(lx_cm, el); } else if (_element_ && !isNaN(_element_)) { if (_element_ > el.ObjArray.length) { console.warn('No se encuentra el elemento solicitado'); } else { lx_cm = el.ObjArray[_element_ - 1].lx_cm; No_elem = _element_; } } if (lx_cm && No_elem !== -1 && el.ObjArray[No_elem].type === 'select') { if (getAs === 'text') { return $("[lx_cm='" + lx_cm + "'] option:selected").text(); } else if (getAs === 'value') { return $("[lx_cm='" + lx_cm + "']").val(); } } else if (lx_cm && No_elem !== -1 && el.ObjArray[No_elem].type.trim().toLowerCase() === 'file') { if (getAs === 'content') { if (el.ObjArray[No_elem].data) { return el.ObjArray[No_elem].data; } return ''; } else if (getAs === 'value') { return $("[lx_cm='" + lx_cm + "']").val().replace('C:\\fakepath\\', ''); } else if (getAs === 'ext') { var x = $("[lx_cm='" + lx_cm + "']").val().replace('C:\\fakepath\\', ''); if (x !== '') { x = x.split('.'); return '.' + x[1]; } else { return ''; } } else if (getAs === 'namefile') { var x = $("[lx_cm='" + lx_cm + "']").val().replace('C:\\fakepath\\', ''); if (x !== '') { x = x.split('.'); return x[0]; } else { return ''; } } } else if (lx_cm && el.ObjArray[No_elem].type !== 'file' && el.ObjArray[No_elem].type !== 'select') { return $("[lx_cm='" + lx_cm + "']").val(); } else { var arrData = []; $.each(el.ObjArray, function (i, item) { if (item.type === 'checkbox' && item.name && item.name !== '') { var arrInt = []; $("input[name='" + item.name + "']:checked").each(function () { arrInt.push($(this).val()); }) arrData.push(arrInt); } else if (item.type === 'radio' && item.name && item.name !== '') { arrData.push($("input[name='" + item.name + "']:checked").val()); } else if (item.type === 'file' && item.data) { arrData.push(item.data); } else if (item.type === 'file' && !item.data) { arrData.push($('[lx_cm="' + item.lx_cm + '"]').val()); } else if (item.type === 'checkbox' && item.name && item.name !== '') { arrData.push($("input[name='" + item.name + "']:checked").val()); } else if (item.type === 'radio' && item.name && item.name !== '') { arrData.push($("input[name='" + item.name + "']:checked").val()); } else { arrData.push($('[lx_cm="' + item.lx_cm + '"]').val()); } }); return arrData; } return false; }; this.setData = function (_element_, val) { var el = this; if ((_element_ && isNaN(_element_) && _element_.includes('radioid:')) || (_element_ && isNaN(_element_) && _element_.includes('checkboxid:'))) { _element_ = _element_.replace('radioid:', ''); _element_ = _element_.replace('checkboxid:', ''); $("#" + _element_).prop('checked', val); } if ((_element_ && isNaN(_element_) && _element_.includes('id:')) || (_element_ && isNaN(_element_) && _element_.includes('class:'))) { _element_ = _element_.replace('id:', '#'); _element_ = _element_.replace('class', '.'); var lx_cm = $(_element_).attr('lx_cm'); $('[lx_cm = "' + lx_cm + '"]').val(val); } else if (_element_ && !isNaN(_element_)) { if (_element_ > el.ObjArray.length) { console.warn('No se encuentra el elemento solicitado'); } else { var lx_cm = el.ObjArray[_element_ - 1].lx_cm; $('[lx_cm = "' + lx_cm + '"]').val(val); } } else { console.warn('No se encuentra el elemento solicitado'); } }; this.getAllSelectors = function () { return this.selectors; } this.validate = function () { var el = this; var gralErrors = []; var validTypes = ['checkbox', 'radio', 'range', 'time', 'date', 'color', 'email', 'file', 'text', 'textarea', 'select', 'password', 'number']; $.each(el.ObjArray, function (i, item) { el.resetField(item.lx_cm); item.errors = []; var skipAtEndValidation = []; if (item.options.skipAtEndValidation && item.options) { skipAtEndValidation = item.options.skipAtEndValidation; } if (item.lx_cm && item.type && validTypes.includes(item.type)) { var XX_ = el.validations(el, item, skipAtEndValidation); if (!XX_.success) { gralErrors.push(XX_.errors); item.errors.push(XX_.errors); } } if (item.type === 'file' && item.accept && item.accept.toUpperCase().includes('PDF') && !item.successPDF && item.data && item.data !== '') { var errPDF = "File isn't PDF or is corrupted"; if (el.options && el.options.textsErr && el.options.textsErr.ErrPDF && el.options.textsErr.ErrPDF !== '') { errPDF = el.options.textsErr.ErrPDF; } gralErrors.push([errPDF]); item.errors.push([errPDF]); el.drawError(item.lx_cm, errPDF); } }); if (gralErrors.length > 0) { return { success: false, errors: gralErrors } } else { return { success: true, errors: 'none' } } }; this.getFormAsSelector = function () { var el = this; return $('#' + el.HTML_ID); }; this.disableElement = function (_element_) { var el = this; if ((_element_ && isNaN(_element_) && _element_.includes('id:') ) || (_element_ && isNaN(_element_) && _element_.includes('class:'))) { _element_ = _element_.replace('id:', '#'); _element_ = _element_.replace('class', '.'); $(_element_).prop('disabled', true); } else if (_element_ && !isNaN(_element_)) { if (_element_ > el.ObjArray.length) { console.warn('No se encuentra el elemento solicitado'); } else { var lx_cm = el.ObjArray[_element_ - 1].lx_cm; $('[lx_cm = "' + lx_cm + '"]').prop('disabled', true); } } else { console.warn('No se encuentra el elemento solicitado'); } }; this.enableElement = function (_element_) { var el = this; if ((_element_ && isNaN(_element_) && _element_.includes('id:')) || (_element_ && isNaN(_element_) && _element_.includes('class:'))) { _element_ = _element_.replace('id:', '#'); _element_ = _element_.replace('class', '.'); $(_element_).prop('disabled', true); } else if (_element_ && !isNaN(_element_)) { if (_element_ > el.ObjArray.length) { console.warn('No se encuentra el elemento solicitado'); } else { var lx_cm = el.ObjArray[_element_ - 1].lx_cm; $('[lx_cm = "' + lx_cm + '"]').prop('disabled', false); } } else { console.warn('No se encuentra el elemento solicitado'); } }; this.getElementAsSelector = function (_element_) { var el = this; if ((_element_ && isNaN(_element_) && _element_.includes('id:')) || (_element_ && isNaN(_element_) && _element_.includes('class:'))) { _element_ = _element_.replace('id:', '#'); _element_ = _element_.replace('class', '.'); var lx_cm = $(_element_).attr('lx_cm'); return $('[lx_cm = "' + lx_cm + '"]'); } else if (_element_ && !isNaN(_element_)) { if (_element_ > el.ObjArray.length) { console.warn('No se encuentra el elemento solicitado'); } else { var lx_cm = el.ObjArray[_element_ - 1].lx_cm; return $('[lx_cm = "' + lx_cm + '"]'); } } else { console.warn('No se encuentra el elemento solicitado'); } }; this.findOutIn = function (lx_cm, el) { var POS = -1; $.each(el.ObjArray, function (i, item) { if (item.lx_cm && item.lx_cm === lx_cm) { POS = i; } }); return POS; }; this.waitForEl = function (selector, callback) { if (jQuery(selector).length) { callback(); } else { setTimeout(function () { waitForEl(selector, callback); }, 100); } }; this.chargeData = function (el, item, DataAs) { var value = $('[lx_cm = "' + item.lx_cm + '"]').val(); if (!value || value === '') { item.data = ''; return 0; } var file = document.querySelectorAll('[lx_cm ="' + item.lx_cm + '"]')[0].files[0]; if (DataAs === 'text') { var reader = new FileReader(); reader.onload = function (event) { var text = reader.result; item.data = text; }; reader.readAsText(file); } if (DataAs === 'b64') { var reader = new FileReader(file); reader.onload = function (event) { var text = reader.result; item.data = text; }; reader.readAsDataURL(file); } }; this.extChanged = function (el, item) { var value = $('[lx_cm = "' + item.lx_cm + '"]').val(); if (!value || value === '') { item.data = ''; return 0; } var file = document.querySelectorAll('[lx_cm ="' + item.lx_cm + '"]')[0].files[0]; var reader = new FileReader(file); reader.onload = function (event) { var text = reader.result; var firstLine = text.split('\n').shift(); // first line if (!(firstLine.toString().toUpperCase().includes('PDF'))) { item.successPDF = false; var errPDF = "File isn't PDF or is corrupted"; if (el.options && el.options.textsErr && el.options.textsErr.ErrPDF && el.options.textsErr.ErrPDF !== '') { errPDF = el.options.textsErr.ErrPDF; } el.drawError(item.lx_cm, errPDF); } else { item.successPDF = true; } } reader.readAsText(file, 'UTF-8'); }; this.validations = function (el, item, skipUntilEndValidation) { var textsErr = {}; if (el.options.textsErr) { textsErr = el.options.textsErr; } var errors = []; switch (item.type) { case 'file' : /*Validation max size file*/ if (!skipUntilEndValidation.includes('maxtam')) { var x = ''; x = el.validateFileSize(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation file accept*/ if (!skipUntilEndValidation.includes('accept')) { var x = ''; x = el.validateFileAccept(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation mandatory */ if (!skipUntilEndValidation.includes('mandatory')) { var x = ''; x = el.validateMandatory(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation unique*/ if (!skipUntilEndValidation.includes('unique')) { var x = ''; x = el.validateUnique(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation pattern*/ if (!skipUntilEndValidation.includes('pattern')) { var x = ''; x = el.validatePatern(el, item, textsErr); if (!x.success) { errors.push(x.message); } } break; case 'select': /*Validation mandatory */ if (!skipUntilEndValidation.includes('mandatory')) { var x = ''; x = el.validateMandatory(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation unique*/ if (!skipUntilEndValidation.includes('unique')) { var x = ''; x = el.validateUnique(el, item, textsErr); if (!x.success) { errors.push(x.message); } } break; case 'text' : /*Validation mandatory */ if (!skipUntilEndValidation.includes('mandatory')) { var x = ''; x = el.validateMandatory(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation unique*/ if (!skipUntilEndValidation.includes('unique')) { var x = ''; x = el.validateUnique(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation pattern*/ if (!skipUntilEndValidation.includes('pattern')) { var x = ''; x = el.validatePatern(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation min length*/ if (!skipUntilEndValidation.includes('minLength')) { var x = ''; x = el.validateMinLength(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ if (!skipUntilEndValidation.includes('maxLength')) { var x = ''; x = el.validateMaxLength(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ if (!skipUntilEndValidation.includes('includes')) { var x = ''; x = el.validateIncludes(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ if (!skipUntilEndValidation.includes('matchTo')) { var x = ''; x = el.validateMatchTo(el, item); if (!x.success) { errors.push(x.message); } } break; case 'date' : /*Validation mandatory */ if (!skipUntilEndValidation.includes('mandatory')) { var x = ''; x = el.validateMandatory(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation unique*/ if (!skipUntilEndValidation.includes('unique')) { var x = ''; x = el.validateUnique(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation min date*/ if (!skipUntilEndValidation.includes('minDate')) { var x = ''; x = el.validateMinDate(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max date*/ if (!skipUntilEndValidation.includes('maxDate')) { var x = ''; x = el.validateMaxDate(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ break; case 'time' : /*Validation mandatory */ if (!skipUntilEndValidation.includes('mandatory')) { var x = ''; x = el.validateMandatory(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation unique*/ if (!skipUntilEndValidation.includes('unique')) { var x = ''; x = el.validateUnique(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation min date*/ if (!skipUntilEndValidation.includes('minTime')) { var x = ''; x = el.validateMinTime(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max date*/ if (!skipUntilEndValidation.includes('maxtime')) { var x = ''; x = el.validateMaxTime(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ break; case 'email' : /*Validation mandatory */ if (!skipUntilEndValidation.includes('mandatory')) { var x = ''; x = el.validateMandatory(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation unique*/ if (!skipUntilEndValidation.includes('unique')) { var x = ''; x = el.validateUnique(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation pattern*/ if (!skipUntilEndValidation.includes('pattern')) { var x = ''; x = el.validateMail(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation min length*/ if (!skipUntilEndValidation.includes('minLength')) { var x = ''; x = el.validateMinLength(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ if (!skipUntilEndValidation.includes('maxLength')) { var x = ''; x = el.validateMaxLength(el, item, textsErr); if (!x.success) { errors.push(x.message); } } /*Validation max length*/ if (!skipUntilEndValidation.includes('matchTo')) { var x = ''; x = el.validateMatchTo(el, item); if (!x.success) { errors.push(x.message); } } break; case 'color' : /*V