|
34 | 34 | const stepIcon2 = atob('ExoBAfAAPgMHwfD4dx8ccAcH/8B/8Af8AH8AD+AB/AA/gAfwAP4AAAAD+AD/gBxwB48A4OA8HgcBwcAcOAOGADA='); |
35 | 35 |
|
36 | 36 |
|
| 37 | + let timeBetweenDraw = 200; |
| 38 | + |
37 | 39 | /* Draw Functions |
38 | 40 | ------------------------------------------------------------------------------*/ |
39 | | - |
40 | | - const drawAll = function () { |
41 | | - const date = new Date(); |
42 | | - |
43 | | - drawDate(date); |
44 | | - if (settings.showSeconds) drawSecs(date); |
45 | | - drawTime(date); |
46 | | - drawLower(); |
| 41 | + const drawBar = function (top, progress) { |
| 42 | + // draw frame |
| 43 | + g.drawRect(0, top, g.getWidth() - 1, top + 5); |
| 44 | + g.drawRect(1, top + 1, g.getWidth() - 2, top + 4); |
| 45 | + // clear bar area |
| 46 | + g.clearRect(2, top + 2, g.getWidth() - 3, top + 3); |
| 47 | + // draw bar |
| 48 | + const barLen = progress >= 1 ? g.getWidth() : (g.getWidth() - 4) * progress; |
| 49 | + if (barLen < 1) return; |
| 50 | + g.drawLine(2, top + 2, barLen + 2, top + 2); |
| 51 | + g.drawLine(2, top + 3, barLen + 2, top + 3); |
47 | 52 | }; |
48 | 53 |
|
49 | | - const drawLower = function (stepsOnlyCount) { |
50 | | - if (charging) { |
51 | | - drawCharge(); |
52 | | - } else { |
53 | | - drawSteps(stepsOnlyCount); |
54 | | - } |
55 | | - |
56 | | - drawWeather(); |
57 | | - }; |
| 54 | + g.clearRect(0,24,175,175); |
58 | 55 |
|
59 | | - const drawWeather = function () { |
60 | | - if (!settings.showWeather){ |
61 | | - return; |
62 | | - } |
| 56 | + let firstDate = new Date(); |
| 57 | + const drawTime = function (date) { |
| 58 | + const top = 72; |
| 59 | + g.reset(); |
63 | 60 |
|
64 | | - g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
65 | | - g.setFontAlign(1, 1); // right bottom |
66 | | - |
67 | | - try{ |
68 | | - const weather = require('weather'); |
69 | | - const w = weather.get(); |
70 | | - let temp = parseInt(w.temp-273.15); |
71 | | - temp = temp < 0 ? '\\' + String(temp*-1) : String(temp); |
| 61 | + const h = date.getHours(); |
| 62 | + g.setFontCustom(font, 48, 10, 1024 + 12); // triple size (2<<9) |
| 63 | + g.setFontAlign(-1, -1); // left top |
| 64 | + g.drawString((settings.twentyFourH ? h : (h % 12 || 12)).toString().padStart(2, 0), |
| 65 | + 0, top+12, true); |
| 66 | + g.setFontAlign(0, -1); // center top |
| 67 | + g.drawString(':', g.getWidth()/2, top+12, false); |
| 68 | + const m = date.getMinutes(); |
| 69 | + g.setFontAlign(1, -1); // right top |
| 70 | + g.drawString(m.toString().padStart(2, 0), |
| 71 | + g.getWidth(), top+12, true); |
72 | 72 |
|
73 | | - g.drawString(temp, g.getWidth()-40, g.getHeight() - 1, true); |
74 | | - |
75 | | - // clear icon area in case weather condition changed |
76 | | - g.clearRect(g.getWidth()-40, g.getHeight()-30, g.getWidth(), g.getHeight()); |
77 | | - weather.drawIcon(w, g.getWidth()-20, g.getHeight()-15, 14); |
| 73 | + if (settings.showAmPm) { |
| 74 | + g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
| 75 | + g.setFontAlign(1, 1); // right bottom |
| 76 | + g.drawString(h < 12 ? 'AM' : 'PM', g.getWidth(), g.getHeight() - 1, true); |
| 77 | + } |
| 78 | + g.flip(); |
78 | 79 |
|
79 | | - } catch(e) { |
80 | | - g.drawString("???", g.getWidth()-3, g.getHeight() - 1, true); |
| 80 | + setTimeout(()=>{ |
| 81 | + if (settings.dayBar) { |
| 82 | + drawBar(top, (h*60+m)/1440); |
| 83 | + } else { |
| 84 | + drawLine(top); |
81 | 85 | } |
| 86 | + }, timeBetweenDraw + 50) |
82 | 87 | }; |
| 88 | + drawTime(firstDate); |
83 | 89 |
|
84 | 90 | const drawDate = function (date) { |
85 | 91 | const top = 30; |
|
120 | 126 | drawLine(top); |
121 | 127 | } |
122 | 128 | }; |
123 | | - |
124 | | - const drawTime = function (date) { |
125 | | - const top = 72; |
126 | | - g.reset(); |
127 | | - |
128 | | - const h = date.getHours(); |
129 | | - g.setFontCustom(font, 48, 10, 1024 + 12); // triple size (2<<9) |
130 | | - g.setFontAlign(-1, -1); // left top |
131 | | - g.drawString((settings.twentyFourH ? h : (h % 12 || 12)).toString().padStart(2, 0), |
132 | | - 0, top+12, true); |
133 | | - g.setFontAlign(0, -1); // center top |
134 | | - g.drawString(':', g.getWidth()/2, top+12, false); |
135 | | - const m = date.getMinutes(); |
136 | | - g.setFontAlign(1, -1); // right top |
137 | | - g.drawString(m.toString().padStart(2, 0), |
138 | | - g.getWidth(), top+12, true); |
139 | | - |
140 | | - if (settings.showAmPm) { |
141 | | - g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
142 | | - g.setFontAlign(1, 1); // right bottom |
143 | | - g.drawString(h < 12 ? 'AM' : 'PM', g.getWidth(), g.getHeight() - 1, true); |
144 | | - } |
145 | | - |
146 | | - if (settings.dayBar) { |
147 | | - drawBar(top, (h*60+m)/1440); |
148 | | - } else { |
149 | | - drawLine(top); |
150 | | - } |
151 | | - }; |
152 | | - |
153 | | - const drawSecs = function (date) { |
154 | | - g.reset(); |
155 | | - g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
156 | | - g.setFontAlign(1, 1); // right bottom |
157 | | - g.drawString(date.getSeconds().toString().padStart(2, 0), g.getWidth(), g.getHeight() - 1, true); |
158 | | - }; |
| 129 | + setTimeout(()=>{ |
| 130 | + drawDate(firstDate); |
| 131 | + g.flip(); |
| 132 | + },timeBetweenDraw) |
159 | 133 |
|
160 | 134 | const drawSteps = function (onlyCount) { |
161 | 135 | g.reset(); |
|
186 | 160 | } |
187 | 161 | }; |
188 | 162 |
|
| 163 | + const drawWeather = function () { |
| 164 | + if (!settings.showWeather){ |
| 165 | + return; |
| 166 | + } |
| 167 | + |
| 168 | + g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
| 169 | + g.setFontAlign(1, 1); // right bottom |
| 170 | + |
| 171 | + try{ |
| 172 | + const weather = require('weather'); |
| 173 | + const w = weather.get(); |
| 174 | + let temp = parseInt(w.temp-273.15); |
| 175 | + temp = temp < 0 ? '\\' + String(temp*-1) : String(temp); |
| 176 | + |
| 177 | + g.drawString(temp, g.getWidth()-40, g.getHeight() - 1, true); |
| 178 | + |
| 179 | + // clear icon area in case weather condition changed |
| 180 | + g.clearRect(g.getWidth()-40, g.getHeight()-30, g.getWidth(), g.getHeight()); |
| 181 | + weather.drawIcon(w, g.getWidth()-20, g.getHeight()-15, 14); |
| 182 | + |
| 183 | + } catch(e) { |
| 184 | + g.drawString("???", g.getWidth()-3, g.getHeight() - 1, true); |
| 185 | + } |
| 186 | + }; |
| 187 | + |
| 188 | + const drawLower = function (stepsOnlyCount) { |
| 189 | + if (charging) { |
| 190 | + drawCharge(); |
| 191 | + } else { |
| 192 | + drawSteps(stepsOnlyCount); |
| 193 | + } |
| 194 | + |
| 195 | + drawWeather(); |
| 196 | + }; |
| 197 | + setTimeout(()=>{ |
| 198 | + drawLower(); |
| 199 | + g.flip(); |
| 200 | + },2*timeBetweenDraw) |
| 201 | + |
| 202 | + const drawSecs = function (date) { |
| 203 | + g.reset(); |
| 204 | + g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
| 205 | + g.setFontAlign(1, 1); // right bottom |
| 206 | + g.drawString(date.getSeconds().toString().padStart(2, 0), g.getWidth(), g.getHeight() - 1, true); |
| 207 | + }; |
| 208 | + setTimeout(()=>{ |
| 209 | + drawSecs(firstDate); |
| 210 | + g.flip(); |
| 211 | + },2*timeBetweenDraw+100) |
| 212 | + |
| 213 | + |
| 214 | + const drawAll = function () { |
| 215 | + const date = new Date(); |
| 216 | + |
| 217 | + drawTime(date); |
| 218 | + if (settings.showSeconds) drawSecs(date); |
| 219 | + drawDate(date); |
| 220 | + drawLower(); |
| 221 | + }; |
| 222 | + |
189 | 223 | const drawCharge = function () { |
190 | 224 | g.reset(); |
191 | 225 | g.setFontCustom(font, 48, 10, 512 + 12); // double size (1<<9) |
|
198 | 232 | g.drawImage(plugIcon, 0, g.getHeight() - 26); |
199 | 233 | }; |
200 | 234 |
|
201 | | - const drawBar = function (top, progress) { |
202 | | - // draw frame |
203 | | - g.drawRect(0, top, g.getWidth() - 1, top + 5); |
204 | | - g.drawRect(1, top + 1, g.getWidth() - 2, top + 4); |
205 | | - // clear bar area |
206 | | - g.clearRect(2, top + 2, g.getWidth() - 3, top + 3); |
207 | | - // draw bar |
208 | | - const barLen = progress >= 1 ? g.getWidth() : (g.getWidth() - 4) * progress; |
209 | | - if (barLen < 1) return; |
210 | | - g.drawLine(2, top + 2, barLen + 2, top + 2); |
211 | | - g.drawLine(2, top + 3, barLen + 2, top + 3); |
212 | | - }; |
213 | | - |
214 | 235 | const drawLine = function (top) { |
215 | 236 | const width = g.getWidth(); |
216 | 237 | g.drawLine(0, top + 2, width, top + 2); |
|
336 | 357 | /* Startup Process |
337 | 358 | ------------------------------------------------------------------------------*/ |
338 | 359 |
|
339 | | - g.clear(1); |
340 | | - drawAll(); |
| 360 | + //g.clearRect(0,24,175,175); |
| 361 | + //drawAll(); |
341 | 362 | startTimers(); |
342 | 363 | registerEvents(); |
343 | 364 |
|
|
0 commit comments