diff --git a/js/class.js b/js/class.js index b25ced0a..339e24b2 100644 --- a/js/class.js +++ b/js/class.js @@ -8,8 +8,8 @@ * MIT Licensed. */ (function () { - var initializing = false; - var fnTest = /xyz/.test(function () { + let initializing = false; + const fnTest = /xyz/.test(function () { xyz; }) ? /\b_super\b/ @@ -20,27 +20,27 @@ // Create a new Class that inherits from this class Class.extend = function (prop) { - var _super = this.prototype; + let _super = this.prototype; // Instantiate a base class (but only create the instance, // don't run the init constructor) initializing = true; - var prototype = new this(); + const prototype = new this(); initializing = false; // Make a copy of all prototype properties, to prevent reference issues. - for (var p in prototype) { + for (const p in prototype) { prototype[p] = cloneObject(prototype[p]); } // Copy the properties over onto the new prototype - for (var name in prop) { + for (const name in prop) { // Check if we're overwriting an existing function prototype[name] = typeof prop[name] === "function" && typeof _super[name] === "function" && fnTest.test(prop[name]) ? (function (name, fn) { return function () { - var tmp = this._super; + const tmp = this._super; // Add a new ._super() method that is the same method // but on the super-class @@ -48,7 +48,7 @@ // The method only need to be bound temporarily, so we // remove it when we're done executing - var ret = fn.apply(this, arguments); + const ret = fn.apply(this, arguments); this._super = tmp; return ret; @@ -91,8 +91,8 @@ function cloneObject(obj) { return obj; } - var temp = obj.constructor(); // give temp the original obj's constructor - for (var key in obj) { + const temp = obj.constructor(); // give temp the original obj's constructor + for (const key in obj) { temp[key] = cloneObject(obj[key]); if (key === "lockStrings") { diff --git a/js/electron.js b/js/electron.js index b566f0ad..36b3d352 100644 --- a/js/electron.js +++ b/js/electron.js @@ -65,7 +65,7 @@ function createWindow() { if (process.argv.includes("dev")) { if (process.env.JEST_WORKER_ID !== undefined) { // if we are running with jest - var devtools = new BrowserWindow(electronOptions); + const devtools = new BrowserWindow(electronOptions); mainWindow.webContents.setDevToolsWebContents(devtools.webContents); } mainWindow.webContents.openDevTools(); diff --git a/js/translator.js b/js/translator.js index 1144e899..bff29d61 100644 --- a/js/translator.js +++ b/js/translator.js @@ -141,12 +141,7 @@ var Translator = (function () { * The first language defined in translations.js will be used. */ loadCoreTranslationsFallback: function () { - // The variable `first` will contain the first - // defined translation after the following line. - for (var first in translations) { - break; - } - + let first = Object.keys(translations)[0]; if (first) { Log.log("Loading core translation fallback file: " + translations[first]); loadJSON(translations[first], (translations) => { diff --git a/modules/default/weather/providers/envcanada.js b/modules/default/weather/providers/envcanada.js index 10db7415..0f9ef21e 100644 --- a/modules/default/weather/providers/envcanada.js +++ b/modules/default/weather/providers/envcanada.js @@ -134,7 +134,7 @@ WeatherProvider.register("envcanada", { // fetchData: function (url, method = "GET", data = null) { return new Promise(function (resolve, reject) { - var request = new XMLHttpRequest(); + const request = new XMLHttpRequest(); request.open(method, url, true); request.onreadystatechange = function () { if (this.readyState === 4) { @@ -164,7 +164,7 @@ WeatherProvider.register("envcanada", { // CORS errors when accessing EC // getUrl() { - var path = "https://thingproxy.freeboard.io/fetch/https://dd.weather.gc.ca/citypage_weather/xml/" + this.config.provCode + "/" + this.config.siteCode + "_e.xml"; + const path = "https://thingproxy.freeboard.io/fetch/https://dd.weather.gc.ca/citypage_weather/xml/" + this.config.provCode + "/" + this.config.siteCode + "_e.xml"; return path; }, @@ -232,7 +232,7 @@ WeatherProvider.register("envcanada", { // Capture the sunrise and sunset values from EC data // - var sunList = ECdoc.querySelectorAll("siteData riseSet dateTime"); + const sunList = ECdoc.querySelectorAll("siteData riseSet dateTime"); currentWeather.sunrise = moment(sunList[1].querySelector("timeStamp").textContent, "YYYYMMDDhhmmss"); currentWeather.sunset = moment(sunList[3].querySelector("timeStamp").textContent, "YYYYMMDDhhmmss"); @@ -249,14 +249,14 @@ WeatherProvider.register("envcanada", { const days = []; - var weather = new WeatherObject(this.config.units, this.config.tempUnits, this.config.windUnits); + const weather = new WeatherObject(this.config.units, this.config.tempUnits, this.config.windUnits); - var foreBaseDates = ECdoc.querySelectorAll("siteData forecastGroup dateTime"); - var baseDate = foreBaseDates[1].querySelector("timeStamp").textContent; + const foreBaseDates = ECdoc.querySelectorAll("siteData forecastGroup dateTime"); + const baseDate = foreBaseDates[1].querySelector("timeStamp").textContent; weather.date = moment(baseDate, "YYYYMMDDhhmmss"); - var foreGroup = ECdoc.querySelectorAll("siteData forecastGroup forecast"); + const foreGroup = ECdoc.querySelectorAll("siteData forecastGroup forecast"); // For simplicity, we will only accumulate precipitation and will not try to break out // rain vs snow accumulations @@ -288,9 +288,9 @@ WeatherProvider.register("envcanada", { // where the next day's (aka Tomorrow's) forecast is located in the forecast array. // - var nextDay = 0; - var lastDay = 0; - var currentTemp = ECdoc.querySelector("siteData currentConditions temperature").textContent; + let nextDay = 0; + let lastDay = 0; + const currentTemp = ECdoc.querySelector("siteData currentConditions temperature").textContent; // // If the first Element is Current Today, look at Current Today and Current Tonight for the current day. @@ -356,9 +356,9 @@ WeatherProvider.register("envcanada", { // iteration looking at the current Element and the next Element. // - var lastDate = moment(baseDate, "YYYYMMDDhhmmss"); + let lastDate = moment(baseDate, "YYYYMMDDhhmmss"); - for (var stepDay = nextDay; stepDay < lastDay; stepDay += 2) { + for (let stepDay = nextDay; stepDay < lastDay; stepDay += 2) { let weather = new WeatherObject(this.config.units, this.config.tempUnits, this.config.windUnits); // Add 1 to the date to reflect the current forecast day we are building @@ -402,23 +402,23 @@ WeatherProvider.register("envcanada", { // Get local timezone UTC offset so that each hourly time can be calculated properly - var baseHours = ECdoc.querySelectorAll("siteData hourlyForecastGroup dateTime"); - var hourOffset = baseHours[1].getAttribute("UTCOffset"); + const baseHours = ECdoc.querySelectorAll("siteData hourlyForecastGroup dateTime"); + const hourOffset = baseHours[1].getAttribute("UTCOffset"); // // The EC hourly forecast is held in a 24-element array - Elements 0 to 23 - with Element 0 holding // the forecast for the next 'on the hour' timeslot. This means the array is a rolling 24 hours. // - var hourGroup = ECdoc.querySelectorAll("siteData hourlyForecastGroup hourlyForecast"); + const hourGroup = ECdoc.querySelectorAll("siteData hourlyForecastGroup hourlyForecast"); - for (var stepHour = 0; stepHour < 24; stepHour += 1) { - var weather = new WeatherObject(this.config.units, this.config.tempUnits, this.config.windUnits); + for (let stepHour = 0; stepHour < 24; stepHour += 1) { + const weather = new WeatherObject(this.config.units, this.config.tempUnits, this.config.windUnits); // Determine local time by applying UTC offset to the forecast timestamp - var foreTime = moment(hourGroup[stepHour].getAttribute("dateTimeUTC"), "YYYYMMDDhhmmss"); - var currTime = foreTime.add(hourOffset, "hours"); + const foreTime = moment(hourGroup[stepHour].getAttribute("dateTimeUTC"), "YYYYMMDDhhmmss"); + const currTime = foreTime.add(hourOffset, "hours"); weather.date = moment(currTime, "X"); // Capture the temperature @@ -427,7 +427,7 @@ WeatherProvider.register("envcanada", { // Capture Likelihood of Precipitation (LOP) and unit-of-measure values - var precipLOP = hourGroup[stepHour].querySelector("lop").textContent * 1.0; + const precipLOP = hourGroup[stepHour].querySelector("lop").textContent * 1.0; if (precipLOP > 0) { weather.precipitation = precipLOP; @@ -453,9 +453,9 @@ WeatherProvider.register("envcanada", { // setMinMaxTemps(weather, foreGroup, today, fullDay, currentTemp) { - var todayTemp = foreGroup[today].querySelector("temperatures temperature").textContent; + const todayTemp = foreGroup[today].querySelector("temperatures temperature").textContent; - var todayClass = foreGroup[today].querySelector("temperatures temperature").getAttribute("class"); + const todayClass = foreGroup[today].querySelector("temperatures temperature").getAttribute("class"); // // The following logic is largely aimed at accommodating the Current day's forecast whereby we @@ -500,9 +500,9 @@ WeatherProvider.register("envcanada", { } } - var nextTemp = foreGroup[today + 1].querySelector("temperatures temperature").textContent; + const nextTemp = foreGroup[today + 1].querySelector("temperatures temperature").textContent; - var nextClass = foreGroup[today + 1].querySelector("temperatures temperature").getAttribute("class"); + const nextClass = foreGroup[today + 1].querySelector("temperatures temperature").getAttribute("class"); if (fullDay === true) { if (nextClass === "low") { @@ -577,6 +577,7 @@ WeatherProvider.register("envcanada", { return temp; } }, + // // Convert km/h to mph //