119 lines
3.0 KiB
JavaScript
119 lines
3.0 KiB
JavaScript
define(function (require, exports, module) {
|
||
var htmlTemplate = '<section class="message-popup"><div class="message-popup-inner"><b class=""></b> <span></span></div></section>';
|
||
var iconMap = {
|
||
warn: "warning",
|
||
ok: "check",
|
||
error: "times-circle",
|
||
loading: "spinner"
|
||
};
|
||
|
||
var MessagePopup = function (type, content, options) {
|
||
var that = this;
|
||
var html = $(htmlTemplate);
|
||
var shown = false;
|
||
options = $.extend({ closeAfter: null }, options);
|
||
$("body").append(html);
|
||
|
||
var centerElement = function (ele) {
|
||
ele = ele || html;
|
||
|
||
var width = ele.width();
|
||
var height = ele.height();
|
||
|
||
ele.css({
|
||
"margin-left": "-" + (width / 2) + "px",
|
||
"margin-top": "-" + (height / 2 - 40) + "px"
|
||
});
|
||
};
|
||
this.show = function () {
|
||
html.animate({ "margin-top": "-=20px", opacity: "1" }, "fast", "linear", function () {
|
||
shown = true;
|
||
if (options.closeAfter) {
|
||
that.delayClose();
|
||
}
|
||
});
|
||
};
|
||
this.close = function () {
|
||
html.animate({ "margin-top": "-=20px", opacity: "hide" }, "fast", "linear", function () {
|
||
html.remove();
|
||
});
|
||
};
|
||
this.delayClose = function (timeout) {
|
||
timeout = timeout || options.closeAfter || 1500;
|
||
if (that.shown)
|
||
setTimeout(that.close, timeout);
|
||
else {
|
||
options.closeAfter = timeout;
|
||
}
|
||
};
|
||
that.setState = function (type, content) {
|
||
that.type = type;
|
||
that.content = content;
|
||
};
|
||
Object.defineProperties(this, {
|
||
"content": {
|
||
get: function () {
|
||
return html.find("span").html();
|
||
},
|
||
set: function (value) {
|
||
html.find("span").html(value);
|
||
centerElement();
|
||
}
|
||
},
|
||
"type": {
|
||
get: function () {
|
||
return html.attr("data-type");
|
||
},
|
||
set: function (value) {
|
||
html.attr("data-type", value);
|
||
html.removeClass().addClass("message-popup message-popup-" + value);
|
||
html.find("b").removeClass().addClass("fa fa-" + iconMap[value] + (value === "loading" ? " fa-spin" : ""));
|
||
}
|
||
},
|
||
"shown": {
|
||
get: function () {
|
||
return shown;
|
||
}
|
||
}
|
||
});
|
||
this.content = content;
|
||
this.type = type;
|
||
|
||
return this;
|
||
};
|
||
|
||
exports.MessagePopup = MessagePopup;
|
||
|
||
exports.showMessagePopup = function (icon, content, options) {
|
||
options = $.extend({ closeAfter: 1000 }, options);
|
||
|
||
var popup = new MessagePopup(icon, content, options);
|
||
popup.show();
|
||
return popup;
|
||
};
|
||
|
||
exports.confirm = function (title, content, yes, no) {
|
||
//TODO 确认界面
|
||
if (confirm(content))
|
||
yes && yes();
|
||
else no && no();
|
||
};
|
||
exports.alert = function (title, content, callback) {
|
||
//TODO 确认界面
|
||
if (!content) {
|
||
content = title || "提示";
|
||
title = "提示";
|
||
}
|
||
alert(content);
|
||
callback && callback();
|
||
};
|
||
|
||
//捕捉一些通用的事件
|
||
document.addEventListener("requestSupportError", function () {
|
||
exports.showMessagePopup("error", "无法执行网络请求,似乎没有安装12306订票助手哦。", { closeAfter: null });
|
||
});
|
||
document.addEventListener("verifyCodeLoadFailed", function() {
|
||
exports.showMessagePopup("error", "验证码加载失败,请点击验证码图片刷新哦。");
|
||
});
|
||
});
|