Compare commits

..

No commits in common. "main" and "v1" have entirely different histories.
main ... v1

2 changed files with 78 additions and 104 deletions

View file

@ -11,13 +11,15 @@ function generate_calendar(calendarID, year, month)
-- A specified year and month will always display that calendar. -- A specified year and month will always display that calendar.
if year == 0 and month == 0 then if year == 0 and month == 0 then
local wantedMonth = clientStore.get("calendar:" .. calendarID) local wantedMonth = clientStore.get("calendar:" .. calendarID)
editor.flashNotification(wantedMonth)
-- Calculate year and month from the current date plus a month offset. -- Calculate year and month from the current date plus a month offset.
if wantedMonth == nil then if wantedMonth == nil then
wantedMonth = tonumber(os.date("%Y")) * 12 + (tonumber(os.date("%m"))-1) wantedMonth = tonumber(os.date("%Y")) * 12 + tonumber(os.date("%m"))
end end
year = (wantedMonth - (wantedMonth % 12)) / 12 year = (wantedMonth - (wantedMonth % 12)) / 12
month = wantedMonth % 12 + 1 month = wantedMonth % 12
if month == 0 then
month = 1
end
end end
local events = query[[ local events = query[[
@ -71,12 +73,12 @@ function generate_calendar(calendarID, year, month)
for _, e in pairs(events) do for _, e in pairs(events) do
local datematch = e.at.match( local datematch = e.at.match(
string.format("^%d-%02d-%02d( +[0-9]+:[0-9]+)?", year, month, day)) string.format("^%d-%02d-%02d( +[0-9]+:[0-9]+)?", year, month, day))
if datematch and #datematch >= 2 and not datematch[2] then if #datematch >= 2 and not datematch[2] then
cellcontent = cellcontent .. string.format( cellcontent = cellcontent .. string.format(
[[<a href="%s"><div class="event all-day">%s</div></a>]], [[<a href="%s"><div class="event all-day">%s</div></a>]],
e.ref, e.name e.ref, e.name
) )
elseif datematch and #datematch >= 2 and datematch[2] then elseif #datematch >= 2 and datematch[2] then
cellcontent = cellcontent .. string.format( cellcontent = cellcontent .. string.format(
[[ [[
<a href="%s"> <a href="%s">
@ -164,49 +166,52 @@ end
```space-style ```space-style
.calendartable { .calendartable {
border-collapse: collapse; border-collapse: collapse;
/* width: 500px; */
}
table { .calendartable table {
border-color: var(--panel-border-color); border-color: var(--panel-border-color);
border: 2px solid #444; border: 2px solid #444;
border-collapse: collapse; border-collapse: collapse;
}
th { .calendartable th {
width: 14%; width: 14%;
padding: 3px; padding: 3px;
text-align: left; text-align: left;
background-color: var(--panel-background-color); background-color: var(--panel-background-color);
color: #852624; color: #852624;
border: 1px solid #aaa; border: 1px solid #aaa;
} }
td {
.calendartable td {
width: 14%; width: 14%;
padding: 3px; padding: 3px;
text-align: left; text-align: left;
vertical-align: top; vertical-align: top;
border: 1px solid #aaa; border: 1px solid #aaa;
}
&.today { .calendartable td.today {
background-color: #f6f3c2; background-color: #f6f3c2;
} }
}
}
a { .calendartable a {
text-decoration-line: none; text-decoration-line: none;
color: var(--root-color); color: var(--root-color);
}
&.mark { .calendartable a.mark {
text-decoration-line: none; text-decoration-line: none;
color: var(--ui-accent-text-color); color: var(--ui-accent-text-color);
} }
}
span.extramarker { .calendartable span.extramarker {
background-color: yellow; background-color: yellow;
} }
.event { .calendartable .event {
background-color: #2ca05a; background-color: #2ca05a;
color: #fff; color: #fff;
border-radius: 4px; border-radius: 4px;
@ -216,20 +221,20 @@ end
white-space: normal; white-space: normal;
overflow-wrap: normal !important; overflow-wrap: normal !important;
word-break: normal !important; word-break: normal !important;
&.all-day {
background-color: #852624;
}
.time {
font-weight: bold;
}
}
.month-prev,
.month-next,
.month-now {
cursor: pointer;
}
} }
.calendartable .event.all-day {
background-color: #852624;
}
.calendartable .event .time {
font-weight: bold;
}
.calendartable .month-prev,
.calendartable .month-next,
.calendartable .month-now {
cursor: pointer;
}
``` ```

View file

@ -1,31 +0,0 @@
# Calendar
```lua
generate_calendar(idString, fixedYear, fixedMonth)
```
## Aktuell månad
Genererar en kalender med dagens datum, eller sparar senaste månaden med namnet "foo". Genereras en till kalender med samma namn visar den samma månad.
```lua
generate_calendar("foo", 0, 0)
```
## Specifik månad
För att visa en kalender med enbart september 2025:
```lua
generate_calendar("fixed:1", 2025, 9)
```
## Events
Events läggs till med:
```plaintext
* En text för eventet [at: 2025-09-10] #event
```
eller
```plaintext
* En text för eventet [at: 2025-09-10 08:00] #event
```