reorganized pages
This commit is contained in:
+207
-11
@@ -133,17 +133,90 @@ data:
|
||||
# ---------- CENTER COLUMN ----------
|
||||
- size: full
|
||||
widgets:
|
||||
# Cal.com Booking iframe
|
||||
- type: iframe
|
||||
source: https://booking.dooplex.hu/bookings/upcoming
|
||||
height: 350
|
||||
title: Upcoming Bookings
|
||||
- type: split-column
|
||||
max-columns: 3
|
||||
widgets:
|
||||
# Weather Widget (Időkép)
|
||||
- type: custom-api
|
||||
title: "Időkép – Budapest VII."
|
||||
url: "http://idokep-scraper.glance-system.svc.cluster.local:8000/api?v=2"
|
||||
cache: 30s
|
||||
template: |
|
||||
{{ $loc := .JSON.String "location.name" }}
|
||||
{{ if eq $loc "" }}{{ $loc = .JSON.String "place" }}{{ end }}
|
||||
{{ $curTemp := .JSON.Float "current.temp_c" }}
|
||||
{{ $curIcon := .JSON.String "current.icon_url" }}
|
||||
{{ $daily := .JSON.Array "daily" }}
|
||||
{{ $hourly := .JSON.Array "hourly" }}
|
||||
|
||||
# Google Calendar iframe
|
||||
- type: iframe
|
||||
source: https://calendar.google.com/calendar/embed?src=b2884faf3db792ac082a6206057552c79080716efd5f966e169a41fc500e1c1c%40group.calendar.google.com&ctz=Europe%2FBudapest
|
||||
height: 400
|
||||
title: Calendar
|
||||
<div class="idokep">
|
||||
<div class="idokep-top">
|
||||
<div class="idokep-top-left">
|
||||
{{ if $curIcon }}<img class="idokep-icon" src="{{ $curIcon }}" alt="" />{{ end }}
|
||||
<div class="idokep-temp">{{ printf "%.0f" $curTemp }}°C</div>
|
||||
</div>
|
||||
<div class="idokep-top-right">
|
||||
<div class="idokep-loc">{{ $loc }}</div>
|
||||
<div class="idokep-src">Forrás: <a href="{{ .JSON.String "source.url" }}" target="_blank">Időkép</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ if gt (len $hourly) 0 }}
|
||||
<div class="idokep-hourly">
|
||||
{{ range $i, $h := $hourly }}
|
||||
<div class="idokep-hour">
|
||||
<div class="idokep-hour-time">{{ $h.String "time" }}</div>
|
||||
{{ if $h.String "icon_url" }}<img class="idokep-hour-icon" src="{{ $h.String "icon_url" }}" title="{{ $h.String "condition" }}" alt="{{ $h.String "condition" }}" />{{ end }}
|
||||
<div class="idokep-hour-temp">{{ printf "%.0f" ($h.Float "temp_c") }}°</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if gt (len $daily) 0 }}
|
||||
<div class="idokep-daily">
|
||||
{{ range $daily }}
|
||||
<div class="idokep-row">
|
||||
<div class="idokep-dow">
|
||||
<span class="idokep-downame">{{ .String "dow" }}</span>
|
||||
<span class="idokep-daynum">{{ .String "daynum" }}</span>
|
||||
</div>
|
||||
<div class="idokep-dayicon">
|
||||
{{ if .String "icon_url" }}<img src="{{ .String "icon_url" }}" title="{{ .String "condition" }}" alt="{{ .String "condition" }}" />{{ end }}
|
||||
</div>
|
||||
<div class="idokep-min">{{ printf "%.0f" (.Float "tmin_c") }}°</div>
|
||||
|
||||
<div class="idokep-bar">
|
||||
<div class="idokep-bar-track"></div>
|
||||
|
||||
{{/* We construct the style manually to bypass Go security sanitization */}}
|
||||
<div class="idokep-bar-fill" style="
|
||||
--l: {{ printf "%.1f" (.Float "c_l") }}%;
|
||||
--w: {{ printf "%.1f" (.Float "c_w") }}%;
|
||||
--gw: {{ printf "%.1f" (.Float "c_gw") }}%;
|
||||
--ml: {{ printf "%.1f" (.Float "c_ml") }}%;
|
||||
--s-wht: {{ printf "%.1f" (.Float "c_s1") }}%;
|
||||
--s-blu: {{ printf "%.1f" (.Float "c_s2") }}%;
|
||||
--s-pur: {{ printf "%.1f" (.Float "c_s3") }}%;
|
||||
--s-pnk: {{ printf "%.1f" (.Float "c_s4") }}%;
|
||||
--s-red: {{ printf "%.1f" (.Float "c_s5") }}%;
|
||||
">
|
||||
<div class="idokep-bar-gradient"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="idokep-max">{{ printf "%.0f" (.Float "tmax_c") }}°</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
# Calendar Widget
|
||||
- type: calendar
|
||||
first-day-of-week: monday
|
||||
# To-Do List
|
||||
- type: to-do
|
||||
title: Tasks
|
||||
|
||||
# Outline Notes iframe
|
||||
- type: iframe
|
||||
@@ -228,7 +301,7 @@ data:
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
|
||||
- type: to-do
|
||||
title: Tasks
|
||||
# RSS Feeds - Add your favorite feeds here
|
||||
@@ -256,6 +329,43 @@ data:
|
||||
title: youarenotsosmart.com
|
||||
limit: 3
|
||||
|
||||
# ==================== TEACHING/LEARNING PAGE ====================
|
||||
- name: Teaching & Learning
|
||||
slug: teaching
|
||||
width: wide
|
||||
columns:
|
||||
- size: small
|
||||
widgets:
|
||||
- type: bookmarks
|
||||
title: Links for Teaching
|
||||
groups:
|
||||
- links:
|
||||
- title: Plex
|
||||
url: https://plex.dooplex.hu
|
||||
icon: si:plex
|
||||
- type: bookmarks
|
||||
title: Links for Learning
|
||||
groups:
|
||||
- links:
|
||||
- title: Plex
|
||||
url: https://plex.dooplex.hu
|
||||
icon: si:plex
|
||||
|
||||
# ---------- CENTER COLUMN ----------
|
||||
- size: full
|
||||
widgets:
|
||||
# Cal.com Booking iframe
|
||||
- type: iframe
|
||||
source: https://booking.dooplex.hu/bookings/upcoming
|
||||
height: 500
|
||||
title: Upcoming Bookings
|
||||
|
||||
# Google Calendar iframe
|
||||
- type: iframe
|
||||
source: https://calendar.google.com/calendar/embed?src=b2884faf3db792ac082a6206057552c79080716efd5f966e169a41fc500e1c1c%40group.calendar.google.com&ctz=Europe%2FBudapest
|
||||
height: 500
|
||||
title: Calendar
|
||||
|
||||
# ==================== MEDIA PAGE ====================
|
||||
- name: Media
|
||||
slug: media
|
||||
@@ -705,7 +815,93 @@ data:
|
||||
content: none !important;
|
||||
display: none !important;
|
||||
}
|
||||
/* =========================================================================
|
||||
Időkép custom-api widget
|
||||
========================================================================= */
|
||||
.idokep { display: flex; flex-direction: column; gap: 10px; }
|
||||
|
||||
.idokep-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
|
||||
.idokep-top-left { display: flex; align-items: center; gap: 10px; }
|
||||
.idokep-icon { width: 42px; height: 42px; opacity: 0.95; }
|
||||
.idokep-temp { font-size: 42px; font-weight: 700; letter-spacing: 0.5px; line-height: 1; }
|
||||
|
||||
.idokep-top-right { text-align: right; }
|
||||
.idokep-loc { opacity: 0.85; font-weight: 600; }
|
||||
.idokep-src { opacity: 0.6; font-size: 12px; margin-top: 2px; }
|
||||
.idokep-src a { opacity: 0.9; }
|
||||
|
||||
.idokep-hourly { display: flex; gap: 10px; padding-top: 4px; }
|
||||
.idokep-hour { width: 54px; display: flex; flex-direction: column; align-items: center; gap: 6px; opacity: 0.9; }
|
||||
.idokep-hour-time { font-size: 12px; opacity: 0.65; }
|
||||
.idokep-hour-icon { width: 26px; height: 26px; }
|
||||
.idokep-hour-temp { font-weight: 700; }
|
||||
|
||||
.idokep-muted { opacity: 0.6; font-size: 12px; padding: 4px 0; }
|
||||
|
||||
.idokep-daily { display: flex; flex-direction: column; gap: 8px; margin-top: 2px; }
|
||||
.idokep-row {
|
||||
display: grid;
|
||||
grid-template-columns: 44px 26px 36px 1fr 36px; /* day+date, icon, min, bar, max */
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
}
|
||||
.idokep-dow { opacity: 0.7; font-weight: 700; }
|
||||
.idokep-dayicon img { width: 22px; height: 22px; opacity: 0.95; }
|
||||
.idokep-min, .idokep-max { text-align: right; font-weight: 700; opacity: 0.8; }
|
||||
.idokep-dow {
|
||||
display: grid;
|
||||
grid-template-columns: 22px 1fr; /* dow then daynum */
|
||||
column-gap: 6px;
|
||||
align-items: center;
|
||||
opacity: 0.8;
|
||||
font-weight: 700;
|
||||
}
|
||||
.idokep-daynum {
|
||||
text-align: right;
|
||||
opacity: 0.75;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.idokep-bar {
|
||||
position: relative;
|
||||
height: 10px;
|
||||
}
|
||||
.idokep-bar-track {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: 999px;
|
||||
background: rgba(255,255,255,0.10);
|
||||
}
|
||||
.idokep-bar-fill {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
border-radius: 999px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,0.08) inset;
|
||||
|
||||
/* Position controlled by Python variables */
|
||||
left: var(--l, 0%);
|
||||
width: var(--w, 0%);
|
||||
}
|
||||
/* This element holds the gradient */
|
||||
.idokep-bar-gradient {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
||||
/* Compensation geometry controlled by Python variables */
|
||||
width: var(--gw, 100%);
|
||||
margin-left: var(--ml, 0%);
|
||||
|
||||
/* The Dynamic Gradient */
|
||||
background: linear-gradient(90deg,
|
||||
#ffffff var(--s-wht),
|
||||
#60a5fa var(--s-blu),
|
||||
#a78bfa var(--s-pur),
|
||||
#fb7185 var(--s-pnk),
|
||||
#ef4444 var(--s-red)
|
||||
);
|
||||
}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
|
||||
Reference in New Issue
Block a user