mywelcome: Add birthday style

pull/581/head
Gordon Williams 2020-10-16 11:42:33 +01:00
parent 86b82d3ae8
commit c95069a5b6
3 changed files with 64 additions and 4 deletions

View File

@ -122,7 +122,7 @@
"name": "Customised Welcome",
"shortName": "My Welcome",
"icon": "app.png",
"version":"0.09",
"version":"0.10",
"description": "Appears at first boot and explains how to use Bangle.js. Like 'Welcome', but can be customised with a greeting",
"tags": "start,welcome",
"custom":"custom.html",

View File

@ -11,3 +11,4 @@
0.09: Allow welcome to run after a fresh install
More useful app menu
BTN2 now goes to menu on release
0.10: Add birthday style

View File

@ -3,11 +3,17 @@
<link rel="stylesheet" href="../../css/spectre.min.css">
</head>
<body>
<div class="form-group">
<p>Style: <select class="form-select" id="style">
<option>Christmas</option>
<option>Birthday</option>
</select>
</div></p>
<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>
</div>
<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>
@ -21,9 +27,62 @@ function getApp() {
var line2 = document.getElementById("line2").value;
var line3 = document.getElementById("line3").value;
var line4 = document.getElementById("line4").value;
var style = document.getElementById("style").value;
// build the app's text using a templated String
return `
(function() {
if (style=="Birthday") return `(function() {
var ib = require("heatshrink").decompress(atob("jEtwgHEhOZzOQCQwJBAAYVHAAYZEAwOTn/znIYECwOT/84DAwEBBQoYCCwOf+YKFDAILBn4rCBY4WHBYI5B/ALHKAQiHAAWfxILKBRIjBBawAKUoxrGBarVGbIoLLEhDLCBZYkIfYYYGCwYLMEgwKEBgoKGEoYhFBggKJEgQLVgUgBZMzmALKBRILYgYvKgYwjBZQ7LgALLAAoA="));
var ir = require("heatshrink").decompress(atob("jEtwgHEhvd7vQCQwJBAAYVHAAYZEAwPT///noYECwIKBmYYGAgP//oxGCwPf+YKFDAILBn4rCBY//BQwLBHIItGAAffEQ4LPBRILM6YLKABSlGNYwLVaozZFBZYkIZYQLLEhD7DDAwWDBZgkGBQgMFBQwlDEIoADhnABREA5nMBasCoALJmcwBZQKJBbEDF5UDGEYLKHZcABZYAF"));
var ig = require("heatshrink").decompress(atob("jEtwgHEg93u9wCQwJBAAYVHAAYZEAwNz///m4YECwIKBmYYGAgP/+QxGCwN/+YKFDAILBn4rCBY//BQwLBHIItGAAd/EQ4LPBRILMuYLKABSlGNYwLVaozZFBZYkIZYQLLEhD7DDAwWDBZgkGBQgMFBQwlDEIoMEBRIkCBasCkALJmcwBZQKJBbEDF5UDGEYLKHZcABZYAFA"));
var igift = require("heatshrink").decompress(atob("q1QxH+ADOi0QbZ5nMHDQAbKgIACKa4ACKnJWVKghW0KgxWTKgxWyKhBWRKhBWwKhRWPKhRWuKhhWNKhhWtKpxWKKhys8KxBU8Ky5U+KypU/KyhU/KyhU/KynGKn5WTKn5WUKmHCADpJJE7uYABZUfKuuYKv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/AAv+Kv5VT/wADyIAaKpIlbABZSEKv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/Kv5V/ADNtKv6rdKzZVwKhAABy5V/Khw"));
var W=240,H=160;
var blns = [];
function updateFlake(f) {
f.im = [ir,ig,ib][Math.round(Math.random()*100)%3];
f.s = 0.4+Math.random();
}
for (var i=0;i<6;i++) {
var f = {
y:Math.random()*H,x:(0.5+(i<3?i:i+3))*W/9,
v:1+Math.random(),r:0,
t:(0.5+Math.random())*0.2,
};
updateFlake(f);
blns.push(f);
}
function draw() {
blns.forEach(f=>{
var s = f.s*18;
g.clearRect(f.x-s,f.y-s*2,f.x+s,f.y+s*2);
});
blns.forEach(f=>{
f.y-=f.v;f.r+=f.t;
if (f.y<-22) {
f.y=H+22;
updateFlake(f);
}
g.drawImage(f.im,f.x,f.y,{rotate:Math.sin(f.r)/2,scale:f.s});
});
var x = W/2, y = H/2;
g.drawImage(igift,x-43,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);
})()`;
// if (style=="Christmas")
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="));