Compare commits
No commits in common. "main" and "v1" have entirely different histories.
2 changed files with 78 additions and 104 deletions
|
|
@ -11,15 +11,17 @@ function generate_calendar(calendarID, year, month)
|
|||
-- A specified year and month will always display that calendar.
|
||||
if year == 0 and month == 0 then
|
||||
local wantedMonth = clientStore.get("calendar:" .. calendarID)
|
||||
editor.flashNotification(wantedMonth)
|
||||
-- Calculate year and month from the current date plus a month offset.
|
||||
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
|
||||
year = (wantedMonth - (wantedMonth % 12)) / 12
|
||||
month = wantedMonth % 12 + 1
|
||||
month = wantedMonth % 12
|
||||
if month == 0 then
|
||||
month = 1
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local events = query[[
|
||||
from index.tag "event"
|
||||
where
|
||||
|
|
@ -71,12 +73,12 @@ function generate_calendar(calendarID, year, month)
|
|||
for _, e in pairs(events) do
|
||||
local datematch = e.at.match(
|
||||
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(
|
||||
[[<a href="%s"><div class="event all-day">%s</div></a>]],
|
||||
e.ref, e.name
|
||||
)
|
||||
elseif datematch and #datematch >= 2 and datematch[2] then
|
||||
elseif #datematch >= 2 and datematch[2] then
|
||||
cellcontent = cellcontent .. string.format(
|
||||
[[
|
||||
<a href="%s">
|
||||
|
|
@ -164,72 +166,75 @@ end
|
|||
```space-style
|
||||
.calendartable {
|
||||
border-collapse: collapse;
|
||||
|
||||
table {
|
||||
border-color: var(--panel-border-color);
|
||||
border: 2px solid #444;
|
||||
border-collapse: collapse;
|
||||
|
||||
th {
|
||||
width: 14%;
|
||||
padding: 3px;
|
||||
text-align: left;
|
||||
background-color: var(--panel-background-color);
|
||||
color: #852624;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
td {
|
||||
width: 14%;
|
||||
padding: 3px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
border: 1px solid #aaa;
|
||||
|
||||
&.today {
|
||||
background-color: #f6f3c2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration-line: none;
|
||||
color: var(--root-color);
|
||||
|
||||
&.mark {
|
||||
text-decoration-line: none;
|
||||
color: var(--ui-accent-text-color);
|
||||
}
|
||||
}
|
||||
|
||||
span.extramarker {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
.event {
|
||||
background-color: #2ca05a;
|
||||
color: #fff;
|
||||
border-radius: 4px;
|
||||
padding: 4px 8px;
|
||||
margin-top: 8px;
|
||||
max-width: 200px;
|
||||
white-space: normal;
|
||||
overflow-wrap: normal !important;
|
||||
word-break: normal !important;
|
||||
|
||||
&.all-day {
|
||||
background-color: #852624;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.month-prev,
|
||||
.month-next,
|
||||
.month-now {
|
||||
cursor: pointer;
|
||||
}
|
||||
/* width: 500px; */
|
||||
}
|
||||
|
||||
.calendartable table {
|
||||
border-color: var(--panel-border-color);
|
||||
border: 2px solid #444;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.calendartable th {
|
||||
width: 14%;
|
||||
padding: 3px;
|
||||
text-align: left;
|
||||
background-color: var(--panel-background-color);
|
||||
color: #852624;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
|
||||
.calendartable td {
|
||||
width: 14%;
|
||||
padding: 3px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
.calendartable td.today {
|
||||
background-color: #f6f3c2;
|
||||
}
|
||||
|
||||
.calendartable a {
|
||||
text-decoration-line: none;
|
||||
color: var(--root-color);
|
||||
}
|
||||
|
||||
.calendartable a.mark {
|
||||
text-decoration-line: none;
|
||||
color: var(--ui-accent-text-color);
|
||||
}
|
||||
|
||||
.calendartable span.extramarker {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
.calendartable .event {
|
||||
background-color: #2ca05a;
|
||||
color: #fff;
|
||||
border-radius: 4px;
|
||||
padding: 4px 8px;
|
||||
margin-top: 8px;
|
||||
max-width: 200px;
|
||||
white-space: normal;
|
||||
overflow-wrap: normal !important;
|
||||
word-break: normal !important;
|
||||
}
|
||||
|
||||
.calendartable .event.all-day {
|
||||
background-color: #852624;
|
||||
}
|
||||
|
||||
.calendartable .event .time {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendartable .month-prev,
|
||||
.calendartable .month-next,
|
||||
.calendartable .month-now {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
```
|
||||
|
|
|
|||
31
README.md
31
README.md
|
|
@ -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
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue