diff --git a/file-service/src/html.rs b/file-service/src/html.rs index 1ad0760..5f5e2cd 100644 --- a/file-service/src/html.rs +++ b/file-service/src/html.rs @@ -236,92 +236,3 @@ impl Html for Button { ) } } - -#[derive(Clone, Debug)] -pub struct Image { - path: String, - attributes: Attributes, -} - -impl Image { - pub fn new(path: &str) -> Self { - Self { - path: path.to_owned(), - attributes: Attributes::default(), - } - } - - pub fn with_attributes<'a>( - mut self, - values: impl IntoIterator, - ) -> Self { - self.attributes = Attributes( - values - .into_iter() - .map(|(a, b)| (a.to_owned(), b.to_owned())) - .collect::>(), - ); - self - } -} - -impl Html for Image { - fn to_html_string(&self) -> String { - format!( - "", - path = self.path, - attrs = self.attributes.to_string() - ) - } -} - -#[derive(Debug)] -pub struct UnorderedList { - children: Vec, - attributes: Attributes, -} - -impl UnorderedList { - pub fn new() -> Self { - Self { - children: vec![], - attributes: Attributes::default(), - } - } - - pub fn with_attributes<'a>( - mut self, - values: impl IntoIterator, - ) -> Self { - self.attributes = Attributes( - values - .into_iter() - .map(|(a, b)| (a.to_owned(), b.to_owned())) - .collect::>(), - ); - self - } -} - -impl Html for UnorderedList { - fn to_html_string(&self) -> String { - let children = self - .children - .iter() - .map(|item| format!("
  • {}
  • ", item.to_html_string())) - .collect::>(); - format!( - "
      - {children} -
    ", - attrs = self.attributes.to_string(), - children = children.join("\n") - ) - } -} - -impl HtmlContainer for UnorderedList { - fn add_html(&mut self, html: H) { - self.children.push(html.to_html_string()) - } -} diff --git a/file-service/src/pages.rs b/file-service/src/pages.rs index 977f54f..e68aabe 100644 --- a/file-service/src/pages.rs +++ b/file-service/src/pages.rs @@ -4,32 +4,35 @@ use file_service::{FileHandle, FileInfo, ReadFileError}; pub fn auth(_message: Option) -> build_html::HtmlPage { build_html::HtmlPage::new() - .with_title("Authentication") + .with_title("Sign In") .with_stylesheet("/css") .with_container( Container::new(ContainerType::Div) .with_attributes([("class", "authentication-page")]) + .with_container(auth_form()), + ) +} + +fn auth_form() -> Container { + Container::default() + .with_attributes([("class", "card authentication-form")]) + .with_html( + Form::new() + .with_path("/auth") + .with_method("post") .with_container( Container::new(ContainerType::Div) - .with_attributes([("class", "card authentication-form")]) .with_html( - Form::new() - .with_path("/auth") - .with_method("post") - .with_container( - Container::new(ContainerType::Div) - .with_attributes([("class", "authentication-form__label")]) - .with_html(Label::new("for-token-input", "Authentication")), - ) - .with_container( - Container::new(ContainerType::Div) - .with_attributes([("class", "authentication-form__input")]) - .with_html( - Input::new("password", "password") - .with_id("for-token-input") - .with_attributes([("size", "50")]), - ), - ), + Input::new("password", "password") + .with_id("for-token-input") + .with_attributes([ + ("size", "50"), + ("class", "authentication-form__input"), + ]), + ) + .with_html( + Button::new("Sign In") + .with_attributes([("class", "authentication-form__button")]), ), ), ) @@ -87,15 +90,16 @@ pub fn thumbnail(info: &FileInfo) -> Container { .with_html( Container::new(ContainerType::Div).with_link( format!("/{}", *info.id), - Image::new(&format!("{}/tn", *info.id)) - .with_attributes([("class", "thumbnail__image")]) + Container::default() + .with_attributes([("class", "thumbnail")]) + .with_image(&format!("{}/tn", *info.id), "test data") .to_html_string(), ), ) .with_html( Container::new(ContainerType::Div) .with_html( - UnorderedList::new() + Container::new(ContainerType::UnorderedList) .with_attributes(vec![("class", "thumbnail__metadata")]) .with_html(info.name.clone()) .with_html(format!("{}", info.created.format("%Y-%m-%d"))), diff --git a/file-service/templates/style.css b/file-service/templates/style.css index a423bbf..d979df9 100644 --- a/file-service/templates/style.css +++ b/file-service/templates/style.css @@ -29,6 +29,7 @@ body { justify-content: center; align-items: center; height: 200px; + margin: 8px; } .authentication-form { @@ -133,6 +134,16 @@ body { .authentication-form { width: 100%; + display: flex; + flex-direction: column; + } + + .authentication-form__input { + font-size: x-large; + } + + .authentication-form__button { + font-size: x-large; } .upload-form__selector {