mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-04 02:34:13 +02:00
some basic viewer
This commit is contained in:
parent
2dee28d022
commit
5910b2f35a
45 changed files with 1089 additions and 1436 deletions
|
|
@ -117,7 +117,7 @@ impl Page for DemoPage {
|
|||
}
|
||||
}
|
||||
}
|
||||
link rel="stylesheet" type="text/css" href=(style_url);
|
||||
link rel="stylesheet" type="text/css" href=(style_url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ mod plugin_section;
|
|||
pub mod profile;
|
||||
pub mod upload;
|
||||
pub mod uploads;
|
||||
pub mod viewer;
|
||||
|
||||
use crate::session::SessionData;
|
||||
use demostf_build::Asset;
|
||||
|
|
|
|||
68
src/pages/viewer.rs
Normal file
68
src/pages/viewer.rs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
use crate::data::demo::Demo;
|
||||
use crate::pages::Page;
|
||||
use demostf_build::Asset;
|
||||
use maud::{html, Markup};
|
||||
use std::borrow::Cow;
|
||||
|
||||
pub struct ViewerPage {
|
||||
pub demo: Option<Demo>,
|
||||
}
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(source = "script/viewer.tsx", url = "/viewer.js")]
|
||||
pub struct ViewerScript;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(
|
||||
source = "script/viewer/Analyse/Data/ParseWorker.ts",
|
||||
url = "/parse-worker.js"
|
||||
)]
|
||||
pub struct ParseWorkerScript;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(source = "style/pages/viewer.css", url = "/viewer.css")]
|
||||
pub struct ViewerStyle;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(
|
||||
source = "node_modules/@demostf/tf-demos-viewer/tf_demos_viewer_bg.wasm",
|
||||
url = "/tf-demo-viewer.wasm"
|
||||
)]
|
||||
pub struct ParserWasm;
|
||||
|
||||
impl Page for ViewerPage {
|
||||
fn title(&self) -> Cow<'static, str> {
|
||||
format!(
|
||||
"{} - demos.tf",
|
||||
self.demo
|
||||
.as_ref()
|
||||
.map(|demo| demo.server.as_str())
|
||||
.unwrap_or("Viewer")
|
||||
)
|
||||
.into()
|
||||
}
|
||||
|
||||
fn render(&self) -> Markup {
|
||||
let script = ViewerScript::url();
|
||||
let style_url = ViewerStyle::url();
|
||||
html! {
|
||||
.viewer-page {
|
||||
@if let Some(demo) = self.demo.as_ref() {
|
||||
input type = "hidden" name = "url" value = (demo.url) {}
|
||||
progress.download min = "0" max = "100" value = "0" {}
|
||||
} @else {
|
||||
.dropzone role = "button" {
|
||||
noscript {
|
||||
"Javascript is required to view a demo."
|
||||
}
|
||||
span.text { "Drop files or click to view" }
|
||||
input type = "file" {}
|
||||
}
|
||||
}
|
||||
progress.parse min = "0" max = "100" value = "0" {}
|
||||
}
|
||||
script module src = (script) type = "text/javascript" {}
|
||||
link rel="stylesheet" type="text/css" href=(style_url);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue