fineui是帆软报表和BI产品线所使用的前端框架。
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.

143 lines
5.5 KiB

8 years ago
/**
* z-index在1亿层级
* 弹出提示消息框用于模拟阻塞操作通过回调函数实现
* @class BI.Msg
*/
7 years ago
BI.Msg = function () {
8 years ago
7 years ago
var messageShow, $mask, $pop;
8 years ago
7 years ago
return {
alert: function (title, message, callback) {
this._show(false, title, message, callback);
},
confirm: function (title, message, callback) {
this._show(true, title, message, callback);
},
prompt: function (title, message, value, callback, min_width) {
// BI.Msg.prompt(title, message, value, callback, min_width);
},
toast: function (message, options, context) {
options = options || {};
context = context || BI.Widget._renderEngine.createElement("body");
7 years ago
var level = options.level || "normal";
var autoClose = BI.isNull(options.autoClose) ? true : options.autoClose;
var toast = BI.createWidget({
type: "bi.toast",
cls: "bi-message-animate bi-message-leave",
level: level,
autoClose: autoClose,
text: message
});
BI.createWidget({
type: "bi.absolute",
element: context,
items: [{
el: toast,
left: "50%",
top: 10
}]
});
toast.element.css({"margin-left": -1 * toast.element.outerWidth() / 2});
toast.element.removeClass("bi-message-leave").addClass("bi-message-enter");
7 years ago
7 years ago
autoClose && BI.delay(function () {
toast.element.removeClass("bi-message-enter").addClass("bi-message-leave");
BI.delay(function () {
toast.destroy();
}, 1000);
}, 5000);
},
_show: function (hasCancel, title, message, callback) {
$mask = BI.Widget._renderEngine.createElement("<div class=\"bi-z-index-mask\">").css({
position: "absolute",
zIndex: BI.zIndex_tip - 2,
top: 0,
left: 0,
right: 0,
bottom: 0,
opacity: 0.5
}).appendTo("body");
$pop = BI.Widget._renderEngine.createElement("<div class=\"bi-message-depend\">").css({
position: "absolute",
zIndex: BI.zIndex_tip - 1,
top: 0,
left: 0,
right: 0,
bottom: 0
}).appendTo("body");
var close = function () {
messageShow.destroy();
$mask.remove();
};
var conf = {
element: $pop,
type: "bi.center_adapt",
items: [
{
type: "bi.bar_popover",
header: title,
body: {
type: "bi.center_adapt",
items: [{
type: "bi.label",
text: message
}]
},
footer: hasCancel ? {
type: "bi.right_vertical_adapt",
lgap: 10,
items: [{
type: "bi.button",
text: BI.i18nText("BI-Basic_Cancel"),
level: "ignore",
handler: function () {
close();
if (BI.isFunction(callback)) {
callback.apply(null, [false]);
}
}
}, {
type: "bi.button",
text: BI.i18nText("BI-Basic_Sure"),
handler: function () {
close();
if (BI.isFunction(callback)) {
callback.apply(null, [true]);
}
}
}]
} : {
type: "bi.right_vertical_adapt",
lgap: 10,
items: [{
type: "bi.button",
text: BI.i18nText("BI-Basic_OK"),
handler: function () {
close();
if (BI.isFunction(callback)) {
callback.apply(null, [true]);
}
}
}]
},
size: "small",
listeners: [
{
eventName: "EVENT_CLOSE",
action: function () {
close();
if (BI.isFunction(callback)) {
callback.apply(null, [false]);
}
}
}
]
}
]
};
messageShow = BI.createWidget(conf);
7 years ago
}
};
}();