diff --git a/amadeus/src/components/mainpanel/playlists.rs b/amadeus/src/components/mainpanel/playlists.rs index 7394354143cee8f5f68d71628d12a6c8d2b4f5b7..3bc015fd4ed69f97bf65d81e209b273069902722 100644 --- a/amadeus/src/components/mainpanel/playlists.rs +++ b/amadeus/src/components/mainpanel/playlists.rs @@ -1,6 +1,13 @@ -use crate::components::{self, icon, karalist, tip}; +use crate::{ + components::{self, icon, karalist, tip}, + style_sheet::sizes::SIZE_FONT_MOAR, +}; +use chrono::TimeZone; use hashbrown::HashMap; -use iced::{widget::row, Command, Element}; +use iced::{ + widget::{column, horizontal_rule, row, text, vertical_space}, + Command, Element, +}; use lektor_payloads::{KId, Kara, PlaylistInfo}; use lektor_utils::log; use std::sync::Arc; @@ -169,7 +176,40 @@ impl State { pub fn view(&self, plt: &Arc<str>) -> Element<'_, Request> { self.get(plt) - .map(|(plt, _, content)| content.view().map(|req| Request::Inner(plt.clone(), req))) + .map(|(plt, infos, content)| { + infos + .map(|infos| { + let PlaylistInfo { user, .. } = infos; + let mut column = user + .as_ref() + .map(|user| { + column![text(format!("Created by: {user}")).size(SIZE_FONT_MOAR)] + }) + .unwrap_or_default(); + if let Some(time) = + chrono::Local.timestamp_opt(infos.created_at, 0).latest() + { + let time = time.format("%Y-%m-%d %H:%M:%S"); + column = column + .push(vertical_space(4)) + .push(text(format!("Created at: {time}"))); + }; + if let Some(time) = + chrono::Local.timestamp_opt(infos.updated_at, 0).latest() + { + let time = time.format("%Y-%m-%d %H:%M:%S"); + column = column + .push(vertical_space(4)) + .push(text(format!("Updated at: {time}"))); + }; + column + .push(vertical_space(10)) + .push(horizontal_rule(4)) + }) + .unwrap_or_default() + .push(content.view().map(|req| Request::Inner(plt.clone(), req))) + .into() + }) .unwrap_or(components::loading()) } }