diff --git a/apps.json b/apps.json index fd2e14e60..8640433ee 100644 --- a/apps.json +++ b/apps.json @@ -54,6 +54,20 @@ } ] }, + { "id": "golfscore", + "name": "Golf Score", + "shortName":"golfscore", + "version":"0.01", + "description": "keeps track of strokes during a golf game", + "icon": "app.png", + "tags": "outdoors", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"golfscore.app.js","url":"app.js"}, + {"name":"golfscore.img","url":"app-icon.js","evaluate":true} + ] + }, { "id": "messages", "name": "Messages", diff --git a/apps/golfscore/ChangeLog b/apps/golfscore/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/golfscore/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/golfscore/README.md b/apps/golfscore/README.md new file mode 100644 index 000000000..dc139bc9a --- /dev/null +++ b/apps/golfscore/README.md @@ -0,0 +1,25 @@ +# App Name + +Describe the app... + +Add screen shots (if possible) to the app folder and link then into this file with ![](.png) + +## Usage + +Describe how to use it + +## Features + +Name the function + +## Controls + +Name the buttons and what they are used for + +## Requests + +Name who should be contacted for support/update requests + +## Creator + +Your name diff --git a/apps/golfscore/app-icon.js b/apps/golfscore/app-icon.js new file mode 100644 index 000000000..3be680569 --- /dev/null +++ b/apps/golfscore/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("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")) \ No newline at end of file diff --git a/apps/golfscore/app.js b/apps/golfscore/app.js new file mode 100644 index 000000000..b971087ad --- /dev/null +++ b/apps/golfscore/app.js @@ -0,0 +1,62 @@ +const menu = require("graphical_menu"); + +let holes_count = 18; +let course = new Array(holes_count).fill(0); +let total_strokes = 0; + +const mainmenu = { + "": { + "title": "-- Golf --" + }, + "Holes": { + value: holes_count, + min: 1, max: 20, step: 1, wrap: true, + onchange: v => { holes_count = v; add_holes(); } + }, + "Total Strokes": { + value: total_strokes, + }, +}; + +function updateTotalStrokes() { + total_strokes = course.reduce((acc, strokes) => acc + strokes, 0); + mainmenu["Total Strokes"].value = total_strokes; +} + +function inc_hole(i) { return function (v) { course[i] = v; updateTotalStrokes(); }; } + +function add_holes() { + for (let j = 0; j < 100; j++) { + delete mainmenu["Hole - " + (j + 1)]; + } + for (let i = 0; i < holes_count; i++) { + course[i] = 0; + mainmenu["Hole - " + (i + 1)] = hole_menu(i); + } + E.showMenu(mainmenu); +} + +function hole_menu(i) { + return function () { + E.showMenu(submenu(i)); + }; +} + +function submenu(i) { + return { + "": { + "title": `-- Hole ${i + 1}--` + }, + "strokes:": { + value: course[i], + min: 1, max: 20, step: 1, wrap: true, + onchange: inc_hole(i) + }, + "Next hole": hole_menu(i + 1), + "< Back": function () { E.showMenu(mainmenu); }, + }; +} + +g.clear(); +add_holes(); +E.showMenu(mainmenu); \ No newline at end of file diff --git a/apps/golfscore/app.png b/apps/golfscore/app.png new file mode 100644 index 000000000..fc5d51557 Binary files /dev/null and b/apps/golfscore/app.png differ diff --git a/apps/hebrew_calendar/ChangeLog b/apps/hebrew_calendar/ChangeLog index d7dbc19e3..8533c1df3 100644 --- a/apps/hebrew_calendar/ChangeLog +++ b/apps/hebrew_calendar/ChangeLog @@ -1,3 +1,4 @@ 0.01: New App! 0.02: using TS and rollup to bundle -0.03: bug fixes and support bangle 1 \ No newline at end of file +0.03: bug fixes and support bangle 1 +0.04: don't allow date to change & docs \ No newline at end of file