const storage = require('Storage'); let settings; let height = 23; let width = 34; var debug = 0; //1 = show debug info //write settings to file function updateSettings() { storage.write('daysleft.json', settings); } //Define standard settings function resetSettings() { settings = { day : 17, month : 6, year: 2020 }; updateSettings(); } settings = storage.readJSON('daysleft.json',1); //read storage if (!settings) resetSettings(); //if settings file was not found, set to standard var dd = settings.day, mm = settings.month-1, //-1 because month is zero-based yy = settings.year; const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds const targetDate = new Date(yy, mm, dd); //is 00:00 const today = new Date(); //includes current time const currentYear = today.getFullYear(); const currentMonth = today.getMonth(); const currentDay = today.getDate(); const todayMorning = new Date (currentYear, currentMonth, currentDay, 0, 0, 0); //create date object with today, but 00:00:00 const diffDays = (targetDate - todayMorning) / oneDay; //calculate day difference function drawWidget() { if (debug == 1) g.drawRect(this.x,this.y,this.x+width,this.y+height); //draw rectangle around widget area g.reset(); //define font size and string position //small if number has more than 3 digits (positive number) if (diffDays >= 1000) { g.setFont("6x8", 1); g.drawString(diffDays,this.x+10,this.y+7); } //large if number has 3 digits (positive number) if (diffDays <= 999 && diffDays >= 100) { g.setFont("6x8", 2); g.drawString(diffDays,this.x,this.y+4); } //large if number has 2 digits (positive number) if (diffDays <= 99 && diffDays >= 10) { g.setFont("6x8", 2); g.drawString(diffDays,this.x+6,this.y+4); } //large if number has 1 digit (positive number) if (diffDays <= 9 && diffDays >= 0) { g.setFont("6x8", 2); g.drawString(diffDays,this.x+13,this.y+4); } //large if number has 1 digit (negative number) if (diffDays <= -1 && diffDays >= -9) { g.setFont("6x8", 2); g.drawString(diffDays,this.x+5,this.y+4); } //large if number has 2 digits (negative number) if (diffDays <= -10 && diffDays >= -99) { g.setFont("6x8", 2); g.drawString(diffDays,this.x,this.y+4); } //large if number has 3 digits or more (negative number) if (diffDays <= -100) { g.setFont("6x8", 1); g.drawString(diffDays,this.x,this.y+7); } } //draw widget WIDGETS["daysl"]={area:"tl",width:width,draw:drawWidget};