(defwidget traveldings [] (revealer :class "traveldings" :transition "crossfade" :reveal { traveldings_data != "null" } (traveldingsBarWidget) ) ) (defwidget traveldingsBarWidget [] (overlay (box :width 640 (label :halign "start" :text "${traveldings_data.line} -> ${strlength(traveldings_data.arrival_station) > 24 ? "${substring(traveldings_data.arrival_station, 0, 24)}…" : traveldings_data.arrival_station}${traveldings_data.arrival_platform_data_available ? " (Gl. ${traveldings_data.arrival_platform_real})" : ""}" ) (label :halign "end" :text { traveldings_data.time_left >= 3600 ? formattime(traveldings_data.time_left, "noch %-Hh %-Mmin", "Etc/UTC") : formattime(traveldings_data.time_left, "noch %-Mmin", "Etc/UTC") } ) ) (box (progress :value {traveldings_data.progress * 100} :orientation "horizontal" ) ) ) ) (defwindow traveldingsWindow :monitor 0 :stacking "overlay" :exclusive "false" :geometry (geometry :x "0%" :y "6.6%" :width "30%" :height "20%" :anchor "bottom center") (box :class "traveldingsWindow" (label :text "TODO")) ) (deflisten traveldings_data :initial "null" "traveldings current" )