UNPKG

automizy-js

Version:

Automizy widget collection

446 lines (439 loc) 16.1 kB
define([ 'automizy/core', 'automizy/defines/input', 'automizy/addons/jqueryAddOns', 'automizy/functions/getUniqueString', 'automizy/functions/parseBoolean', 'automizy/functions/initBasicFunctions' ], function () { var Input = function (obj) { var t = this; t.d = { $widget: $('<span class="automizy-input new-row"></span>'), $widgetInput: $('<input type="text" />'), $widgetInputBox: $('<span class="automizy-input-box"></span>'), $widgetLabel: $('<label></label>'), $widgetHelp: $('<span class="automizy-input-help"></span>'), $widgetHelpContent: $('<div class="automizy-input-help-content"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAC3SURBVHjanNRNCoMwEIbht5KFAbt00UN4CumpxVN4CIWsY10lXVVIY37GWQYeBiYz38N7T6nMOv0/+QZ5DUoppHAA5rbVIjgAc9c9e63rYYCAMjTrFKEiTKEszKEkLKFLWIMiWIsCKEEnlCKA5g76ddyAzTknWtqmf70NMO67Xay1oo7cwedUpTj4RwmONqcWX+5qDU5eRwln7zGHiwmQwrWZE2FJygVYmqsGGI/jw50kN845vgMAISKSwdQyAJUAAAAASUVORK5CYII=" class="automizy-input-help-content-arrow" /></div>'), $widgetHelpContentInner: $('<span></span>'), $input: $('<input />'), $textarea: $('<textarea></textarea>'), $select: $('<select></select>'), type: 'text', skin: 'simple-automizy', multiple: false, readonly: false, hasObject: false, isDatepicker: false, isMultiselect: false, newRow:true, breakInput:false, value: '', name: '', width: '300px', label: '', accept: [], items: {}, createFunctions: [], id: 'automizy-input-' + $A.getUniqueString(), change: function () { }, create: function () { } }; t.d.$input.addClass('automizy-input'); t.d.$textarea.addClass('automizy-input'); t.d.$select.addClass('automizy-input'); t.d.$widgetLabel.appendTo(t.d.$widget).attr('for', t.d.id + '-input').ahide(); t.d.$widgetInput.appendTo(t.d.$widgetInputBox).attr('id', t.d.id + '-input'); t.d.$widgetInputBox.appendTo(t.d.$widget); t.d.$widgetHelpContentInner.appendTo(t.d.$widgetHelpContent); t.d.$widgetHelpContent.appendTo('body:first'); t.d.$widgetHelp.appendTo(t.d.$widget).on('mouseenter click', function () { t.d.$widgetHelp.stop().fadeTo(250, 1); var posX = t.d.$widgetHelp.offset().left + 40; var posY = t.d.$widgetHelp.offset().top - 16; t.d.$widgetHelpContent.css({ left: posX + 'px', top: posY + 'px' }).stop().fadeIn(); }).mouseout(function () { t.d.$widgetHelpContent.stop().fadeOut(); t.d.$widgetHelp.stop().fadeTo(250, 0.5); }).ahide(); t.d.$widget.attr('type', 'text').attr('id', t.id()).addClass('automizy-skin-' + t.d.skin); t.d.$widgetInput.change(t.d.change); if (typeof obj !== 'undefined') { if (typeof obj.type !== 'undefined') t.type(obj.type); if (typeof obj.disable !== 'undefined') { if (obj.disable) t.disable(); else t.enable(); } if (typeof obj.enable !== 'undefined') { if (obj.enable) t.enable(); else t.disable(); } if (typeof obj.checked !== 'undefined') { if (obj.checked) t.check(); else t.uncheck(); } if (typeof obj.multiple !== 'undefined') t.multiple(obj.multiple); if (typeof obj.label !== 'undefined') t.label(obj.label); if (typeof obj.help !== 'undefined') t.help(obj.help); if (typeof obj.name !== 'undefined') t.name(obj.name); if (typeof obj.val !== 'undefined' || typeof obj.value !== 'undefined') t.val(obj.val || obj.value); if (typeof obj.skin !== 'undefined') t.skin(obj.skin); if (typeof obj.create === 'function') t.create(obj.create); if (typeof obj.target !== 'undefined') t.drawTo(obj.target); if (typeof obj.datepicker !== 'undefined') t.datepicker(obj.datepicker); if (typeof obj.multiselect !== 'undefined' && obj.multiselect !== false) t.multiselect(obj.multiselect); if (typeof obj.options !== 'undefined') t.options(obj.options); if (typeof obj.accept !== 'undefined') t.accept(obj.accept); if (typeof obj.readonly !== 'undefined') t.readonly(obj.readonly); if (typeof obj.newRow !== 'undefined') t.newRow(obj.newRow); if (typeof obj.breakInput !== 'undefined') t.breakInput(obj.breakInput); if (typeof obj.change === 'function') t.change(obj.change); } }; var p = Input.prototype; p.change = function (func) { var t = this; if (typeof func === 'function') { t.d.$widgetInput.change(func); } else { t.d.$widgetInput.trigger('change'); } return t; }; p.click = function (func) { var t = this; if (typeof func === 'function') { t.d.$widgetInput.click(func); } else { t.d.$widgetInput.trigger('click'); } return t; }; p.disable = function () { var t = this; t.d.$widgetInput.prop('disabled', true); if (t.d.isMultiselect) t.multiselect('disable'); return t; }; p.enable = function () { var t = this; t.d.$widgetInput.prop('disabled', false); if (t.d.isMultiselect) t.multiselect('enable'); return t; }; p.check = function () { var t = this; t.d.$widgetInput.prop('checked', true); return t; }; p.uncheck = function () { var t = this; t.d.$widgetInput.prop('checked', false); return t; }; p.label = function (label) { var t = this; if (typeof label !== 'undefined') { t.d.label = label; t.d.$widgetLabel.html(label).ashow(); return t; } return t.d.label; }; p.help = function (help) { var t = this; if (typeof help !== 'undefined') { t.d.help = help; t.d.$widgetHelpContentInner.html(help); t.d.$widgetHelp.ashow(); return t; } return t.d.help; }; p.val = p.value = function (value) { var t = this; if (typeof value !== 'undefined') { t.d.value = value; if (t.d.type === 'file') t.input().data('value', value); else t.input().val(value); return t; } return t.input().val(); }; p.name = function (name) { var t = this; if (typeof name !== 'undefined') { t.d.name = name; t.d.$widgetInput.attr('name', name); return t; } return t.d.$widgetInput.attr('name'); }; p.width = function (width) { var t = this; if (typeof width !== 'undefined') { t.d.width = width; if (t.type() === 'file') { t.widget().add(t.d.$widgetInputBox).width('100%'); t.input().data('table').width(width); } else { t.widget().width('auto'); t.input().add(t.d.$widgetInputBox).width(width); } return t; } return t.d.width; }; p.type = function (type) { var t = this; if (typeof type !== 'undefined') { type = type.toLowerCase(); t.d.type = type; var attributes = t.d.$widgetInput.getAttributes(); delete attributes.type; delete attributes.checked; if (t.d.type === 'select') { t.d.$widgetInput = $('<select></select>'); } else if (t.d.type === 'textarea') { t.d.$widgetInput = $('<textarea></textarea>'); } else { t.d.$widgetInput = $('<input/>').attr('type', t.d.type); } t.d.$widgetInputBox.ashow().empty(); t.d.$widgetInput.attr(attributes).show(); t.d.$widgetInput.appendTo(t.d.$widgetInputBox); if(t.d.type === 'hidden'){ t.d.createFunctions.push(function () { t.widget().ahide(); }); } if (type === 'file') { t.d.createFunctions.push(function () { $A.skin(t); }); } return t; } return t.d.type; }; p.datepicker = function () { var t = this; if (!require.defined('jqueryUI')) { console.warn('Missing plugin!'); return t; } t.d.isDatepicker = true; var $w = t.d.$widgetInput; var freturn = $w.datepicker.apply($w, arguments); return (freturn !== $w) ? freturn : t; }; p.datetimepicker = function () { var t = this; if (!require.defined('jqueryUI', 'timepicker')) { console.warn('Missing plugin!'); return t; } t.d.isDatetimepicker = true; var $w = t.d.$widgetInput; var freturn = $w.datetimepicker.apply($w, arguments); return (freturn !== $w) ? freturn : t; }; p.timepicker = function () { var t = this; if (!require.defined('jqueryUI', 'timepicker')) { console.warn('Missing plugin!'); return t; } t.d.isTimepicker = true; var $w = t.d.$widgetInput; var freturn = $w.timepicker.apply($w, arguments); return (freturn !== $w) ? freturn : t; }; p.multiple = function (multiple) { var t = this; if (typeof multiple !== 'undefined') { multiple = $A.parseBoolean(multiple); if (multiple) t.d.$widgetInput.attr('multiple', 'multiple'); else t.d.$widgetInput.removeAttr('multiple'); t.d.multiple = multiple; } else { t.d.$widgetInput.attr('multiple', 'multiple'); t.d.multiple = true; } return t; }; p.multiselect = function () { var t = this; console.log(t); var args = arguments; if (typeof $().multiselect === "undefined") { console.warn('Missing plugin!'); return t; } if (!t.d.hasObject) { console.warn('Draw first!'); t.d.createFunctions.push(function () { p.multiselect.apply(t, args); }); return t; } t.d.isMultiselect = true; var $w = t.d.$widgetInput; setTimeout(function () { $w.multiselect('refresh'); }, 1); if (args.length <= 0 || args[0] === true) { if (t.d.multiple) args[0] = $A.d.defines.input.setupSelectSearchCheckObj; else args[0] = $A.d.defines.input.setupSelectObj; } var freturn = $w.multiselect.apply($w, args); return (freturn !== $w) ? freturn : t; }; p.options = p.items = function (arr) { var t = this; if (typeof arr !== 'undefined') { t.d.$widgetInput.find('option').remove(); t.addItems(arr); return t; } return t.d.items; }; p.addOptions = p.addItems = function (arr, before) { var t = this; var val = t.val(); var before = before || false; if (t.d.type !== 'select') { console.warn('Bad type!'); } else if (typeof arr === 'undefined') { console.warn('Bad parameters!'); } else { if ($.isArray(arr)) { var values = []; for (var i = 0; i < arr.length; i++) { var $option = $('<option></option>'); $option.attr('value', arr[i][0]); $option.text(arr[i][1] || arr[i][0]); if (arr[i][2]) values.push(arr[i][0]); if(before){ var $of = t.d.$widgetInput.find('option:first'); if($of.val() == 0) $option.insertAfter($of); else $option.prependTo(t.d.$widgetInput); }else{ $option.appendTo(t.d.$widgetInput); } t.d.items[arr[i][0]] = arr[i][1] || arr[i][0]; } t.d.$widgetInput.val(values); } } if (t.d.isMultiselect) t.multiselect('refresh'); t.val(val); return t; }; p.option = p.addOption = p.addItem = function (key, value) { var t = this; return t.addOptions([[key, (value || key)]]); }; p.addOptionBefore = p.addItemBefore = function (key, value) { var t = this; return t.addOptions([[key, (value || key)]], true); }; p.accept = function (arr) { var t = this; if (typeof arr !== 'undefined') { if (typeof arr === 'string') { t.d.accept = arr.split(','); t.d.$widgetInput.attr('accept', arr); } else { t.d.accept = arr; t.d.$widgetInput.attr('accept', arr.join(',')); } return t; } return t.d.accept; }; p.readonly = function (readonly) { var t = this; if (typeof readonly !== 'undefined') { readonly = $A.parseBoolean(readonly); t.d.readonly = readonly; t.d.$widgetInput.attr('readonly', readonly); return t; } return t.d.readonly; }; p.newRow = function (newRow) { var t = this; if (typeof newRow !== 'undefined') { newRow = $A.parseBoolean(newRow); t.d.newRow = newRow; if(newRow){ t.d.$widget.addClass('new-row'); }else{ t.d.$widget.removeClass('new-row'); } return t; } return t.d.newRow; }; p.breakInput = function (breakInput) { var t = this; if (typeof breakInput !== 'undefined') { breakInput = $A.parseBoolean(breakInput); t.d.breakInput = breakInput; if(breakInput){ t.d.$widgetInputBox.addClass('new-row'); }else{ t.d.$widgetInputBox.removeClass('new-row'); } return t; } return t.d.breakInput; }; p.input = function () { var t = this; return t.d.$widgetInput; }; $A.initBasicFunctions(Input, "Input"); });