automizy-js
Version:
Automizy widget collection
259 lines (254 loc) • 8.86 kB
JavaScript
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");
});