Light12306/Web12306/js/ui/widget_message_popup.js
2014-08-18 23:12:35 +08:00

122 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.css("opacity", "0");
html.show();
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: "0" }, "fast", "linear", function () {
html.hide();
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: 2000 }, 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", "验证码加载失败,请点击验证码图片刷新哦。");
});
});