71 lines
2.4 KiB
JavaScript
71 lines
2.4 KiB
JavaScript
define(function (require, exports, module) {
|
|
var data = require("../data.js");
|
|
var utility = require("../utility.js");
|
|
var storage = require("../platform/storage.js");
|
|
var loadUrl = data.sysNoticeUrl;
|
|
var savedNotice = JSON.parse(storage.get("systemNotice") || "{}");
|
|
var unreadNotice = null;
|
|
var noticeTemplate = $("#search_tips_template").doT();
|
|
|
|
var loadSystemNotice = function () {
|
|
$.get(loadUrl).done(function (json) {
|
|
json.lastLoad = new Date().getTime();
|
|
if (savedNotice.lastReadId) {
|
|
var takeCounter = 0;
|
|
json.items = _.filter(json.items, function (i) {
|
|
return !savedNotice.lastReadId || savedNotice.lastReadId < i.id || (takeCounter++ < data.sysNoticeMaxShowCount);
|
|
});
|
|
json.lastReadId = savedNotice.lastReadId;
|
|
}
|
|
savedNotice = json;
|
|
unreadNotice = _.filter(savedNotice.items, function (s) {
|
|
return !savedNotice.lastReadId || savedNotice.lastReadId < s.id;
|
|
});
|
|
renderUnreadNotice();
|
|
storage.put("systemNotice", savedNotice);
|
|
|
|
//定时器
|
|
setTimeout(loadSystemNotice, data.sysNoticeLoadInterval);
|
|
});
|
|
};
|
|
|
|
var renderUnreadNotice = function () {
|
|
if (unreadNotice && unreadNotice.length) {
|
|
$(".search-tips-container").html(noticeTemplate(unreadNotice));
|
|
$("#index-tip-body").find(".order-num").html(unreadNotice.length).show();
|
|
} else {
|
|
$("#index-tip-body").find(".order-num").html(0).hide();
|
|
//取最新的几条通知
|
|
var shownNotice = _.first(savedNotice.items, data.sysNoticeMaxShowCount);
|
|
$(".search-tips-container").html(noticeTemplate(shownNotice));
|
|
}
|
|
};
|
|
|
|
var resetUnreadItems = function () {
|
|
unreadNotice = null;
|
|
renderUnreadNotice();
|
|
};
|
|
|
|
//是否需要立刻刷新通知?
|
|
if (!savedNotice.lastLoad || (new Date().getTime() - savedNotice.lastLoad) > 1000 * 60 * 30) {
|
|
loadSystemNotice();
|
|
} else {
|
|
unreadNotice = _.filter(savedNotice.items, function (s) {
|
|
return savedNotice.lastReadId < s.id;
|
|
});
|
|
renderUnreadNotice();
|
|
var nextTime = Math.min(savedNotice.lastLoad ? new Date() - savedNotice.lastLoad : data.sysNoticeLoadInterval, data.sysNoticeLoadInterval);
|
|
setTimeout(loadSystemNotice, nextTime);
|
|
}
|
|
|
|
$("#index-tip-body").click(function () {
|
|
$(this).next().fadeIn();
|
|
});
|
|
$(document).on("click", "section.search-tips-container i.fa-times", function () {
|
|
$(this).closest("section.search-tips-container").fadeOut();
|
|
savedNotice.lastReadId = savedNotice.items[0].id;
|
|
resetUnreadItems();
|
|
});
|
|
|
|
});
|