Add files via upload

master
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.01: (2024-02-23) initial alpha upload
0.02: (2023-02-23) fixing minor issues with settings 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 ## Modes
* **Idle** * **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. `Button` switches to start mode.
* **Start** * **Start**
During the countdown, the screen changes the layout several times to use as much space as 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. When time is up the buzzer sounds and the application switches to race mode.
`Button` switches to idle mode. `Button` switches to idle mode.
* **Race** * **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". `Button` switches to "stopped mode".
* **Stoped** * **Stoped**
The race counter stops.
`Button` switches to idle mode. `Button` switches to idle mode.
## Screenshots ## Screenshots
![Start mode minutes and seconds](screenshot-1.png) *Idle mode: showing a big 5 and time of day below*
![Start mode seconds](screenshot-2.png) ![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
Localization is done by the Bangle.js 2 app "Languages" Localization is done by the Bangle.js 2 app "Languages"
* Go to: https://banglejs.com/apps/ * Go to [banglejs.com/apps](https://banglejs.com/apps/)
* Search for app: Languages * Search for app "Languages"
* Click the "arrow up" or "burger" icon * Click the "arrow up" or "burger" icon
* Choose your language from the dropdown * Choose your language from the dropdown
* Click `upload` * Click `upload`
**Some nautical abbreviations which are not part of the banglejs2 Languages packages are stored in `translations.json`.**
## Feedback ## 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 ## 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", "id": "regattatimer",
"name": "Regatta Timer", "name": "Regatta Timer",
"shortName": "RegattaTimer", "shortName": "RegattaTimer",
"version": "0.2", "version": "0.3",
"description": "Regatta Timer with 5-4-1 Countdown", "description": "Regatta Timer with 5-4-1 Countdown",
"icon": "icon.png", "icon": "icon.png",
"screenshots": [{"url":"screenshot.png"}],
"tags": "tool,outdoors,sailing,race,regatta,boat,timer", "tags": "tool,outdoors,sailing,race,regatta,boat,timer",
"supports": ["BANGLEJS2"], "supports": ["BANGLEJS2"],
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name": "regattatimer.app.js", "url": "app.js"}, {"name": "regattatimer.app.js", "url": "app.js"},
{"name": "regattatimer.settings.js", "url": "settings.js"}, {"name": "regattatimer.settings.js", "url": "settings.js"},
{"name":"regattatimer.img","url":"app-icon.js","evaluate":true} {"name": "regattatimer.img", "url": "app-icon.js", "evaluate": true},
], ],
"data": [{"name": "regattatimer.json"}], "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, "debug": false,
"dial": "numeric", "buzzer": true,
"dial": "Numeric",
"gps": false, "gps": false,
"compass": false, "record": false,
"theme": "Dark",
"fgColor": "#FFFF00", "fgColor": "#FFFF00",
"bgColor": "#000000" "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) { (function(back) {
var file = "regattatimer.json"; var
// Load settings file = "regattatimer.json",
var settings = Object.assign({
storage = require("Storage"),
dials = ["Numeric", "Discs"],
themes = ["Light", "Dark"],
settings = Object.assign({
"debug": false, "debug": false,
"dial": "numeric", "buzzer": true,
"dial": "Numeric",
"gps": false, "gps": false,
"compass": false, "record": false,
"theme": "Dark",
"fgColor": "#FFFF00", "fgColor": "#FFFF00",
"bgColor": "#000000" "bgColor": "#000000"
}, require('Storage').readJSON(file, true) || {}); }, storage.readJSON(file, true) || {});
function writeSettings() { function save(key, value) {
require('Storage').writeJSON(file, settings); settings[key] = value;
storage.writeJSON(file, settings);
} }
// Show the menu
E.showMenu({ E.showMenu({
"" : { "title" : "Regatta Timer" }, "" : { "title" : "Regatta Timer" },
"< Back" : () => back(), "< Back" : () => back(),
'GPS': { "GPS": {
value: !!settings.gps, // !! converts undefined to false value: !!settings.gps, // !! converts undefined to false
onchange: v => { onchange: v => {
settings.gps = v; save("gps", v);
writeSettings();
} }
}, },
'COMPASS': { "THEME": {
value: !!settings.compass, // 0| converts undefined to 0 value: themes.indexOf(settings.theme),
onchange: v => {
settings.compass = v;
writeSettings();
}
},
"DIAL": {
value: settings.dial,
min: 0, min: 0,
max: 1, max: themes.length - 1,
format: v => ["Numeric", "Disc"][v], step: 1,
onchange: v => { wrap: true,
settings.dial = v; format: v => themes[v],
writeSettings(); 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 value: !!settings.debug, // 0| converts undefined to 0
onchange: v => { onchange: v => {
settings.debug = v; save("debug", v);
writeSettings();
} }
}, },
}); });