UNPKG

automizy-js-api

Version:

JavaScript API library for Automizy Marketing Automation software

434 lines (413 loc) 14.5 kB
define([ 'automizy/core', 'automizy/modules/button', 'automizy/modules/input', 'automizy/addons/jqueryAddOns', 'automizy/functions/getUniqueString' ], function () { var Form = function (obj) { var t = this; t.d = { $widget: $('<form class="automizy-form" onsubmit="return false;"></form>'), $inputs: $('<div class="automizy-form-inputs"></div>'), $buttons: $('<div class="automizy-form-buttons"></div>'), $tables: $('<div class="automizy-form-tables"></div>'), buttons: [], inputs: [], tables: [], subtitles: [], htmls: [], hasObject: false, id: 'automizy-form-' + $A.getUniqueString(), create: function () { }, submit:function(){}, method: 'POST', enctype: false, url: document.location.href }; t.init(); t.d.$widget.attr('id', t.id()); t.d.$inputs.appendTo(t.d.$widget); t.d.$buttons.appendTo(t.d.$widget); t.d.$tables.appendTo(t.d.$widget); if (typeof obj !== 'undefined') { if (typeof obj.subTitle !== 'undefined') t.subTitle(obj.subTitle); if (typeof obj.htmls !== 'undefined') t.htmls(obj.htmls); if (typeof obj.inputs !== 'undefined') t.addInputs(obj.inputs); if (typeof obj.tables !== 'undefined') t.addTables(obj.tables); if (typeof obj.buttons !== 'undefined') t.addButtons(obj.buttons); if (typeof obj.groups !== 'undefined') t.groups(obj.groups); if (typeof obj.method !== 'undefined') t.method(obj.method); if (typeof obj.enctype !== 'undefined') t.enctype(obj.enctype); if (typeof obj.submit === 'function') t.submit(obj.submit); if (typeof obj.url !== 'undefined' || typeof obj.action !== 'undefined') t.url(obj.url || obj.action); t.initParameter(obj); } }; var p = Form.prototype; p.subTitle = p.addSubTitle = function (text) { var t = this; var id = "automizy-form-subtitle-" + $A.getUniqueString(); if (typeof text === 'string') { var $widget = $('<div id="' + id + '" class="automizy-form-subtitle"></div>'); t.d.subtitles.push({id: id, text: text, $widget:$widget}); $widget.html(text).appendTo(t.d.$inputs); } else { console.warn('Bad parameter type.', text); } return t; }; p.removeSubTitle = function (subTitle) { var t = this; if (typeof subTitle === 'string') { for (var i = 0; i < t.d.subtitles.length; i++) { if (t.d.subtitles[i].id === subTitle) t.d.subtitles[i].remove(); } } else if (typeof subTitle === 'object') { subTitle.remove(); } }; p.button = p.addButton = function (obj) { var t = this; if (typeof obj !== 'undefined') { if (obj instanceof $A.m.Button) { obj.drawTo(t.d.$buttons); t.d.buttons.push(obj); } else { obj.target = obj.target || t.d.$buttons; var button = $A.newButton(obj); t.d.buttons.push(button); } return t; } var button = $A.newButton(); t.d.buttons.push(button); button.drawTo(t.d.$buttons); return button; }; p.removeButton = function (button) { var t = this; if (typeof button === 'string') { for (var i = 0; i < t.d.buttons.length; i++) { if (t.d.buttons[i].id() === button) t.d.buttons[i].remove(); } } else if (typeof button === 'object') { button.remove(); } }; p.addButtons = function (buttons) { var t = this; if (typeof buttons !== 'undefined') { for (var i = 0; i < buttons.length; i++) { t.addButton(buttons[i]); } return t; } return t.d.buttons; }; p.input = p.addInput = function (obj) { var t = this; if (typeof obj !== 'undefined') { if (obj instanceof $A.m.Input) { obj.drawTo(t.d.$inputs); t.d.inputs.push(obj); } else { obj.target = obj.target || t.d.$inputs; var input = $A.newInput(obj); t.d.inputs.push(input); } return t; } var input = $A.newInput(); t.d.inputs.push(input); input.drawTo(t.d.$inputs); return input; }; p.removeInput = function (input) { var t = this; if (typeof input === 'string') { for (var i = 0; i < t.d.inputs.length; i++) { if (t.d.inputs[i].id() === input) t.d.inputs[i].remove(); } } else if (typeof input === 'object') { input.remove(); } }; p.addInputs = function (inputs) { var t = this; if (typeof inputs !== 'undefined') { for (var i = 0; i < inputs.length; i++) { t.addInput(inputs[i]); } return t; } return t.d.inputs; }; p.table = p.addTable = function (obj) { var t = this; if (typeof obj !== 'undefined') { if (obj instanceof $A.m.Table) { obj.drawTo(t.d.$tables); t.d.tables.push(obj); } else { obj.target = obj.target || t.d.$tables; var table = $A.newTable(obj); t.d.tables.push(table); } return t; } var table = $A.newTable(); t.d.tables.push(table); table.drawTo(t.d.$tables); return table; }; p.removeTable = function (table) { var t = this; if (typeof table === 'string') { for (var i = 0; i < t.d.tables.length; i++) { if (t.d.tables[i].id() === table) t.d.tables[i].remove(); } } else if (typeof table === 'object') { table.remove(); } }; p.addTables = function (tables) { var t = this; if (typeof tables !== 'undefined') { for (var i = 0; i < tables.length; i++) { t.addTable(tables[i]); } return t; } return t.d.tables; }; p.group = p.addGroup = function (obj) { var t = this; if (typeof obj === 'object' || typeof obj === 'array') { var $group = $('<div class="automizy-form-group"></div>'); var $groupSwitch = $('<div class="automizy-form-group-switch"></div>').text(obj.text || $A.translate('Group')).click(function () { $groupSwitch.toggleClass('active'); $group.toggleClass('active'); }); if (obj.width !== 'undefined') $groupSwitch.width(obj.width); if (typeof obj.inputs !== 'undefined') { for (var i = 0; i < obj.inputs.length; i++) { if (obj.inputs[i] instanceof $A.m.Input) { t.d.inputs.push(obj.inputs[i].drawTo($group)); } else { obj.inputs[i].target = $group; t.addInput(obj.inputs[i]); } } } if (typeof obj.buttons !== 'undefined') { for (var i = 0; i < obj.buttons.length; i++) { obj.buttons[i].target = $group; t.addButton(obj.buttons[i]); } } $groupSwitch.appendTo(t.d.$inputs); $group.appendTo(t.d.$inputs); } return t; }; p.removeGroup = function (group) { var t = this; if (typeof group === 'string') { for (var i = 0; i < t.d.groups.length; i++) { if (t.d.groups[i].id === group) t.d.groups[i].remove(); } } else if (typeof group === 'object') { group.remove(); } }; p.groups = p.addGroups = function (groups) { var t = this; if (typeof groups !== 'undefined') { for (var i in groups) { t.addGroup(groups[i]); } return t; } return t; }; p.method = function (method) { var t = this; if (typeof method !== 'undefined') { t.d.method = method; t.widget().attr('method', method); return t; } return t.d.method; }; p.enctype = function (enctype) { var t = this; if (typeof enctype !== 'undefined') { t.d.enctype = enctype; t.widget().attr('enctype', enctype); return t; } return t.d.enctype; }; p.url = p.action = function (url) { var t = this; if (typeof url !== 'undefined') { t.d.url = url; t.widget().attr('action', url); return t; } return t.d.url; }; p.submit = function (func) { var t = this; if(typeof func === 'function'){ t.d.submit = func; return t; } t.d.submit.apply(t, []); t.widget().removeAttr('onsubmit').submit(); }; p.break = function () { var t = this; t.d.$inputs.append('<br/>'); return t; }; p.validate = function (){ var t = this; var validate = true; for(var i = 0; i < t.d.inputs.length; i++){ if(!t.d.inputs[i].validate()){ validate = false; } } return validate; }; p.htmls = p.addHtmls = function (htmls) { var t = this; if (typeof htmls !== 'undefined') { for (var i in htmls) { t.addHtml(htmls[i]); } return t; } return t.d.htmls; }; p.html = p.addHtml = function (html) { var t = this; if (typeof html !== 'undefined') { var id = "automizy-form-html-" + $A.getUniqueString(); var $htmlBox = $('<span id="' + id + '" class="automizy-form-html"></span>'); if (html instanceof jQuery) { if (t.d.hasObject === false) html.appendTo($htmlBox); } else { $htmlBox.html(html); } $htmlBox.appendTo(t.d.$inputs); t.d.htmls.push($htmlBox); return t; } return t.d.htmls; }; p.removeHtml = function (html) { var t = this; if (typeof html === 'string') { for (var i = 0; i < t.d.htmls.length; i++) { if (t.d.htmls[i].attr('id') === html) t.d.htmls[i].remove(); } } else if (html instanceof jQuery) { html.remove(); } }; p.json = function () { return JSON.stringify(this.object()); }; p.object = function (dotted) { var t = this; var result = {}; var ignoreArray = []; if(typeof dotted !== 'undefined'){ dotted = $A.parseBoolean(dotted); }else{ var dotted = false; } t.widget().find('input, select, textarea').filter(function(){ var returnValue = true; var $input = $(this); if(!$input.attr('name')){ returnValue = false; }else if($input.closest('.automizy-table-box').length > 0){ returnValue = false; } return returnValue }).each(function () { var $t = $(this); if (typeof $t.data('originalValue') !== 'undefined' && $t.data('originalValue') == $t.val()) { ignoreArray.push($t.attr('name')); } if($t.is(':disabled')){ return true; } var name = $t.attr('name'); if($.inArray(name, ignoreArray) >= 0){ return true; } var value = $t.val(); if (dotted && name.indexOf('.') > -1) { var arr = name.split('.'); if (typeof result[arr[0]] === 'undefined') { result[arr[0]] = {}; } result[arr[0]][arr[1]] = value; } else if (name.slice(-2) === '[]') { name = name.slice(0, -2); if (typeof result[name] === 'undefined') result[name] = []; result[name].push(value); } else { result[name] = value; } }); /*$.each(t.widget().serializeArray(), function () { var name = this.name; if($.inArray(name, ignoreArray) >= 0){ return true; } var value = this.value; if (dotted && name.indexOf('.') > -1) { var arr = name.split('.'); if (typeof result[arr[0]] === 'undefined') { result[arr[0]] = {}; } result[arr[0]][arr[1]] = value; } else if (name.slice(-2) === '[]') { name = name.slice(0, -2); if (typeof result[name] === 'undefined') result[name] = []; result[name].push(value); } else { result[name] = value; } });*/ return result; }; $A.initBasicFunctions(Form, "Form"); });