// Copyright 2021 Jeremy Wall // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. use std::sync::Arc; use maud::{html, Markup}; use axum::{extract::State, Router}; use crate::dashboard::Dashboard; type Config = State>>; pub fn mk_api_routes() -> Router { // Query routes Router::new() } pub fn mk_ui_routes() -> Router { Router::new() } pub async fn index(State(config): Config) -> Markup { html! { html { head { title { ("Heracles - Prometheus Unshackled") } } body { (app(State(config.clone())).await) } } } } pub async fn app(State(config): Config) -> Markup { let titles = config.iter().map(|d| d.title.clone()).collect::>(); html! { div { // Header menu ul { @for title in &titles { li { (title) } } } // dashboard display div { } } } }