mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
edit wip
This commit is contained in:
parent
0ab24ead47
commit
189788a1b6
14 changed files with 599 additions and 6 deletions
14
src/main.rs
14
src/main.rs
|
|
@ -17,6 +17,7 @@ use crate::fragments::demo_list::DemoList;
|
|||
use crate::pages::about::AboutPage;
|
||||
use crate::pages::api::ApiPage;
|
||||
use crate::pages::demo::{ClassIconsStyle, DemoPage};
|
||||
use crate::pages::edit::{EditWasm, EditWorkerScript, EditorPage, EditorScript, EditorStyle};
|
||||
use crate::pages::index::{DemoListScript, Index};
|
||||
use crate::pages::profile::Profile;
|
||||
use crate::pages::upload::{UploadPage, UploadScript};
|
||||
|
|
@ -111,6 +112,13 @@ async fn main() -> Result<()> {
|
|||
get(serve_asset::<ParseWorkerScript>),
|
||||
)
|
||||
.route(ParserWasm::route(), get(serve_asset::<ParserWasm>))
|
||||
.route(EditorScript::route(), get(serve_asset::<EditorScript>))
|
||||
.route(EditorStyle::route(), get(serve_asset::<EditorStyle>))
|
||||
.route(
|
||||
EditWorkerScript::route(),
|
||||
get(serve_asset::<EditWorkerScript>),
|
||||
)
|
||||
.route(EditWasm::route(), get(serve_asset::<EditWasm>))
|
||||
.route(LogoPng::route(), get(serve_asset::<LogoPng>))
|
||||
.route(LogoSvg::route(), get(serve_asset::<LogoSvg>))
|
||||
.route("/fragments/demo-list", get(demo_list))
|
||||
|
|
@ -121,6 +129,7 @@ async fn main() -> Result<()> {
|
|||
.route("/logout", get(logout))
|
||||
.route("/upload", get(upload))
|
||||
.route("/viewer", get(viewer))
|
||||
.route("/edit", get(edit))
|
||||
.route("/viewer/:id", get(viewer))
|
||||
.route("/:id", get(demo))
|
||||
.route("/images/kill_icons/:icon", get(kill_icons))
|
||||
|
|
@ -386,6 +395,11 @@ async fn viewer(
|
|||
session,
|
||||
))
|
||||
}
|
||||
|
||||
async fn edit(session: SessionData) -> Result<Markup> {
|
||||
Ok(render(EditorPage, session))
|
||||
}
|
||||
|
||||
async fn handler_404() -> impl IntoResponse {
|
||||
Error::NotFound
|
||||
}
|
||||
|
|
|
|||
53
src/pages/edit.rs
Normal file
53
src/pages/edit.rs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
use crate::pages::Page;
|
||||
use demostf_build::Asset;
|
||||
use maud::{html, Markup};
|
||||
use std::borrow::Cow;
|
||||
|
||||
pub struct EditorPage;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(source = "script/editor.tsx", url = "/editor.js")]
|
||||
pub struct EditorScript;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(source = "script/edit/EditWorker.ts", url = "/edit-worker.js")]
|
||||
pub struct EditWorkerScript;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(source = "style/pages/editor.css", url = "/editor.css")]
|
||||
pub struct EditorStyle;
|
||||
|
||||
#[derive(Asset)]
|
||||
#[asset(
|
||||
source = "node_modules/@demostf/edit/edit_bg.wasm",
|
||||
url = "/tf-demo-editor.wasm"
|
||||
)]
|
||||
pub struct EditWasm;
|
||||
|
||||
impl Page for EditorPage {
|
||||
fn title(&self) -> Cow<'static, str> {
|
||||
"Edit - demos.tf".into()
|
||||
}
|
||||
|
||||
fn render(&self) -> Markup {
|
||||
let script = EditorScript::url();
|
||||
let style_url = EditorStyle::url();
|
||||
html! {
|
||||
.edit-page {
|
||||
p.page-note {
|
||||
"To edit a demo, select a file on your computer, select the desired options and press the \"edit\" button."
|
||||
}
|
||||
.dropzone role = "button" {
|
||||
noscript {
|
||||
"Javascript is required to view a demo."
|
||||
}
|
||||
span.text { "Drop files or click to view" }
|
||||
input type = "file" {}
|
||||
}
|
||||
.placeholder {}
|
||||
}
|
||||
script module src = (script) type = "text/javascript" {}
|
||||
link rel="stylesheet" type="text/css" href=(style_url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
pub mod about;
|
||||
pub mod api;
|
||||
pub mod demo;
|
||||
pub mod edit;
|
||||
pub mod index;
|
||||
mod plugin_section;
|
||||
pub mod profile;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue