traveldings stuff!

This commit is contained in:
Schrottkatze 2024-09-11 02:09:08 +02:00
parent 54a1e34fa6
commit b4dfef1d6d
No known key found for this signature in database
5 changed files with 89 additions and 8 deletions

View file

@ -1,4 +1,5 @@
(include "bottomBar/workspaces.yuck") (include "bottomBar/workspaces.yuck")
(include "bottomBar/traveldings.yuck")
(defwindow bottomBar (defwindow bottomBar
:monitor 0 :monitor 0
@ -21,7 +22,7 @@
) )
(box (box
:halign "center" :halign "center"
(label :text "mid") (traveldings)
) )
(box (box
:halign "end" :halign "end"

View file

@ -0,0 +1,50 @@
(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"
)

View file

@ -14,3 +14,20 @@ label {
.workspaces button.focused { .workspaces button.focused {
background-color: #504935; background-color: #504935;
} }
.traveldings progressbar trough {
border: none;
background-color: #3c3836;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.traveldings progressbar progress {
background-color: #79740e;
border-bottom-left-radius: 0;
}
.traveldingsWindow {
border-radius: 15px;
}

View file

@ -68,6 +68,7 @@ struct CurrentJourneyOutput {
progress: Option<f32>, progress: Option<f32>,
time_left: Option<i64>, time_left: Option<i64>,
icon: String, icon: String,
line: String,
// Invalid data received? // Invalid data received?
departure_err: bool, departure_err: bool,
@ -148,6 +149,7 @@ impl CurrentJourneyOutput {
progress, progress,
time_left, time_left,
icon, icon,
line: checkin.train.line_name.clone(),
departure_err, departure_err,
departure_planned, departure_planned,
departure_real, departure_real,

View file

@ -36,6 +36,8 @@ pub struct StopOverResource {
pub platform: Option<String>, pub platform: Option<String>,
pub departure_platform_planned: Option<String>, pub departure_platform_planned: Option<String>,
pub departure_platform_real: Option<String>, pub departure_platform_real: Option<String>,
pub arrival_platform_planned: Option<String>,
pub arrival_platform_real: Option<String>,
} }
// ???? // ????
@ -57,9 +59,19 @@ pub enum StopJourneyPart {
} }
impl StopOverResource { impl StopOverResource {
pub fn get_time_data(&self, journey_part: StopJourneyPart) -> JsonableData { pub fn get_time_data(&self, journey_part: StopJourneyPart) -> JsonableData {
let (time_planned, time_real) = match journey_part { let (time_planned, time_real, platform_planned, platform_real) = match journey_part {
StopJourneyPart::Origin => (self.departure_planned, self.departure_real), StopJourneyPart::Origin => (
StopJourneyPart::Destination => (self.arrival_planned, self.arrival_real), self.departure_planned,
self.departure_real,
self.departure_platform_planned.clone(),
self.departure_platform_real.clone(),
),
StopJourneyPart::Destination => (
self.arrival_planned,
self.arrival_real,
self.arrival_platform_planned.clone(),
self.arrival_platform_real.clone(),
),
}; };
let time_err = time_planned == None; let time_err = time_planned == None;
@ -70,10 +82,9 @@ impl StopOverResource {
time_real: time_real.map(|ts| ts.timestamp()), time_real: time_real.map(|ts| ts.timestamp()),
station: self.name.clone(), station: self.name.clone(),
ril100: self.ril_identifier.clone(), ril100: self.ril_identifier.clone(),
platform_data_available: self.departure_platform_planned.is_none() platform_data_available: platform_planned.is_some() || platform_real.is_some(),
|| self.departure_platform_real.is_none(), platform_planned,
platform_planned: self.departure_platform_planned.clone(), platform_real,
platform_real: self.departure_platform_real.clone(),
} }
} }
} }