You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.2 KiB

4 years ago
/**
* 弹出窗口定义文件
* @description 窗口核心文件
* @version 1.0
*/
define(function (require, exports, module) {
function Window(options) {
this.id = generateID('window_');
_init(this, options);
}
var _init = function (self, options) {
$('body').append('<div id="' + self.id + '"></div>');
self.$container = $('#' + self.id);
self.options = {
title: '',
content: '',
width: 600,
height: 400,
modal: true,
closed: false,
closable: true,
inline: true,
resizable: false,
minimizable: false,
draggable: false
}
_.extend(self.options, options);
self.eventHandler(options);
}
Window.prototype.create = function () {
this.$container.window(this.options);
// avalon.scan(this.$container[0]);
}
Window.prototype.open = function () {
if (!this.initialized) {
if (typeof this.init === 'function') {
this.init();
} else {
console.warn('自定义窗口需实现init方法');
}
this.create();
}
;
this.focusObj = document.activeElement;
this.$container.window('open');
}
Window.prototype.close = function () {
if (this.focusObj) {
$(this.focusObj).focus();
}
this.$container.window('close');
}
Window.prototype.eventHandler = function (options) {
var self = this;
this.options.onBeforeOpen = function () {
if (typeof options.onBeforeOpen === 'function') {
options.onBeforeOpen();
}
}
this.options.onOpen = function () {
if (typeof self.customerize === 'function') {
self.customerize(self.$container);
// avalon.scan(self.$container[0]);
}
if (typeof options.onOpen === 'function') {
options.onOpen();
}
self.initialized = true;
}
this.options.onBeforeClose = function () {
if (typeof options.onBeforeClose === 'function') {
return options.onBeforeClose();
}
;
}
this.options.onClose = function () {
if (typeof options.onClose === 'function') {
options.onClose();
}
;
self.destroy();
}
this.options.onDestroy = function () {
if (typeof options.onDestroy === 'function') {
options.onDestroy();
}
;
$('body').children('span.slick-columnpicker').remove();
}
}
Window.prototype.destroy = function () {
this.$container.window('destroy');
}
Window.prototype.getElement = function(selector) {
return this.$container.find(selector);
}
var generateID = function (prefix) {
prefix = prefix || "edpr-window"
return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix)
}
return Window;
})