diff --git a/modules/default/updatenotification/updatenotification.js b/modules/default/updatenotification/updatenotification.js index 7d416852..063958a2 100644 --- a/modules/default/updatenotification/updatenotification.js +++ b/modules/default/updatenotification/updatenotification.js @@ -5,42 +5,59 @@ * MIT Licensed. */ Module.register("updatenotification", { - // Define module defaults defaults: { updateInterval: 10 * 60 * 1000, // every 10 minutes refreshInterval: 24 * 60 * 60 * 1000, // one day - ignoreModules: [], - timeout: 5000 + ignoreModules: [] }, suspended: false, moduleList: {}, - // Override start method. - start: function () { - Log.info("Starting module: " + this.name); + start() { + Log.info(`Starting module: ${this.name}`); + this.addFilters(); setInterval(() => { this.moduleList = {}; this.updateDom(2); }, this.config.refreshInterval); }, - notificationReceived: function (notification, payload, sender) { + suspend: function () { + this.suspended = true; + }, + + resume: function () { + this.suspended = false; + this.updateDom(2); + }, + + notificationReceived(notification) { if (notification === "DOM_OBJECTS_CREATED") { this.sendSocketNotification("CONFIG", this.config); - this.sendSocketNotification("MODULES", Module.definitions); - //this.hide(0, { lockString: this.identifier }); + this.sendSocketNotification("MODULES", Object.keys(Module.definitions)); } }, - // Override socket notification handler. - socketNotificationReceived: function (notification, payload) { + socketNotificationReceived(notification, payload) { if (notification === "STATUS") { this.updateUI(payload); } }, - updateUI: function (payload) { + getStyles() { + return [`${this.name}.css`]; + }, + + getTemplate() { + return `${this.name}.njk`; + }, + + getTemplateData() { + return { moduleList: this.moduleList, suspended: this.suspended }; + }, + + updateUI(payload) { if (payload && payload.behind > 0) { // if we haven't seen info for this module if (this.moduleList[payload.module] === undefined) { @@ -48,7 +65,6 @@ Module.register("updatenotification", { this.moduleList[payload.module] = payload; this.updateDom(2); } - //self.show(1000, { lockString: self.identifier }); } else if (payload && payload.behind === 0) { // if the module WAS in the list, but shouldn't be if (this.moduleList[payload.module] !== undefined) { @@ -59,62 +75,15 @@ Module.register("updatenotification", { } }, - diffLink: function (module, text) { - const localRef = module.hash; - const remoteRef = module.tracking.replace(/.*\//, ""); - return '' + text + ""; - }, - - // Override dom generator. - getDom: function () { - const wrapper = document.createElement("div"); - if (this.suspended === false) { - // process the hash of module info found - for (const key of Object.keys(this.moduleList)) { - let m = this.moduleList[key]; - - const message = document.createElement("div"); - message.className = "small bright"; - - const icon = document.createElement("i"); - icon.className = "fa fa-exclamation-circle"; - icon.innerHTML = " "; - message.appendChild(icon); - - const updateInfoKeyName = m.behind === 1 ? "UPDATE_INFO_SINGLE" : "UPDATE_INFO_MULTIPLE"; - - let subtextHtml = this.translate(updateInfoKeyName, { - COMMIT_COUNT: m.behind, - BRANCH_NAME: m.current - }); - - const text = document.createElement("span"); - if (m.module === "default") { - text.innerHTML = this.translate("UPDATE_NOTIFICATION"); - subtextHtml = this.diffLink(m, subtextHtml); - } else { - text.innerHTML = this.translate("UPDATE_NOTIFICATION_MODULE", { - MODULE_NAME: m.module - }); - } - message.appendChild(text); - - wrapper.appendChild(message); - - const subtext = document.createElement("div"); - subtext.innerHTML = subtextHtml; - subtext.className = "xsmall dimmed"; - wrapper.appendChild(subtext); + addFilters() { + this.nunjucksEnvironment().addFilter("diffLink", (text, status) => { + if (status.module !== "default") { + return text; } - } - return wrapper; - }, - suspend: function () { - this.suspended = true; - }, - resume: function () { - this.suspended = false; - this.updateDom(2); + const localRef = status.hash; + const remoteRef = status.tracking.replace(/.*\//, ""); + return `${text}`; + }); } });