From 2e020c7184c50ab84d18630a2ccd33ed587cb644 Mon Sep 17 00:00:00 2001 From: jla-42 <66872002+jla-42@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:43:26 +0200 Subject: [PATCH] adding ffcniftyapp --- apps/ffcniftyapp/ChangeLog | 3 + apps/ffcniftyapp/README.md | 13 ++ apps/ffcniftyapp/app-icon.js | 1 + apps/ffcniftyapp/app.js | 174 ++++++++++++++++++ apps/ffcniftyapp/app.png | Bin 0 -> 2188 bytes apps/ffcniftyapp/metadata.json | 20 ++ apps/ffcniftyapp/screenshot_nifty.png | Bin 0 -> 3438 bytes .../ffcniftyapp/screenshot_settings_nifty.png | Bin 0 -> 2417 bytes apps/ffcniftyapp/settings.js | 35 ++++ 9 files changed, 246 insertions(+) create mode 100644 apps/ffcniftyapp/ChangeLog create mode 100644 apps/ffcniftyapp/README.md create mode 100644 apps/ffcniftyapp/app-icon.js create mode 100644 apps/ffcniftyapp/app.js create mode 100644 apps/ffcniftyapp/app.png create mode 100644 apps/ffcniftyapp/metadata.json create mode 100644 apps/ffcniftyapp/screenshot_nifty.png create mode 100644 apps/ffcniftyapp/screenshot_settings_nifty.png create mode 100644 apps/ffcniftyapp/settings.js diff --git a/apps/ffcniftyapp/ChangeLog b/apps/ffcniftyapp/ChangeLog new file mode 100644 index 000000000..30dcec467 --- /dev/null +++ b/apps/ffcniftyapp/ChangeLog @@ -0,0 +1,3 @@ +0.01: New Clock Nifty A ++ >> adding more information on the right side of the clock + + diff --git a/apps/ffcniftyapp/README.md b/apps/ffcniftyapp/README.md new file mode 100644 index 000000000..bd0f24bcb --- /dev/null +++ b/apps/ffcniftyapp/README.md @@ -0,0 +1,13 @@ +# Nifty-A Clock + +Colors are black/white - photos have non correct camera color "blue". + +This is the clock: + +![](screenshot_nifty.png) + +The week number (ISO8601) can be turned off in settings (default is `On`) + +![](screenshot_settings_nifty.png) + + diff --git a/apps/ffcniftyapp/app-icon.js b/apps/ffcniftyapp/app-icon.js new file mode 100644 index 000000000..f0a2393b1 --- /dev/null +++ b/apps/ffcniftyapp/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkEIf4A5gX/+AGEn//mIWLgP/C4gGCAAMgC5UvC4sDC4YICkIhBgMQiEBE4Uxn4XDj//iEAn/yA4ICBgUikEikYXBBAIXEn/xJYURAYMygERkQHBiYLBKYIXF+AVDC4czgUSmIXBCQgED+ZeBR4YXBLYICDC5CPGC4IAIC40zmaPDC4MSLQQXK+ayCR4QXCiRoEC44ECh4bCC4MTiTDBC6ZHOC5B3NLYcvC4kBgL5BAAUikT+BfIIrB/8ykf/eYQXBkUTI4cBW4YQCgQGDmAXDkJfEC46GBAoJKCR4geCAAMRAAZRDAoIODO4UBPRIAJR5QXWgKNCTApNDC5Mv/6/DAwR3GAAyHCC4anJIo3/+bvEa4Uia4oXHkEvC4cvIgUf+YXKHYIvEAgcPC5QSGC5UBSwYXJLYQXFkUhgABBC5Ef/4mBl4XEmETmIXKgaXBmYCBC4cTkMxiQXJS4IACL4p3MgESCwJHFR5oxCiB3FkERC5cSToQXFmUyiAZFR48Bn7zCAQMjkfykQkBN4n/XgKPBAAQgCUQIfBUwYXHFgIGCdI4XDmYADmIIEkAWJAH4A4A==")) \ No newline at end of file diff --git a/apps/ffcniftyapp/app.js b/apps/ffcniftyapp/app.js new file mode 100644 index 000000000..840dd72ff --- /dev/null +++ b/apps/ffcniftyapp/app.js @@ -0,0 +1,174 @@ +const w = require("weather"); +//const locale = require("locale"); + +// Weather icons from https://icons8.com/icon/set/weather/color +function getSun() { + return require("heatshrink").decompress(atob("kEggILIgOAAZkDAYPAgeBwPAgIFBBgPhw4TBp/yAYMcnADBnEcAYMwhgDBsEGgE/AYP8AYYLDCYgbDEYYrD8fHIwI7CIYZLDL54AHA==")); +} +function getPartSun() { + return require("heatshrink").decompress(atob("kcjwIVSgOAAgUwAYUGAYVgBoQHBkAIBocIDIX4CIcOAYMYg/wgECgODgE8oFAmEDxEYgYZBgQLBGYNAg/ggcYgANBAIIxBsPAG4MYsAIBoQ3ChAQCgI4BHYUEBgUADIIPBh///4GBv//8Cda")); +} +//function getPartRain() { +// return require("heatshrink").decompress(atob("kEggIHEmADJjEwsEAjkw8EAh0B4EAg35wEAgP+CYMDwv8AYMDBAP2g8HgH+g0DBYMMgPwAYX8gOMEwMG3kAg8OvgSBjg2BgcYGQIcBAY5CBg0Av//HAM///4MYgNBEIMOCoUMDoUAnBwGkEA")); +//} +function getCloud() { + return require("heatshrink").decompress(atob("kEggIfcj+AAYM/8ADBuFwAYPAmADCCAMBwEf8ADBhFwg4aBnEPAYMYjAVBhgDDDoQDHCYc4jwDB+EP///FYIDBMTgA==")); +} +function getSnow() { + return require("heatshrink").decompress(atob("kEggITQj/AAYM98ADBsEwAYPAjADCj+AgOAj/gAYMIuEHwEAjEPAYQVChk4AYQhCAYcYBYQTDnEPgEB+EH///IAQACE4IAB8EICIPghwDB4EeBYNAjgDBg8EAYQYCg4bCgZuFA==")); +} +function getRain() { + return require("heatshrink").decompress(atob("kEggIPMh+AAYM/8ADBuFwAYPgmADB4EbAYOAj/ggOAhnwg4aBnAeCjEcCIMMjADCDoQDHjAPCnAXCuEP///8EDAYJECAAXBwkAgPDhwDBwUMgEEhkggEOjFgFgMQLYQAOA==")); +} +function getStorm() { + return require("heatshrink").decompress(atob("kcjwIROgfwAYMB44ICsEwAYMYgYQCgAICoEHCwMYgFDwEHCYfgEAMA4AIBmAXCgUGFIVAwADBhEQFIQtCGwNggPgjAVBngCBv8Oj+AgfjwYpCGAIABn4kBgOBBAVwjBHBD4IdBgYNBGwUAkCdbA=")); +} +// err icon - https://icons8.com/icons/set/error +function getErr() { + return require("heatshrink").decompress(atob("kEggILIgOAAYsD4ADBg/gAYMGsADBhkwAYsYjADCjgDBmEMAYNxxwDBsOGAYPBwYDEgOBwOAgYDB4EDHYPAgwDBsADDhgDBFIcwjAHBjE4AYMcmADBhhNCKIcG/4AGOw4A==")); +} +//function getDummy() { +// return require("heatshrink").decompress(atob("gMBwMAwA")); +//} + + + + +/** +Choose weather icon to display based on condition. +Based on function from the Bangle weather app so it should handle all of the conditions +sent from gadget bridge. +*/ +function chooseIcon(condition) { + condition = condition.toLowerCase(); + if (condition.includes("thunderstorm") || + condition.includes("squalls") || + condition.includes("tornado")) return getStorm; + else if (condition.includes("freezing") || condition.includes("snow") || + condition.includes("sleet")) { + return getSnow; + } + else if (condition.includes("drizzle") || + condition.includes("shower") || + condition.includes("rain")) return getRain; + else if (condition.includes("clear")) return getSun; + else if (condition.includes("clouds")) return getCloud; + else if (condition.includes("few clouds") || + condition.includes("scattered clouds") || + condition.includes("mist") || + condition.includes("smoke") || + condition.includes("haze") || + condition.includes("sand") || + condition.includes("dust") || + condition.includes("fog") || + condition.includes("overcast") || + condition.includes("partly cloudy") || + condition.includes("ash")) { + return getPartSun; + } else return getErr; +} +/*function condenseWeather(condition) { + condition = condition.toLowerCase(); + if (condition.includes("thunderstorm") || + condition.includes("squalls") || + condition.includes("tornado")) return "storm"; + if (condition.includes("freezing") || condition.includes("snow") || + condition.includes("sleet")) { + return "snow"; + } + if (condition.includes("drizzle") || + condition.includes("shower") || + condition.includes("rain")) return "rain"; + if (condition.includes("clear")) return "clear"; + if (condition.includes("clouds")) return "clouds"; + if (condition.includes("few clouds") || + condition.includes("scattered clouds") || + condition.includes("mist") || + condition.includes("smoke") || + condition.includes("haze") || + condition.includes("sand") || + condition.includes("dust") || + condition.includes("fog") || + condition.includes("overcast") || + condition.includes("partly cloudy") || + condition.includes("ash")) { + return "scattered"; + } else { return "N/A"; } + return "N/A"; +} +*/ +// copied from: https://gist.github.com/IamSilviu/5899269#gistcomment-3035480 +function ISO8601_week_no(date) { + var tdt = new Date(date.valueOf()); + var dayn = (date.getDay() + 6) % 7; + tdt.setDate(tdt.getDate() - dayn + 3); + var firstThursday = tdt.valueOf(); + tdt.setMonth(0, 1); + if (tdt.getDay() !== 4) { + tdt.setMonth(0, 1 + ((4 - tdt.getDay()) + 7) % 7); + } + return 1 + Math.ceil((firstThursday - tdt) / 604800000); +} + +function format(value) { + return ("0" + value).substr(-2); +} + +const ClockFace = require("ClockFace"); +const clock = new ClockFace({ + init: function () { + const appRect = Bangle.appRect; + + this.viewport = { + width: appRect.w, + height: appRect.h + }; + + this.center = { + x: this.viewport.width / 2, + y: Math.round((this.viewport.height / 2) + appRect.y) + }; + + this.scale = g.getWidth() / this.viewport.width; + this.centerTimeScaleX = this.center.x + 32 * this.scale; + this.centerDatesScaleX = this.center.x + 40 * this.scale; + }, + draw: function (date) { + const hour = date.getHours() - (this.is12Hour && date.getHours() > 12 ? 12 : 0); + const month = date.getMonth() + 1; + // const monthName = require("date_utils").month(month, 1); + // const dayName = require("date_utils").dow(date.getDay(), 1); + let steps = Bangle.getHealthStatus("day").steps; + let curr = (w.get() === undefined ? "no data" : w.get()); // Get weather from weather app. + //let cWea =(curr === "no data" ? "no data" : curr.txt); + let cTemp= (curr === "no data" ? 273 : curr.temp); + // const temp = locale.temp(curr.temp - 273.15).match(/^(\D*\d*)(.*)$/); + let w_icon = chooseIcon(curr.txt === undefined ? "no data" : curr.txt ); + //let w_icon = chooseIcon(curr.txt); + + g.setFontAlign(1, 0).setFont("Vector", 90 * this.scale); + g.drawString(format(hour), this.centerTimeScaleX, this.center.y - 31 * this.scale); + g.drawString(format(date.getMinutes()), this.centerTimeScaleX, this.center.y + 46 * this.scale); + + g.fillRect(this.center.x + 30 * this.scale, this.center.y - 72 * this.scale, this.center.x + 32 * this.scale, this.center.y + 74 * this.scale); + + g.setFontAlign(-1, 0).setFont("Vector", 16 * this.scale); + g.drawString(format(date.getDate()), this.centerDatesScaleX, this.center.y - 62 * this.scale); //26 + g.drawString("." + format(month) + ".", this.centerDatesScaleX + 20, this.center.y - 62 * this.scale); //44 + g.drawString(date.getFullYear(date), this.centerDatesScaleX, this.center.y - 44 * this.scale); //62 + if (this.showWeekNum) + g.drawString("CW" + format(ISO8601_week_no(date)), this.centerDatesScaleX, this.center.y + -26 * this.scale); //15 + // print(w_icon()); + if (this.showWeather) { + g.drawImage(w_icon(), this.centerDatesScaleX, this.center.y - 8 * this.scale); + // g.drawString(condenseWeather(curr.txt), this.centerDatesScaleX, this.center.y + 24 * this.scale); + g.drawString((cTemp === undefined ? 273 : cTemp ) - 273 + "°C", this.centerDatesScaleX, this.center.y + 44 * this.scale); //48 + + } + if (this.showSteps) + g.drawString(steps, this.centerDatesScaleX, this.center.y + 66 * this.scale); + + }, + settingsFile: "ffcniftyapp.json" +}); +clock.start(); diff --git a/apps/ffcniftyapp/app.png b/apps/ffcniftyapp/app.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd8a49b7ba951670fb8c007055a64f6d29dfc98 GIT binary patch literal 2188 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 WmOH*M%-ZZwfZve-?|Ls}=Dz@v?S*Rq literal 0 HcmV?d00001 diff --git a/apps/ffcniftyapp/settings.js b/apps/ffcniftyapp/settings.js new file mode 100644 index 000000000..a1f09e454 --- /dev/null +++ b/apps/ffcniftyapp/settings.js @@ -0,0 +1,35 @@ + +(function (back) { + var DEFAULTS = { + 'showWeekNum': false, + 'showWeather': false, + 'showSteps': false, + }; + let settings = require('Storage').readJSON("ffcniftyapp.json", 1) || DEFAULTS; + E.showMenu({ + + "": { "title": "Nifty-A Clock ++" }, + "< Back": () => back(), + /*LANG*/"Show Week Number": { + value: settings.showWeekNum, + onchange: v => { + settings.showWeekNum = v; + require("Storage").writeJSON("ffcniftyapp.json", settings); + } + }, + /*LANG*/"Show Weather": { + value: settings.showWeather, + onchange: w => { + settings.showWeather = w; + require("Storage").writeJSON("ffcniftyapp.json", settings); + } + }, + /*LANG*/"Show Steps": { + value: settings.showSteps, + onchange: z => { + settings.showSteps = z; + require("Storage").writeJSON("ffcniftyapp.json", settings); + } + } + }); +})