MagicMirror² v2.12.0 is available! For more information about this release, check out this topic.

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 - 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 - 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.


Log in to reply