mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
7 lines
3.3 KiB
JavaScript
7 lines
3.3 KiB
JavaScript
(function(k){function t(a,b){if("number"!=typeof a.value)return console.log("Unhandled item type");var h=a.step||1;if(void 0!==a.min&&void 0!==a.max&&20>(a.max-a.min)/h)E.showScroller({h:40,c:(a.max+h-a.min)/h,scrollMin:-24,scroll:-24,draw:(f,c)=>{if(0>f)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,c.x+12,c.y+40-12);g.setColor(g.theme.bg2).fillRect({x:c.x+
|
|
4,y:c.y+2,w:c.w-8,h:c.h-4,r:5});f=f*h+a.min;g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString(a.format?a.format(f):f,c.x+12,c.y+20);g.drawImage(atob(f==a.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"),c.x+c.w-32,c.y+20-10)},select:function(f){if(!(0>f)){Bangle.buzz(20);a.value=a.min+f*h;if(a.onchange)a.onchange(a.value);n.scroll=s.scroll;s=E.showScroller(n)}}});else{var d=
|
|
Bangle.appRect,e=a.value;g.reset().clearRect(Bangle.appRect);g.setFont("12x20").setFontAlign(0,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,d.x+d.w/2,d.y+12);function f(){var c=d.x+d.w/2,l=12+d.y+d.h/2;g.reset().setColor(g.theme.bg2).fillRect({x:d.x+24,y:d.y+36,w:d.w-48,h:d.h-48,r:5});g.setColor(g.theme.fg).setFontVector(30).setFontAlign(0,0).drawString(a.format?a.format(e):e,c,l);g.fillPoly([c,l-45,c+15,l-30,c-15,
|
|
l-30]).fillPoly([c,l+45,c+15,l+30,c-15,l+30])}f();Bangle.setUI("updown",c=>{if(c)e-=(c||1)*(a.step||1),void 0!==a.min&&e<a.min&&(e=a.wrap?a.max:a.min),void 0!==a.max&&e>a.max&&(e=a.wrap?a.min:a.max),f();else{a.value=e;if(a.onchange)a.onchange(a.value);n.scroll=s.scroll;s=E.showScroller(n)}})}}if(void 0===k)return g.clearRect(Bangle.appRect),Bangle.setUI();var p=k[""]||{};p.title||(p.title="Menu");var q=p.back||k["< Back"],m=Object.keys(k).filter(a=>""!=a&&"< Back"!=a);m.forEach(a=>{a=k[a];"object"!=
|
|
typeof a||"boolean"!=typeof a.value||a.format||(a.format=b=>"\x00"+atob(b?"EhKBAH//v/////////////5//x//j//H+eP+Mf/A//h//z//////////3//g":"EhKBAH//v//8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA///3//g"))});var r={draw:()=>s.draw()},n={h:40,c:m.length,scrollMin:-24,scroll:-24,back:q,draw:(a,b)=>{if(0>a)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+p.title,b.x+12,b.y+40-12);g.setColor(g.theme.bg2).fillRect({x:b.x+
|
|
4,y:b.y+2,w:b.w-8,h:b.h-4,r:5});g.setColor(g.theme.fg).setFont("12x20");var h=24,d=k[m[a]];if("object"==typeof d){var e=d.value;d.format&&(e=d.format(e));g.stringMetrics(e).width>b.w/2&&(e=g.wrapString(e,b.w/2).join("\n"));g.setFontAlign(1,0).drawString(e,b.x+b.w-8,b.y+20);h+=g.stringWidth(e)}else"function"==typeof d&&(g.drawImage(atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="),b.x+b.w-21,b.y+20-9),h+=16);a=g.wrapString(m[a],b.w-h);1<a.length&&g.setFont("6x15");g.setFontAlign(-1,0).drawString(a.join("\n"),
|
|
b.x+12,b.y+20)},select:function(a){if(0>a)return q&&q();var b=k[m[a]];Bangle.buzz(20);if("function"==typeof b)b(r);else if("object"==typeof b)if("boolean"==typeof b.value){b.value=!b.value;if(b.onchange)b.onchange(b.value);s.drawItem(a)}else t(b,m[a])}};s=E.showScroller(n);return r}) |