mirror of https://github.com/espruino/BangleApps
Grocery: Refactor to store grocery list in separate file
parent
f2d8895d16
commit
0be85f8b24
|
@ -1328,14 +1328,13 @@
|
|||
"id": "grocery",
|
||||
"name": "Grocery",
|
||||
"icon": "grocery.png",
|
||||
"version":"0.01",
|
||||
"version":"0.02",
|
||||
"description": "Simple grocery (shopping) list - Display a list of product and track if you already put them in your cart.",
|
||||
"tags": "tool,outdoors,shopping,list",
|
||||
"type": "app",
|
||||
"custom":"grocery.html",
|
||||
"storage": [
|
||||
{"name":"grocery"},
|
||||
{"name":"grocery.app.js"},
|
||||
{"name":"grocery.app.js", "url":"app.js"},
|
||||
{"name":"grocery.img","url":"grocery-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
0.01: New App!
|
||||
0.02: Refactor code to store grocery list in separate file
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
var filename = 'grocery_list.json';
|
||||
var settings = require("Storage").readJSON(filename,1)|| { products: [] };
|
||||
|
||||
function updateSettings() {
|
||||
require("Storage").writeJSON(filename, settings);
|
||||
Bangle.buzz();
|
||||
}
|
||||
|
||||
function twoChat(n){
|
||||
if(n<10) return '0'+n;
|
||||
return ''+n;
|
||||
}
|
||||
|
||||
const mainMenu = settings.products.reduce(function(m, p, i){
|
||||
const name = twoChat(p.quantity)+' '+p.name;
|
||||
m[name] = {
|
||||
value: p.ok,
|
||||
format: v => v?'[x]':'[ ]',
|
||||
onchange: v => {
|
||||
settings.products[i].ok = v;
|
||||
updateSettings();
|
||||
}
|
||||
};
|
||||
return m;
|
||||
}, {
|
||||
'': { 'title': 'Grocery list' }
|
||||
});
|
||||
mainMenu['< Back'] = ()=>{load();};
|
||||
E.showMenu(mainMenu);
|
|
@ -105,56 +105,9 @@
|
|||
}
|
||||
|
||||
document.getElementById("upload").addEventListener("click", function() {
|
||||
|
||||
|
||||
var app = `
|
||||
var newTime = ${Date.now()}
|
||||
var products = ${JSON.stringify(products)}
|
||||
var newTime = newTime;
|
||||
var filename = 'grocery';
|
||||
var settings = require("Storage").readJSON(filename,1)|| null;
|
||||
function getSettings(){
|
||||
return {
|
||||
products : products,
|
||||
date: newTime
|
||||
};
|
||||
}
|
||||
if(!settings || !settings.date || settings.date < newTime){
|
||||
settings = getSettings();
|
||||
Bangle.buzz(500);
|
||||
}
|
||||
function updateSettings() {
|
||||
require("Storage").writeJSON(filename, settings);
|
||||
Bangle.buzz();
|
||||
}
|
||||
function twoChat(n){
|
||||
if(n<10) return '0'+n;
|
||||
return ''+n;
|
||||
}
|
||||
const mainMenu = settings.products.reduce(function(m, p, i){
|
||||
const name = twoChat(p.quantity)+' '+p.name;
|
||||
m[name] = {
|
||||
value: p.ok,
|
||||
format: v => v?'[x]':'[ ]',
|
||||
onchange: v => {
|
||||
settings.products[i].ok = v;
|
||||
updateSettings();
|
||||
}
|
||||
};
|
||||
return m;
|
||||
}, {
|
||||
'': { 'title': 'Grocery list' }
|
||||
});
|
||||
mainMenu['< Back'] = ()=>{load();};
|
||||
E.showMenu(mainMenu);
|
||||
`;
|
||||
|
||||
var icon = `require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AQ0QACF1nGAAIxpFoYwqFwwwnRggwGB4eFAggACLzwHCMAeF1WGAgOGw2x2IGCLzYGEF4YpBwotCFwJfWFwo1GSAYtBAIIABRq4vFMhAwBzoAFdzIuKAAOc4IAGGC4qEMZOiF44wXFxovleBYvIGCwmB0WjE4V/AgfG1IvCzujFQOjwoECF6WFwovBDYOFEwN/AgIwCAgOFBwYrBBAQEBzodCF6AAHww1CBpIODAAYvRDAWG2IEBAYYJFBxICCF6Ox1WxAAQfBAYQlCAAIOJAQIvUADQvn1WGR4RfbP4gAFBwgFCF7a5EdwQADF46/cL9wAQF94AGF85bB1TvmF47vdJ4bvFF8qPRFgLv/L7jPCaQq/fYYrvgJgoAGd/7v/F/4v/F5oAdF54weFyAA/AH4A3A="))`;
|
||||
sendCustomizedApp({
|
||||
storage:[
|
||||
{name:"grocery.app.js", url:"app.js", content:app},
|
||||
{name:"grocery.img", content:icon, evaluate:true},
|
||||
{name:"grocery"}
|
||||
{ name:"grocery_list.json", content: JSON.stringify({products: products}) }
|
||||
]
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue