UNPKG

automizy-js

Version:

Automizy widget collection

259 lines (254 loc) 8.86 kB
define([ 'automizy/core', 'automizy/button', 'automizy/functions/setWindowScroll', 'automizy/addons/jqueryAddOns', 'automizy/addons/objectAddOns', 'automizy/functions/getUniqueString', 'automizy/functions/initBasicFunctions' ], function () { var Dialog = function (obj) { var t = this; t.d = { $widget: $('<table class="automizy-dialog"></table>'), $cell: $('<td class="automizy-dialog-cell"></td>'), $box: $('<div class="automizy-dialog-box"></div>'), $head: $('<div class="automizy-dialog-head"></div>'), $buttons: $('<div class="automizy-dialog-buttons"></div>'), $content: $('<div class="automizy-dialog-content"></div>'), buttons: [], positionX: 'center', positionY: 'middle', title: 'My Dialog', width: '60%', zIndex: 2501, isClose: true, hasObject: false, hash: false, id: 'automizy-dialog-' + $A.getUniqueString(), create: function () { }, open: function () { }, close: function () { } }; var $tr = $('<tr></tr>'); t.d.$cell.appendTo($tr); $tr.appendTo(t.d.$widget); t.d.$box.click(function () { t.d.isClose = false; }).appendTo(t.d.$cell); t.d.$widget.attr('id', t.id()).click(function () { if (t.d.isClose) t.hide(); else t.d.isClose = true; }); t.d.$head.appendTo(t.d.$box); t.d.$content.appendTo(t.d.$box); t.d.$buttons.appendTo(t.d.$box); if (typeof obj !== 'undefined') { if (typeof obj.title !== 'undefined') t.title(obj.title); if (typeof obj.id !== 'undefined') t.id(obj.id); if (typeof obj.positionX !== 'undefined') t.positionX(obj.positionX); if (typeof obj.positionY !== 'undefined') t.positionY(obj.positionY); if (typeof obj.position !== 'undefined') t.position(obj.position); if (typeof obj.width !== 'undefined') t.width(obj.width); if (typeof obj.zIndex !== 'undefined') t.zIndex(obj.zIndex); if (typeof obj.open !== 'undefined') t.open(obj.open); if (typeof obj.close !== 'undefined') t.close(obj.close); if (typeof obj.create === 'function') t.create(obj.create); if (typeof obj.buttons !== 'undefined') t.buttons(obj.buttons); if (typeof obj.target !== 'undefined') t.drawTo(obj.target); if (typeof obj.content !== 'undefined') t.content(obj.content); if (typeof obj.hash !== 'undefined') t.hash(obj.hash); } }; var p = Dialog.prototype; p.title = function (newTitle) { var t = this; if (typeof newTitle !== 'undefined') { t.d.title = newTitle; t.d.$head.html(newTitle); return t; } return t.d.title; }; p.hash = function (hash) { var t = this; if (typeof hash !== 'undefined') { t.d.hash = hash; return t; } return t.d.hash; }; p.content = function (content) { var t = this; if (typeof content !== 'undefined') { t.d.content = content; var $content = t.d.$content; if (content instanceof jQuery) { content.appendTo($content); } else if (typeof content === "object" && typeof content.draw === "function") { content.draw($content); } else { $content.html(content); } return t; } return t.d.content; }; p.positionX = function (x) { var t = this; if (typeof x !== 'undefined') { $cell = t.d.$cell; if (x === 'left') { $cell.css({textAlign: 'left', paddingLeft: 0, paddingRight: 0}); } else if (x === 'right') { $cell.css({textAlign: 'right', paddingLeft: 0, paddingRight: 0}); } else if (x === 'center' || x === 'middle') { x = 'center'; $cell.css({textAlign: 'center', paddingLeft: 0, paddingRight: 0}); } else { $cell.css({textAlign: 'top', paddingLeft: x, paddingRight: x}); } t.d.positionX = x; return t; } return t.d.positionX; }; p.positionY = function (y) { var t = this; if (typeof y !== 'undefined') { $cell = t.d.$cell; if (y === 'top') { $cell.css({verticalAlign: 'top', paddingTop: 0, paddingBottom: 0}); } else if (y === 'bottom') { $cell.css({verticalAlign: 'bottom', paddingTop: 0, paddingBottom: 0}); } else if (y === 'center' || y === 'middle') { y = 'middle'; $cell.css({verticalAlign: 'middle', paddingTop: 0, paddingBottom: 0}); } else { $cell.css({verticalAlign: 'top', paddingTop: y, paddingBottom: y}); } t.d.positionY = y; return t; } return t.d.positionX; }; p.position = function (xy) { var t = this; if (typeof xy === 'string') { var pos = xy.split(" "); t.positionX(pos[0]); t.positionY(pos[1]); return t; } else if (typeof xy !== 'undefined') { console.warn('Bad parameter type.', xy); } return t.d.positionX + ' ' + t.d.positionY; }; p.width = function (width) { var t = this; if (typeof width !== 'undefined') { t.d.width = width; t.d.$box.width(width); return t; } return t.d.width; }; p.zIndex = function (zIndex) { var t = this; if (typeof zIndex !== 'undefined' && Number(zIndex) === zIndex && zIndex % 1 === 0) { t.d.zIndex = zIndex; t.d.$widget.css({zIndex: zIndex}); return t; } else { console.warn('Bad parameter type.', zIndex); } return t.d.zIndex; }; p.addButton = p.addButtonTo = function (obj) { var t = this; if (typeof obj !== 'undefined') { 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.buttons = function (buttons) { var t = this; if (typeof buttons !== 'undefined') { for (var i = 0; i < t.d.buttons.length; i++) { t.d.buttons[i].remove(); } for (var i in buttons) { t.addButton(buttons[i]); } return t; } return t.d.buttons; }; p.show = function (func) { if (typeof this.open === 'function') this.open(); $A.setWindowScroll(false, this.d.id); this.d.$widget.ashow().ready(func || function () { }); return this; }; p.open = function (func) { var t = this; if (typeof func === 'function') { t.d.open = func; } else { if (t.hash() !== false) $A.hashChange(t.hash()); return t.d.open(t, t.d.$widget); } return t; }; p.close = function (func) { var t = this; if (typeof func === 'function') { t.d.close = func; } else { if (t.hash() !== false) $A.hashChange(t.hash(), false); return t.d.close(t, t.d.$widget); } return t; }; $A.initBasicFunctions(Dialog, "Dialog"); });