diff --git a/apps/widdaysleft/widget.js b/apps/widdaysleft/widget.js new file mode 100644 index 000000000..1bc891690 --- /dev/null +++ b/apps/widdaysleft/widget.js @@ -0,0 +1,78 @@ +const storage = require('Storage'); +let settings; +let height = 23; +let width = 34; + +var debug = 0; //1 = show debug info + +settings = storage.readJSON('daysleft.json',1); //read storage +if (!settings) print("no daysleft.json found"); +var i = 0; +const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds +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 +do { + var target = settings[i]; + if (target) { + var dd = target.day, + mm = target.month-1, //-1 because month is zero-based + yy = target.year; + const targetDate = new Date(yy, mm, dd); //is 00:00 + i += 1; + } +} while (target && todayMorning >= targetDate); + +const diffDays = (target ? (targetDate - todayMorning) / oneDay : 0); //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["widdaysl"]={area:"tl",width:width,draw:drawWidget}; + +setTimeout(function() { + Bangle.loadWidgets(); + WIDGETS["widdaysl"].draw(WIDGETS["widdaysl"]); + }, todayMorning + oneDay - today + 1000); // update at next noon