A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
Read the statement by Michael Teeuw here.
Compliments issue
-
Hi guys!
I edited compliments.js file in /modules/default/compliments cataloge. After that my mirror has stopped displaying this module. I restored the original version and made the modifications to the config.js file.It still doesn’t work :/ what can I do?
-
@tintkovich what doesn’t work? Mirror or just compliments?
Did u put the list if compliments thru a JavaScript parser online?
-
@sdetweil Hi, Compliments doesn’t work…
Yes, I did put it thru js parser.
/* global Log, Module, moment */ /* Magic Mirror * Module: Compliments * * By Michael Teeuw http://michaelteeuw.nl * MIT Licensed. */ Module.register("compliments", { // Module config defaults. defaults: { compliments: { anytime: [ "Hey there sexy!" ], morning: [ "Good morning, handsome!", "Enjoy your day!", "How was your sleep?" ], afternoon: [ "Hello, beauty!", "You look sexy!", "Looking good today!" ], evening: [ "Wow, you look hot!", "You look nice!", "Hi, sexy!" ] } }, updateInterval: 30000, remoteFile: null, fadeSpeed: 4000, morningStartTime: 3, morningEndTime: 12, afternoonStartTime: 12, afternoonEndTime: 17 }, // Set currentweather from module currentWeatherType: "", // Define required scripts. getScripts: function() { return ["moment.js"]; }, // Define start sequence. start: function() { Log.info("Starting module: " + this.name); this.lastComplimentIndex = -1; var self = this; if (this.config.remoteFile !== null) { this.complimentFile(function(response) { self.config.compliments = JSON.parse(response); self.updateDom(); }); } // Schedule update timer. setInterval(function() { self.updateDom(self.config.fadeSpeed); }, this.config.updateInterval); }, /* randomIndex(compliments) * Generate a random index for a list of compliments. * * argument compliments Array<String> - Array with compliments. * * return Number - Random index. */ randomIndex: function(compliments) { if (compliments.length === 1) { return 0; } var generate = function() { return Math.floor(Math.random() * compliments.length); }; var complimentIndex = generate(); while (complimentIndex === this.lastComplimentIndex) { complimentIndex = generate(); } this.lastComplimentIndex = complimentIndex; return complimentIndex; }, /* complimentArray() * Retrieve an array of compliments for the time of the day. * * return compliments Array<String> - Array with compliments for the time of the day. */ complimentArray: function() { var hour = moment().hour(); var compliments; if (hour >= this.config.morningStartTime && hour < this.config.morningEndTime && this.config.compliments.hasOwnProperty("morning")) { compliments = this.config.compliments.morning.slice(0); } else if (hour >= this.config.afternoonStartTime && hour < this.config.afternoonEndTime && this.config.compliments.hasOwnProperty("afternoon")) { compliments = this.config.compliments.afternoon.slice(0); } else if(this.config.compliments.hasOwnProperty("evening")) { compliments = this.config.compliments.evening.slice(0); } if (typeof compliments === "undefined") { compliments = new Array(); } if (this.currentWeatherType in this.config.compliments) { compliments.push.apply(compliments, this.config.compliments[this.currentWeatherType]); } compliments.push.apply(compliments, this.config.compliments.anytime); return compliments; }, /* complimentFile(callback) * Retrieve a file from the local filesystem */ complimentFile: function(callback) { var xobj = new XMLHttpRequest(), isRemote = this.config.remoteFile.indexOf("http://") === 0 || this.config.remoteFile.indexOf("https://") === 0, path = isRemote ? this.config.remoteFile : this.file(this.config.remoteFile); xobj.overrideMimeType("application/json"); xobj.open("GET", path, true); xobj.onreadystatechange = function() { if (xobj.readyState === 4 && xobj.status === 200) { callback(xobj.responseText); } }; xobj.send(null); }, /* complimentArray() * Retrieve a random compliment. * * return compliment string - A compliment. */ randomCompliment: function() { var compliments = this.complimentArray(); var index = this.randomIndex(compliments); return compliments[index]; }, // Override dom generator. getDom: function () { var complimentText = this.randomCompliment(); var compliment = document.createTextNode(complimentText); var wrapper = document.createElement("div"); wrapper.className = this.config.classes ? this.config.classes : "thin xlarge bright pre-line"; wrapper.appendChild(compliment); return wrapper; }, // From data currentweather set weather type setCurrentWeatherType: function (data) { var weatherIconTable = { "01d": "day_sunny", "02d": "day_cloudy", "03d": "cloudy", "04d": "cloudy_windy", "09d": "showers", "10d": "rain", "11d": "thunderstorm", "13d": "snow", "50d": "fog", "01n": "night_clear", "02n": "night_cloudy", "03n": "night_cloudy", "04n": "night_cloudy", "09n": "night_showers", "10n": "night_rain", "11n": "night_thunderstorm", "13n": "night_snow", "50n": "night_alt_cloudy_windy" }; this.currentWeatherType = weatherIconTable[data.weather[0].icon]; }, // Override notification handler. notificationReceived: function (notification, payload, sender) { if (notification === "CURRENTWEATHER_DATA") { this.setCurrentWeatherType(payload.data); } }, });
-
@tintkovich
Delete extra } after the evening section.