mirror of https://github.com/espruino/BangleApps
commit
d3aef9c7b4
|
@ -0,0 +1,7 @@
|
|||
node_modules/
|
||||
res/
|
||||
|
||||
fallout_clock.code-workspace
|
||||
|
||||
package.json
|
||||
package-lock.json
|
|
@ -0,0 +1,5 @@
|
|||
0.10: (20240125) Basic Working Clock.
|
||||
0.11: (20240125) Widgets Added. Improved Interval Loop.
|
||||
0.12: (20240221) Fix: Month Reporting Wrong.
|
||||
0.20: (20240223) Created as a Package.
|
||||
0.21: (20240223) Added StandardJS and NPM.
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2024 Zachary D. Skelton <zskelton@skeltonnetworks.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,29 @@
|
|||
# Fallout Clock
|
||||
|
||||
Inspired by the aesthetic of the Fallout series, this clock face looks to emulate the color and feel of a PipBoy.
|
||||
|
||||

|
||||
|
||||
## Usage
|
||||
|
||||
You can also go into Settings, and choose it as the default clock under **Select Clock**.
|
||||
|
||||
## Planned Features:
|
||||
- Display Steps as Health
|
||||
- Display Heartrate
|
||||
- Brighter Color when the backlight is not on.
|
||||
- Configurable Settings
|
||||
|
||||
## Controls
|
||||
|
||||
Zero Settings, Zero Configuration. Install and add as your clockface.
|
||||
|
||||
## Requests
|
||||
|
||||
To request new features, add [an issue](https://github.com/zskelton/fallout_clock/issues).
|
||||
|
||||
## Creator
|
||||
|
||||
Zachary D. Skelton <zskelton@skeltonnetworks.com>\
|
||||
[Skelton Networks](https://skeltonnetworks.com)\
|
||||
[Github](https://github.com/zskelton)
|
|
@ -0,0 +1 @@
|
|||
atob("MDDDAb88//9u/1r/1/YZrgAAit4kkkkkkkkkkAAVIkkkkkkkkkkkkkkkkkkAAAARJJIkkkkkkkkkkkkkkkAAAACJJJJUkkkkkkkkkkkkkAAAAARJJJJAAkkkkkkkkkkkAAAAACpJJJKgAAkkkkkkkkkgAAAAAVJJJJIAAAEkkkkkkkkAAAAACpJfpJUAAAAkkkkkkkgAAAAABJf/9JAAAAAEkkkkkkAAAAAARJdf/+gAAAAAkkkkkgAAAAAC//dL//gAAAAAEkkkkAAAAYADpJJL//8AAAAAAkkkkAAAD8AdJJJL///gAAAAAkkkgAAADr/pJJL////0AAAAAEkkgAAABJJL/pfb////gAAAAAkkAAAADpJeu22X////4AAAAAkkAAAADpL1tttuf/7f8AAAAAkgAAAAb/+ttttuSSS7/AAAAAEgAAAAdeyttttySSSb/gAAAAEgAAAC9eWtttuaySSf/2SSSSkgAAAVfxtttttyySX//9JJJQAAAAAJetttttttyST//9JJJUAAAABJeOaNyNutySW//9JJKgAAAARJdu6N1tvRySS3/JJJUAAAACJJVuVu1tzRyST2/JJKAAAAAVJL1ttyttuNuSWW7pJKgAAACpJLxtt6NtttuSS27pJUAAAAVJJLxtt6ttttuSWT9JKgAAAAJJJLxttzNtttuSST9JIAAAAiJJJL1ttttt2NuSSS9JUAAAA2222212xtty3RySSS9KgAAAEgAAAAZ6OW2tu1ySST9QAAAAEgAAAAaW1ttu2VySSXKAAAAAEkAAAACtu221ttySbdKgAAAAEkAAAADNty1ttuST9JUAAAAAkkAAAAAVty1ttuSXpKAAAAAAkkgAAAACtttttyT9JIAAAAAEkkkAAAAARttttyfdJUAAAAAEkkkAAAAACtttuSzJKgAAAAAkkkkgAAAAAWtuSSfpQAAAAAEkkkkkAAAAADa2yT9JAAAAAAkkkkkkgAAAAD7e3/pKgAAAAAkkkkkkkAAAAVL/9JJUAAAAAEkkkkkkkgAAARJJJJKAAAAAEkkkkkkkkkAAAJJJJJIAAAAAkkkkkkkkkkkACpJJJJUAAAAEkkkkkkkkkkkgCJJJJKgAAAEkkkkkkkkkkkkklJJJJQAAAEkkkkkkkkkkkkkkkkpJJAAEkkkkkkkkk=")
|
|
@ -0,0 +1,141 @@
|
|||
/* global Bangle, Graphics, g */
|
||||
|
||||
// NAME: Fallout Clock (Bangle.js 2)
|
||||
// DOCS: https://www.espruino.com/ReferenceBANGLEJS2
|
||||
// AUTHOR: Zachary D. Skelton <zskelton@bws-solutions.com>
|
||||
// VERSION: 0.1.0 (24JAN2024) - Creating [ Maj.Min.Bug ] REF: https://semver.org/
|
||||
// LICENSE: MIT License (2024) [ https://opensource.org/licenses/MIT ]
|
||||
|
||||
/* THEME COLORS */
|
||||
// Dark Full - #000000 - (0,0.00,0)
|
||||
// Dark Half - #002f00 - (0,0.18,0)
|
||||
// Dark Zero - #005f00 - (0,0.37,0)
|
||||
// Light Zero - #008e00 - (0,0.55,0)
|
||||
// Light Half - #00bf00 - (0,0.75,0)
|
||||
// Light Full - #00ee00 - (0,0.93,0)
|
||||
|
||||
/* FONTS */
|
||||
// Font: Good Time Rg - https://www.dafont.com/good-times.font
|
||||
// Large = 50px
|
||||
Graphics.prototype.setLargeFont = function () {
|
||||
this.setFontCustom(
|
||||
atob('AAAAAAAAAAAAAAAAAAAAAABAAAAAAAB8AAAAAAA/gAAAAAAP4AAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAB8AAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADwAAAAAAD8AAAAAAD/AAAAAAD/wAAAAAD/8AAAAAH/8AAAAAH/8AAAAAH/4AAAAAH/4AAAAAH/4AAAAAH/4AAAAAP/4AAAAAP/wAAAAAP/wAAAAAP/wAAAAAP/wAAAAAH/wAAAAAB/wAAAAAAfgAAAAAAHgAAAAAABgAAAAAAAAAAAAAAAAAAOAAAAAAB//AAAAAB//8AAAAB///wAAAA////AAAAf///4AAAP////AAAH////4AAD/+B//AAB/8AD/wAAf8AAP+AAP+AAB/gAD/AAAP8AA/gAAB/AAf4AAAf4AH8AAAD+AB/AAAA/gAfwAAAP4AH8AAAD+AB/AAAA/gAfwAAAP4AH8AAAD+AB/AAAA/gAfwAAAP4AH8AAAD+AB/gAAB/gAP4AAAfwAD/AAAP8AA/4AAH+AAH/AAD/gAB/8AD/wAAP/4H/8AAB////+AAAP////AAAB////gAAAP///wAAAB///wAAAAH//wAAAAAf/wAAAAAAOAAAAAAAAAAAAAfgAAAAAAH8AAAAAAB/AAAAAAAfwAAAAAAH8AAAAAAB/AAAAAAAfwAAAAAAH+AAAAAAB/wAAAAAAf/////wAD/////8AA//////AAH/////wAA/////8AAH/////AAAf////wAAA////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAH8AA//8AB/AA///AAfwAf//wAH8AH//8AB/AD///AAfwA///wAH8Af//8AB/AH8B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwD+AfwAH+B/AH8AB///wB/AAf//8AfwAD///AH8AA///gB/AAH//wAfwAA//4AH8AAH/8AB/AAAf8AAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AB/AAAB/AAfwAAAfwAH8AAAH8AB/AAAB/AAfwAAAfwAH8AAAH8AB/AAAB/AAfwAAAfwAH8AfAH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8A/gH8AB/gP4D/AAf8H/A/wAH///8/8AA/////+AAP/////gAB/////4AAf/8//8AAD/+P/+AAAf/B//AAAA/AH/AAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAB///8AAAAf///gAAAH///8AAAB////gAAAf///4AAAH////AAAAAAD/wAAAAAAP8AAAAAAB/AAAAAAAfwAAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAD+AAAH/////8AB//////AAf/////wAH/////8AB//////AAf/////wAH/////8AAAAAP4AAAAAAD+AAAAAAA/gAAAAAAP4AAAAAAD+AAAAAAA/AAAAAAAAAAAAAAAAAAAAH///AD8AB///4B/AAf//+AfwAH///gH8AB///4B/AAf//+AfwAH///gH8AB///4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH8D/AAfwB/h/wAH8Af//8AB/AD//+AAfwA///gAH8AH//wAB/AA//4AAfgAH/8AAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAB//4AAAAB///wAAAB////AAAA////4AAAf////AAAP////4AAH/////AAB//fv/wAA/8H4f+AAP+B+D/gAH/AfgP8AB/gH4D/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+A/wAH8Afwf8AB/AH///AAfwA///gAH8AP//4AB/AD//8AAfwAf/+AAH8AD//AAAAAAP/gAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAB/AAAABAAfwAAAAwAH8AAAAcAB/AAAAfAAfwAAAPwAH8AAAH8AB/AAAD/AAfwAAD/wAH8AAB/8AB/AAA//AAfwAAf/gAH8AAP/gAB/AAP/wAAfwAH/4AAH8AD/8AAB/AB/8AAAfwB/+AAAH8A//AAAB/Af/gAAAfwP/gAAAH8P/wAAAB/H/4AAAAfz/8AAAAH9/8AAAAB//+AAAAAf//AAAAAH//gAAAAB//gAAAAAf/wAAAAAH/4AAAAAB/8AAAAAAf8AAAAAAH+AAAAAAB/AAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4AAAD/gP/gAAB/+H/8AAA//z//gAAf////8AAP/////gAD/////4AB//////AAf+P/B/wAH+A/gP8AB/AP4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8AfgH8AB/AH4B/AAfwB+AfwAH8A/gH8AB/gP8D/AAf+P/h/wAH/////8AA/////+AAP/////gAB/////wAAP/8//4AAB/+H/8AAAH+A/+AAAAAAD+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAH/4AAAAAH//gAAAAD//8AAAAB///AD8AA///4B/AAP///AfwAH///wH8AB/4f8B/AAf4B/AfwAH8APwH8AB/AD8B/AAfwA/AfwAH8APwH8AB/AD8B/AAfwA/AfwAH8APwH8AB/AD8B/AAfwA/AfwAH8APwH8AB/AD8B/AAfwA/AfwAH8APwH8AB/AD8B/AAfwA/AfwAH8APwH8AB/AD8B/AAfwA/AfwAH+APwP8AB/wD8D/AAP+A/B/gAD/wPx/4AAf/j9/+AAH/////AAA/////gAAH////4AAA////8AAAH///8AAAAf//+AAAAA//8AAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAEAAAAD4AHwAAAB/AD+AAAAfwA/gAAAH8AP4AAAB/AD+AAAAfwA/gAAAD4AHwAAAAMAAYAAAAAAAAAAAAAAAAA'),
|
||||
46,
|
||||
atob('DRYqEykpKiwsJi0rDQ=='),
|
||||
50 | 65536
|
||||
)
|
||||
return this
|
||||
}
|
||||
|
||||
// Medium = 16px ()
|
||||
Graphics.prototype.setMediumFont = function () {
|
||||
this.setFontCustom(
|
||||
atob('AAAAAAAADwAAAB8AAAAPAAAAGwAAAb8AAB/9AAH/kAAv+QAA/4AAAPQAAAACvkAAH//wAD///AC/Qf4A/AA/APQAHwDwAA8A9AAfAPwAPwC+Qf4AP//8AB//9AAG/4AAoAAAAPAAAAD4AAAA////AL///wAv//8AAAAAAPAL/wDwH/8A8D//APA9DwDwPA8A8DwPAPA8DwDwPA8A9DwPAP78DwD/+A8AL+APAPAADwDwAA8A8BQPAPA8DwDwPA8A8DwPAPA8DwDwPA8A9DwfAP7/vwD///8AP+v8AAUBUACqqQAA//9AAP//wABVW8AAAAPAAAADwAAAA8AAAAPAAAADwAD///8A////AP///wAAA8AAAAKAAAAAAAD//A8A//wPAP/8DwDwPA8A8DwPAPA8DwDwPA8A8DwPAPA8DwDwPR8A8D+/APAv/gCgC/gAC//gAD///AC///4A/Tx/APg8LwDwPA8A8DwPAPA8DwDwPA8A8D0fAPA/vwDwL/4AoAv4AAAAQABQAAAA8AAHAPAAHwDwAL8A8AP/APAf+ADwf9AA8v9AAP/4AAD/4AAA/0AAAP0AAAAAAEAAL9v4AL///gD//78A+H0vAPA8DwDwPA8A8DwPAPA8DwDwPA8A9D0fAP7/vwD///8AP9v8AC/4AAC//g8A/r8PAPQfDwDwDw8A8A8PAPAPDwDwDw8A+A8fAP5PfwC///4AL//8AAb/4AAAAAAAAAAAAAA8DwAAfB8AADwPAA=='),
|
||||
46,
|
||||
atob('BAcNBg0NDg4ODA4OBA=='),
|
||||
16 | 131072
|
||||
)
|
||||
return this
|
||||
}
|
||||
|
||||
/* VARIABLES */
|
||||
// Const
|
||||
const H = g.getHeight()
|
||||
const W = g.getWidth()
|
||||
// Mutable
|
||||
let timer = null
|
||||
|
||||
/* UTILITY FUNCTIONS */
|
||||
// Return String of Current Time
|
||||
function getCurrentTime () {
|
||||
try {
|
||||
const d = new Date()
|
||||
const h = d.getHours()
|
||||
const m = d.getMinutes()
|
||||
return `${h}:${m.toString().padStart(2, 0)}`
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
return '0:00'
|
||||
}
|
||||
}
|
||||
|
||||
// Return String of Current Date
|
||||
function getCurrentDate () {
|
||||
try {
|
||||
const d = new Date()
|
||||
const year = d.getFullYear()
|
||||
const month = d.getMonth()
|
||||
const day = d.getDate()
|
||||
const display = `${month + 1}.${day.toString().padStart(2, 0)}.${year}`
|
||||
return display
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
return '0.0.0000'
|
||||
}
|
||||
}
|
||||
|
||||
// Set A New Draw for the Next Minute
|
||||
function setNextDraw () {
|
||||
console.log('tick')
|
||||
// Clear Timeout
|
||||
if (timer) {
|
||||
clearInterval(timer)
|
||||
}
|
||||
// Calculate time until next minute
|
||||
const d = new Date()
|
||||
const s = d.getSeconds()
|
||||
const ms = d.getMilliseconds()
|
||||
const delay = 60000 - (s * 1000) - ms
|
||||
// Set Timeout
|
||||
timer = setInterval(draw, delay)
|
||||
}
|
||||
|
||||
function draw () {
|
||||
// Reset Variables
|
||||
g.reset()
|
||||
// Set Background Color
|
||||
g.setBgColor(0, 0, 0)
|
||||
// Draw Background
|
||||
g.setColor(0, 0, 0)
|
||||
g.fillRect(0, 0, W, H)
|
||||
// Set Font for Time
|
||||
g.setColor(0, 0.93, 0)
|
||||
g.setLargeFont()
|
||||
g.setFontAlign(0, 0)
|
||||
// Draw Time
|
||||
const time = getCurrentTime()
|
||||
g.drawString(time, W / 2, H / 2, true /* clear background */)
|
||||
// Set Font for Date
|
||||
g.setColor(0, 0.75, 0)
|
||||
g.setMediumFont()
|
||||
g.setFontAlign(0, 1)
|
||||
// Draw Date
|
||||
const dateStr = getCurrentDate()
|
||||
g.drawString(dateStr, W / 2, H - 45, true)
|
||||
// Draw Border
|
||||
g.setColor(0, 0.93, 0)
|
||||
g.drawLine(5, 36, W - 5, 36)
|
||||
g.drawLine(5, H - 9, W - 5, H - 9)
|
||||
g.setColor(0, 0.18, 0)
|
||||
g.fillRect(0, 27, W, 32)
|
||||
g.fillRect(0, H, W, H - 5)
|
||||
// Draw Widgets
|
||||
Bangle.drawWidgets()
|
||||
// Schedule Next Draw
|
||||
setNextDraw()
|
||||
}
|
||||
|
||||
/* MAIN LOOP */
|
||||
function main () {
|
||||
// Clear Screen
|
||||
g.clear()
|
||||
// Set as Clock to Enable Launcher Screen on BTN1
|
||||
Bangle.setUI('clock')
|
||||
// Load Widgets
|
||||
Bangle.loadWidgets()
|
||||
// Draw Clock
|
||||
draw()
|
||||
}
|
||||
|
||||
/* BOOT CODE */
|
||||
main()
|
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"id":"fallout_clock",
|
||||
"name":"Fallout Clock",
|
||||
"version":"0.21",
|
||||
"description":"A simple clock for the Fallout fan",
|
||||
"icon":"icon.png",
|
||||
"type":"clock",
|
||||
"tags": "clock,fallout,green,retro",
|
||||
"supports": ["BANGLEJS2"],
|
||||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name":"fallout_clock.app.js", "url":"clock.js"},
|
||||
{"name":"fallout_clock.img", "url":"app-icon.js", "evaluate":true}
|
||||
],
|
||||
"screenshots": [
|
||||
{"url":"./screenshot.png", "name":"Fallout Clock Screenshot"}
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
Loading…
Reference in New Issue