Compare commits

..

2 Commits

Author SHA1 Message Date
Jan Zípek 44a3a0d1e9
Make titles a bit bigger
ci/woodpecker/push/woodpecker Pipeline was successful Details
2024-07-03 06:58:53 +02:00
Jan Zípek fc2a7ce42f
Improve text alignment 2024-06-30 10:21:28 +02:00
3 changed files with 54 additions and 44 deletions

View File

@ -7,5 +7,12 @@
"path": "firmware" "path": "firmware"
} }
], ],
"settings": {} "settings": {
"files.associations": {
"*.ejs": "html",
".env": "env",
".env.*": "env",
"cmath": "cpp"
}
}
} }

View File

@ -26,6 +26,8 @@ void dow_get_text_item_rect(GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ058
dow_apply_font(display, item->font); dow_apply_font(display, item->font);
display.getTextBounds(item->contents, 0, 0, &tbx, &tby, &tbw, &tbh); display.getTextBounds(item->contents, 0, 0, &tbx, &tby, &tbw, &tbh);
// bool debug = item->contents.equals("Srazky");
int x = item->x; int x = item->x;
int y = item->y; int y = item->y;
int w = tbw; int w = tbw;
@ -50,14 +52,14 @@ void dow_get_text_item_rect(GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ058
{ {
case ITEM_ALIGN_CENTER: case ITEM_ALIGN_CENTER:
{ {
y += tby; y -= (h + tby);
y += round((double)h / 2); y += round((double)h / 2);
break; break;
} }
case ITEM_ALIGN_START: case ITEM_ALIGN_START:
{ {
y += tby; y -= (h + tby);
y += h; y += h;
break; break;
} }
@ -79,6 +81,27 @@ void dow_get_text_item_rect(GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ058
*ry = y; *ry = y;
*rw = w; *rw = w;
*rh = h; *rh = h;
/*
if (debug)
{
Serial.print(x);
Serial.print(", ");
Serial.print(y);
Serial.print(", ");
Serial.print(w);
Serial.print(", ");
Serial.print(h);
Serial.print(", tbx:");
Serial.print(tbx);
Serial.print(", tby:");
Serial.print(tby);
Serial.print(", tbw:");
Serial.print(tbw);
Serial.print(", tbh:");
Serial.println(tbh);
}
*/
} }
void dow_get_item_rect(GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> &display, dow_item_t *item, int *rx, int *ry, int *rw, int *rh) void dow_get_item_rect(GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> &display, dow_item_t *item, int *rx, int *ry, int *rw, int *rh)

View File

@ -168,31 +168,35 @@ export const dowRoutes = router((router, ctx) => {
const next12Hours = Object.entries(weather.hours).slice(1, 22) const next12Hours = Object.entries(weather.hours).slice(1, 22)
const tempY = 230 const tempY = 210
const tempX = 30 const tempX = 30
const tempW = 280 const tempW = 280
const tempH = 120 const tempH = 120
const tempGraphP = 5 const tempGraphP = 5
const tempGraphX = tempX + tempGraphP * 2
const tempGraphY = tempY + 24 + tempGraphP
const tempGraphW = tempW - tempGraphP * 4 const tempGraphW = tempW - tempGraphP * 4
const tempGraphH = tempH - 24 - tempGraphP * 2
widgets.push( widgets.push(
...rectangleWithTitle({ ...rectangleWithTitle({
x: tempX, x: tempX,
y: tempY - 20, y: tempY,
width: tempW, width: tempW,
height: tempH, height: tempH,
title: 'Teplota', title: 'Teplota',
titleHeight: 20, titleHeight: 24,
titleFont: 3, titleFont: 3,
}), }),
) )
widgets.push( widgets.push(
...barGraph({ ...barGraph({
x: tempX + tempGraphP * 2, x: tempGraphX,
y: tempY + tempGraphP, y: tempGraphY,
width: tempGraphW, width: tempGraphW,
height: tempH - 20 - tempGraphP * 2, height: tempGraphH,
data: next12Hours.map(([offset, h]) => ({ data: next12Hours.map(([offset, h]) => ({
x: now.plus({ hours: +offset }).hour.toString().padStart(2, '0'), x: now.plus({ hours: +offset }).hour.toString().padStart(2, '0'),
yFormatted: Math.floor(h.temperature as number).toString(), yFormatted: Math.floor(h.temperature as number).toString(),
@ -206,59 +210,35 @@ export const dowRoutes = router((router, ctx) => {
}), }),
) )
/* const preY = 230 + 124
const minPre = Math.min(
...next12Hours.map(([, h]) => h.precipitationAmount as number),
)
const maxPre = Math.max(
...next12Hours.map(([, h]) => h.precipitationAmount as number),
)
const maxPreIndex = Object.entries(weather.hours).reduce(
(acc, [i, h]) => {
if (typeof h.precipitationAmount !== 'number') {
return acc
}
if (!acc || h.precipitationAmount > acc.pre) {
return { pre: h.precipitationAmount, index: i }
}
return acc
},
{} as { pre: number; index: string } | undefined,
)?.index
const displayedMaxPre = Math.max(maxPre, 1)
const preRange = displayedMaxPre - minPre
*/
const preY = 250 + 120
const preX = 30 const preX = 30
const preW = 280 const preW = 280
const preH = 120 const preH = 116
const preGraphP = 5 const preGraphP = 5
const preGraphX = preX + preGraphP * 2
const preGraphY = preY + 24 + preGraphP
const preGraphW = preW - preGraphP * 4 const preGraphW = preW - preGraphP * 4
const preGraphH = preH - 24 - preGraphP * 2
widgets.push( widgets.push(
...rectangleWithTitle({ ...rectangleWithTitle({
x: preX, x: preX,
y: preY - 20, y: preY,
width: preW, width: preW,
height: preH, height: preH,
title: 'Srazky', title: 'Srazky',
titleHeight: 20, titleHeight: 24,
titleFont: 3, titleFont: 3,
}), }),
) )
widgets.push( widgets.push(
...barGraph({ ...barGraph({
x: preX + preGraphP * 2, x: preGraphX,
y: preY + preGraphP, y: preGraphY,
width: preGraphW, width: preGraphW,
height: preH - 20 - preGraphP * 2, height: preGraphH,
data: next12Hours.map(([offset, h]) => ({ data: next12Hours.map(([offset, h]) => ({
x: now.plus({ hours: +offset }).hour.toString().padStart(2, '0'), x: now.plus({ hours: +offset }).hour.toString().padStart(2, '0'),
yFormatted: (h.precipitationAmount as number).toFixed(1) + 'mm', yFormatted: (h.precipitationAmount as number).toFixed(1) + 'mm',