Add files via upload

pull/3236/head
naden 2024-03-01 15:31:42 +01:00 committed by GitHub
parent 2621e53765
commit 5d13118416
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 289 additions and 255 deletions

View File

@ -1,2 +1,3 @@
0.01: (2023-02-23) initial alpha upload
0.02: (2023-02-23) fixing minor issues with settings
0.01: (2024-02-23) initial alpha upload
0.02: (2024-02-23) fixed minor issues with settings
0.03: (2024-03-01) advanced settings, rearanged ui elements, fixed rendering problems

View File

@ -3,7 +3,7 @@
## Modes
* **Idle**
On startup the application is in idle mode showing a large 5 in the centre of the screen.
On startup the application is in idle mode showing a large 5 in the centre of the screen and the time of day below.
`Button` switches to start mode.
* **Start**
During the countdown, the screen changes the layout several times to use as much space as
@ -11,29 +11,55 @@
When time is up the buzzer sounds and the application switches to race mode.
`Button` switches to idle mode.
* **Race**
Race time, local time, SOA and number of GPS satellites available are displayed.
Race time, local time, SOA, number reachable GPS satellites and battery level are shown.
`Button` switches to "stopped mode".
* **Stoped**
The race counter stops.
`Button` switches to idle mode.
## Screenshots
![Start mode minutes and seconds](screenshot-1.png)
![Start mode seconds](screenshot-2.png)
*Idle mode: showing a big 5 and time of day below*
![Idle mode: showing a big 5 and time of day below](screenshot-1.png)
*Start mode: minutes and seconds*
![Start mode: minutes and seconds](screenshot-2.png)
*Start mode: seconds*
![Start mode: seconds](screenshot-3.png)
*Race mode: elapsed time, time of day, speed, satellites, battery*
![Race mode: elapsed time, time of day, speed, satellites, battery](screenshot-4.png)
*Race mode: with german abbreviations*
![Race mode: with german abbreviations](screenshot-5.png)
*Settings page: main*
![Settings page: main](screenshot-6.png)
*Settings page: choose the theme*
![Settings page: choose the theme](screenshot-7.png)
## Localization
Localization is done by the Bangle.js 2 app "Languages"
* Go to: https://banglejs.com/apps/
* Search for app: Languages
* Go to [banglejs.com/apps](https://banglejs.com/apps/)
* Search for app "Languages"
* Click the "arrow up" or "burger" icon
* Choose your language from the dropdown
* Click `upload`
**Some nautical abbreviations which are not part of the banglejs2 Languages packages are stored in `translations.json`.**
## Feedback
Report bugs, request a feature at https://www.github.com/naden
Report bugs or request a feature at [github.com/naden](https://github.com/naden)
## Roadmap
* adding a seconds coundown layout to mimic a classic regatta chronograph
## Created by
© 2021 - 2023 https://naden.de
© 2021 - 2024 [naden.de](https://naden.de)
Icons by [Icons8](https://icons8.com/)

View File

@ -1 +1 @@
require("heatshrink").decompress(atob("mEwxH+AH4A/ACaaCBRAIQ/2sF6IKSBBGsAAJfRBKQHGxAvCMKohEBBgACwQuDSLJfPwIuESCJAQAAouGMCQuVdgYvowIuJGEYuCF9YuNF53OAAS6PAAQvKGBguDGBouQF7iLDF9QuTGBgvNFwwvad5XB4OkCYwuOF5gAIFwPB4QvqFwRfYGBQmDAA6/CFyovVd4YvqBoYvXGBIqE3QOIGAgvbGAm6Lggvp3e7MBYuSF5RgRF6aQYGAQveeQoAEF7AtKF6GBFbYwTFbgAGsYAZF9xfvF/4wJrtdEIoHMFKNeAAQvDA4YmDA5ofHFpWCwQSDA7wvHBgOI1utxAFBA74vHBgIAlF/4v/F64A/AH4A7A"))
require("heatshrink").decompress(atob("mEw4n/8H/BAWlsEI0ExkFj0H34GcgHnwGUsHO4H/kEhkGl4He8HeI8dgCyvTiM0ruABxNoxAACwwIC4MRAAMUkAWHgoNCAAMdBIVBBAccuAXGsIXIwtEmIxD0AXFhgXIAAMI6oZCnIXFh1VqtRC44AB2RkCqBiHC5UAhIxBip5KC5EA8gwIyMRiYXKgyWBjIIEhQgBpIXKgEEEwKSEA4MU3IXLhYwBoAHDuMRn8JC5cA8cRi4eDTIOQC5oNBjgFChoFChEx4wXKgApB6BeDiQEBxVgC5chMAeBiM7CZYAD2cRjAEB6L3JAA7oBNwVRJgYANOQMVAgKtBwAXPhDRBAgMxiYDBylEB4lk+C3D6gnBCYYbDrAnFrngIgeUDoKoBgEGC4dHyxWEqgXDXAIXBLYNgC4ldykAhWoIwNk8EL1TIBC4pHEBYOAgV+gFV6mbg13C4hHCMYcGqEMd4fXuhOEC4R3DU4eUpLPFL4kFwCnEa6/RiNQC58FiMdAgOBiM7C5+ziMYMwURiQXPkMRoAEBgURjgXPUwJyDAoOQCxsJFIOwAwVxiM+C5vjiMXY4itBaoYAIgzRBLwQABhUxA4oAHE4MT0AIEyIwMFwRGEYwcRpwXJ8gNBdA9RHIKSIhJVBir3JTIMrBQuyWoIuIAAOTBgMTruAA4MI6otBiM3KZMKNYIZC4lMCoSDBRgoAFg4+CAAscuDjMhoxDFofQfZpaCoYVBmhkDACEGbpQAY"))

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -2,18 +2,17 @@
"id": "regattatimer",
"name": "Regatta Timer",
"shortName": "RegattaTimer",
"version": "0.2",
"version": "0.3",
"description": "Regatta Timer with 5-4-1 Countdown",
"icon": "icon.png",
"screenshots": [{"url":"screenshot.png"}],
"tags": "tool,outdoors,sailing,race,regatta,boat,timer",
"supports": ["BANGLEJS2"],
"readme": "README.md",
"storage": [
{"name":"regattatimer.app.js","url":"app.js"},
{"name":"regattatimer.settings.js","url":"settings.js"},
{"name":"regattatimer.img","url":"app-icon.js","evaluate":true}
{"name": "regattatimer.app.js", "url": "app.js"},
{"name": "regattatimer.settings.js", "url": "settings.js"},
{"name": "regattatimer.img", "url": "app-icon.js", "evaluate": true},
],
"data": [{"name": "regattatimer.json"}],
"screenshots": [{"url":"screenshot.png"},{"url":"screenshot-1.png"},{"url":"screenshot-2.png"}]
"screenshots": [{"url": "screenshot.png"},{"url": "screenshot-1.png"},{"url": "screenshot-2.png"},{"url": "screenshot-3.png"},{"url": "screenshot-4.png"},{"url": "screenshot-5.png"},{"url": "screenshot-6.png"},{"url": "screenshot-7.png"}]
}

View File

@ -1,8 +1,10 @@
{
"debug": false,
"dial": "numeric",
"buzzer": true,
"dial": "Numeric",
"gps": false,
"compass": false,
"record": false,
"theme": "Dark",
"fgColor": "#FFFF00",
"bgColor": "#000000"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,52 +1,79 @@
(function(back) {
var file = "regattatimer.json";
// Load settings
var settings = Object.assign({
"debug": false,
"dial": "numeric",
"gps": false,
"compass": false,
"fgColor": "#FFFF00",
"bgColor": "#000000"
}, require('Storage').readJSON(file, true) || {});
var
file = "regattatimer.json",
function writeSettings() {
require('Storage').writeJSON(file, settings);
storage = require("Storage"),
dials = ["Numeric", "Discs"],
themes = ["Light", "Dark"],
settings = Object.assign({
"debug": false,
"buzzer": true,
"dial": "Numeric",
"gps": false,
"record": false,
"theme": "Dark",
"fgColor": "#FFFF00",
"bgColor": "#000000"
}, storage.readJSON(file, true) || {});
function save(key, value) {
settings[key] = value;
storage.writeJSON(file, settings);
}
// Show the menu
E.showMenu({
"" : { "title" : "Regatta Timer" },
"< Back" : () => back(),
'GPS': {
"GPS": {
value: !!settings.gps, // !! converts undefined to false
onchange: v => {
settings.gps = v;
writeSettings();
save("gps", v);
}
},
'COMPASS': {
value: !!settings.compass, // 0| converts undefined to 0
onchange: v => {
settings.compass = v;
writeSettings();
}
},
"DIAL": {
value: settings.dial,
"THEME": {
value: themes.indexOf(settings.theme),
min: 0,
max: 1,
format: v => ["Numeric", "Disc"][v],
onchange: v => {
settings.dial = v;
writeSettings();
max: themes.length - 1,
step: 1,
wrap: true,
format: v => themes[v],
onchange: (d) => {
save("theme", themes[d]);
}
},
'DEBUG': {
"BUZZER": {
value: !!settings.buzzer, // !! converts undefined to false
onchange: v => {
save("buzzer", v);
}
},
/*
"DIAL": {
value: dials.indexOf(settings.dial),
min: 0,
max: dials.length - 1,
step: 1,
wrap: true,
format: v => dials[v],
onchange: (d) => {
save("dial", dials[d]);
}
},
"RECORD": {
value: !!settings.record, // 0| converts undefined to 0
onchange: v => {
settings.record = v;
save("record", v);
}
},
*/
"DEBUG": {
value: !!settings.debug, // 0| converts undefined to 0
onchange: v => {
settings.debug = v;
writeSettings();
save("debug", v);
}
},
});