Compare commits
2 commits
bd3674accf
...
b4dfef1d6d
Author | SHA1 | Date | |
---|---|---|---|
b4dfef1d6d | |||
54a1e34fa6 |
6 changed files with 108 additions and 26 deletions
|
@ -1,3 +1,6 @@
|
|||
(include "bottomBar/workspaces.yuck")
|
||||
(include "bottomBar/traveldings.yuck")
|
||||
|
||||
(defwindow bottomBar
|
||||
:monitor 0
|
||||
:stacking "fg"
|
||||
|
@ -19,7 +22,7 @@
|
|||
)
|
||||
(box
|
||||
:halign "center"
|
||||
(label :text "mid")
|
||||
(traveldings)
|
||||
)
|
||||
(box
|
||||
:halign "end"
|
||||
|
@ -39,21 +42,3 @@
|
|||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defwidget workspaceWidget []
|
||||
(box
|
||||
:class "workspaces"
|
||||
(for workspace in workspaces
|
||||
(button
|
||||
:class "${workspace.urgent ? "urgent" : ""} ${workspace.focused ? "focused" : 0}"
|
||||
:onclick "swaymsg workspace ${workspace.name}"
|
||||
(label :text "${workspace.name}")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deflisten workspaces
|
||||
:initial "[]"
|
||||
"bar-ws-monitor"
|
||||
)
|
||||
|
|
|
@ -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"
|
||||
)
|
|
@ -0,0 +1,17 @@
|
|||
(defwidget workspaceWidget []
|
||||
(box
|
||||
:class "workspaces"
|
||||
(for workspace in workspaces
|
||||
(button
|
||||
:class "${workspace.urgent ? "urgent" : ""} ${workspace.focused ? "focused" : 0}"
|
||||
:onclick "swaymsg workspace ${workspace.name}"
|
||||
(label :text "${workspace.name}")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deflisten workspaces
|
||||
:initial "[]"
|
||||
"bar-ws-monitor"
|
||||
)
|
|
@ -14,3 +14,20 @@ label {
|
|||
.workspaces button.focused {
|
||||
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;
|
||||
}
|
|
@ -68,6 +68,7 @@ struct CurrentJourneyOutput {
|
|||
progress: Option<f32>,
|
||||
time_left: Option<i64>,
|
||||
icon: String,
|
||||
line: String,
|
||||
|
||||
// Invalid data received?
|
||||
departure_err: bool,
|
||||
|
@ -148,6 +149,7 @@ impl CurrentJourneyOutput {
|
|||
progress,
|
||||
time_left,
|
||||
icon,
|
||||
line: checkin.train.line_name.clone(),
|
||||
departure_err,
|
||||
departure_planned,
|
||||
departure_real,
|
||||
|
|
|
@ -36,6 +36,8 @@ pub struct StopOverResource {
|
|||
pub platform: Option<String>,
|
||||
pub departure_platform_planned: 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 {
|
||||
pub fn get_time_data(&self, journey_part: StopJourneyPart) -> JsonableData {
|
||||
let (time_planned, time_real) = match journey_part {
|
||||
StopJourneyPart::Origin => (self.departure_planned, self.departure_real),
|
||||
StopJourneyPart::Destination => (self.arrival_planned, self.arrival_real),
|
||||
let (time_planned, time_real, platform_planned, platform_real) = match journey_part {
|
||||
StopJourneyPart::Origin => (
|
||||
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;
|
||||
|
@ -70,10 +82,9 @@ impl StopOverResource {
|
|||
time_real: time_real.map(|ts| ts.timestamp()),
|
||||
station: self.name.clone(),
|
||||
ril100: self.ril_identifier.clone(),
|
||||
platform_data_available: self.departure_platform_planned.is_none()
|
||||
|| self.departure_platform_real.is_none(),
|
||||
platform_planned: self.departure_platform_planned.clone(),
|
||||
platform_real: self.departure_platform_real.clone(),
|
||||
platform_data_available: platform_planned.is_some() || platform_real.is_some(),
|
||||
platform_planned,
|
||||
platform_real,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue