forked from espruino/BangleApps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsphclock.agenda.js
More file actions
112 lines (89 loc) · 3.14 KB
/
Copy pathsphclock.agenda.js
File metadata and controls
112 lines (89 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// gcalcli agenda --tsv | jq -rRs 'split("\n")[0:-1] | map([split("\t")[]|split(",")] | { "data":(.[0][0] + "T" + .[1][0] + ":00Z"), "data_fim":(.[2][0] + "T" + .[3][0] + ":00Z"), "descricao":.[4][0]})' | iconv -f UTF-8 -t ISO-8859-1 - > agenda.json
"use strict";
exports.drawCalendar = function (date) {
let dateStr = date.getDate();
let dowStr = require("locale")
.dow(date)
.replace("á", "a")
.replace("ç", "c")
.substr(0, 3)
.toUpperCase();
require("sphclock.background.js").drawBannerLeft(7, 26, 60);
g.setFontAlign(0, 0);
g.setFontLECO1976Regular20();
g.setColor("#000");
g.drawString(dateStr, 27, 25);
g.setColor("#fff");
g.drawString(dateStr, 25, 23);
g.setFontLECO1976Regular14();
g.setColor("#000");
g.drawString(dowStr, 25, 44);
// Carrega a agenda pro próximo dia com eventos
let schedules = require("Storage").readJSON("agenda.json", false) || [];
// Parse da data
schedules.forEach((s) => (s.data = new Date(s.data.replace('Z', ''))));
schedules = schedules
.filter((v) => v.data > new Date()) // Remove eventos que já foram
.sort((a, b) => a.data - b.data); // Ordena pela data
schedules = schedules.slice(0, 4);
if (schedules.length > 0) {
let data = schedules[0].data;
schedules = schedules.filter((v) => v.data.getDay() == data.getDay());
let hoje = new Date();
let amanha = new Date();
amanha.setDate(amanha.getDate() + 1);
let outraSemana = new Date();
outraSemana.setDate(outraSemana.getDate() + 7);
if (data.getDate() == hoje.getDate()) data = "HOJE";
else if (data.getDate() == amanha.getDate()) data = "AMANHA";
else if (data.getTime() < outraSemana.getTime()) {
data = require("locale")
.dow(data)
.replace("ç", "c")
.replace("á", "a")
.toUpperCase();
data = data.split("-")[0];
} else {
data = require("locale").date(data, 1);
}
g.setFontAlign(1, -1);
g.setColor("#000");
g.setFontLECO1976Regular11();
let width = g.stringWidth(data) + 3;
let x = 173 - width;
let y = 112;
g.fillRect(x, y, 176, y + 13);
g.setColor("#FFF");
g.drawString(data, 173, y + 3);
g.setFont("6x8");
let startY = 122;
let endY = 171;
g.setColor("#F00");
g.fillRect(4, startY, 41, endY);
var spaceEach = (endY - startY) / schedules.length;
let xTime = 38;
let xDesc = 45;
for (var i = 0; i < schedules.length; i++) {
let v = schedules[i];
var textTime = v.data.getHours() + "h";
if (v.data.getMinutes() > 0)
textTime += v.data.getMinutes().toString().padStart(2, "0");
g.setFontAlign(-1, 0);
g.setColor("#000");
y = startY + i * spaceEach;
var yText = Math.round(y + spaceEach / 2);
g.drawString(v.descricao, xDesc, yText);
g.setFontAlign(1, 0);
g.drawString(textTime, xTime + 1, yText + 1);
g.setColor("#FFF");
g.drawString(textTime, xTime, yText);
g.setColor("#FFF");
g.drawLine(4, y, 41, y);
}
} else {
g.setFontLECO1976Regular14();
g.setFontAlign(0, 0);
g.setColor("#888");
g.drawString("SEM COMPROMISSOS\nNA AGENDA", 88, 150);
}
};