mirror of https://github.com/espruino/BangleApps
81 lines
4.1 KiB
HTML
81 lines
4.1 KiB
HTML
<html>
|
|
<head>
|
|
<link rel="stylesheet" href="../../css/spectre.min.css">
|
|
</head>
|
|
<body>
|
|
|
|
<p>Line 1: <input type="text" id="line1" class="form-input" value="Merry Christmas"></p>
|
|
<p>Line 2: <input type="text" id="line2" class="form-input" value="Someone"></p>
|
|
<p>Line 3 (smaller): <input type="text" id="line3" class="form-input" value="Love from"></p>
|
|
<p>Line 4 (smaller): <input type="text" id="line4" class="form-input" value="Espruino Team"></p>
|
|
<p><button id="try" class="btn">Try in Emulator</button></p>
|
|
<p><button id="upload" class="btn btn-primary">Upload</button></p>
|
|
<p>This is currently Christmas-themed, but more themes will be added in the future.</p>
|
|
|
|
<script src="../../core/lib/customize.js"></script>
|
|
|
|
<script>
|
|
function getApp() {
|
|
// get the text to add
|
|
var line1 = document.getElementById("line1").value;
|
|
var line2 = document.getElementById("line2").value;
|
|
var line3 = document.getElementById("line3").value;
|
|
var line4 = document.getElementById("line4").value;
|
|
// build the app's text using a templated String
|
|
return `
|
|
(function() {
|
|
var isnow = require("heatshrink").decompress(atob("iUUxH+AA/X64KICA4SPCKI1KBAIKFCIwOCFw4FHA4QEIBZoALFYwGKM5YRdHhxPGBJB9Ua5IYGYpzpRNxISOCKI1KA=="))
|
|
var itree = require("heatshrink").decompress(atob("mtWxH+ADHHDTI0aGuXH5vNGmhqvTYIzBGtoxF6fTG4g4oGgQyBAAZssGoI0Ga1g1FGdo01ZgIAEGmHHNoLSuAAN/rdb0YFBGlgCBGYIABA4YArGYY1CGn4znAAM6GeVd5PQ5Iyurc/vQ0oGZFAn+d4XC3d5GddiGYIEBy+7zoEBGlFhoEcsQ9GT08+oFk1mkGdaVBMgNArnJ6/KzswGs/J6GlrlbqtbvPC5PCy8wGohniMIPJvIpCqmX3e7vI0BqhqlMIY0DqhtBqoEBa0xgBMIIoEqoABGQwzfsIhBv4qHABM50vQGjg1CGaN66DoBGt1ioGd5LoBGjo1PGYNhvLoCa7wnBqgvGA4YzCAgN5GUAsCqoDBmAHCAYU/wPQ0oSDGcBiDqkwAYcxoFd5PX6GdGjrIIqtUAAc3jk5vPC4fCy5pef5I2BTQMcnAHBy+7y95T0oADnFk1ekBpI2aGRUin7NGAA9hsIzVsIgHTAKZBZoPJ5LNDGhBpXGolcwOsrtcA4TNB3bNDGb/+sVin9AoGe6HX5InEvN/TkP+5XQwM/sRsBzqWB4QuKGjvC6HQ4QdDvKWBZYMwmAuHmFUCYNbqibX3fD5O7qolEZQQ0FBwgKDqgJBGiphEDwNUEgJbBFIQqCAgYOCB4IzCnE6GyhYFGoQnDABYzGAAQ1UAAo2NBoQSBnOB0t/Gjo2EABIPCoGe6HX4QzTGRIAEqtVF4QEBBQc4oE4y/J5PCvIxeABk/oADBvO73eXTyAyZMwM/Awd5vIOFGslAr2Av4PLNcU/jmA6HX5I1KasFcn8dTIOd5PJ4SZGGiNhAAIyNn0ckU+ZYe7AAJpJEYJnNGZk+n9kw9cBAcwGoN5aZg1JJJQABm8/oEjoDKC5ALCrUwqh/NrvQ6HDGp04n9doEdoE/sQJBZQZhCqgABGZk6zw0K/1dnVAoNAFwOlCYL1FubJBy4GCGh1AnOX4XC3YzHFYOeCgdV5PQ5OdD4rKBqqYNGYlbv+X3edGY3CGgKMDAAO7JAJgDAClcr2BEYgADaIZ0DL4uXGbDuB6HX5I1GsP+sNhOgWXIhBmWd4Od5PK4TwFGIJoBAYI2BAD0/jlcQoO7AAJaEGQQADGr0/sjNEvOdAoZmDGgw2ZsVAkeAZpQACGZI2VsU/kVGn1bZoPJZogpGGhA4GfRYwBoGC1mlBQbNFFoo0JNxAGCEod/wM6oFAn9iv/J6/Kzo1Ey9/MZQAKCg4GCFgTDEvPCSwI0BC5I0RN4ocEYYPQ5OdHgeXSwTFKGaJyKFYPC3f+MIdbpzFLAD4zB/1OqtbqtOGgYArGAIADGl9UAAI0wGQN5GoQ0vvIABGoI0uGYQABqo0zNOg0uaQY0/GllOGn40//w="));
|
|
|
|
var W=240,H=160;
|
|
var flakes = [];
|
|
for (var i=0;i<10;i++) {
|
|
flakes.push({y:Math.random()*H,x:(0.5+(i<5?i:i+5))*W/15,v:1+Math.random(),s:0.4+Math.random(),r:0,t:0.1*(Math.random()-0.5)});
|
|
}
|
|
|
|
function draw() {
|
|
flakes.forEach(f=>{
|
|
g.clearRect(f.x-16,f.y-16,f.x+16,f.y+16);
|
|
});
|
|
flakes.forEach(f=>{
|
|
f.y+=f.v;f.r+=f.t;
|
|
if (f.y>H+16) f.y=-8;
|
|
g.drawImage(isnow,f.x,f.y,{rotate:f.r,scale:f.s});
|
|
});
|
|
var x = W/2, y = H/2;
|
|
g.drawImage(itree,x-27,y-80);
|
|
g.setFont("6x8",2).setFontAlign(0,0);
|
|
g.drawString(${JSON.stringify(line1)},x,y+=20);
|
|
g.drawString(${JSON.stringify(line2)},x,y+=20);
|
|
g.setFont("6x8");
|
|
g.drawString(${JSON.stringify(line3)},x,y+=20);
|
|
g.drawString(${JSON.stringify(line4)},x,y+=10);
|
|
g.flip();
|
|
}
|
|
|
|
Bangle.setLCDMode("doublebuffered")
|
|
g.clear().flip();
|
|
g.clear().flip();
|
|
setInterval(draw,50);
|
|
})();
|
|
`;
|
|
}
|
|
// when 'try' is clicked, load the emulator...
|
|
document.getElementById("try").addEventListener("click", function() {
|
|
window.open("https://www.espruino.com/ide/emulator.html?code="+encodeURIComponent(getApp())+"&upload");
|
|
});
|
|
|
|
// When the 'upload' button is clicked...
|
|
document.getElementById("upload").addEventListener("click", function() {
|
|
// send finished app (in addition to contents of app.json)
|
|
sendCustomizedApp({
|
|
storage:[
|
|
{name:"mywelcome.custom.js", url:"app.js", content:getApp()},
|
|
]
|
|
});
|
|
});
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|