81 lines
2 KiB
Rust
81 lines
2 KiB
Rust
use super::loader::Loader;
|
|
|
|
use web_sys::Node;
|
|
use yew::virtual_dom::VNode;
|
|
use yew::{function_component, html, Html};
|
|
|
|
#[function_component(App)]
|
|
pub fn app() -> Html {
|
|
html! {
|
|
<>
|
|
<h1>
|
|
<a href="/">
|
|
{ "gpx.thermokar.st" }
|
|
</a>
|
|
</h1>
|
|
|
|
<p>
|
|
{ "a client-side tool for merging "}
|
|
<a href="https://www.topografix.com/gpx.asp">
|
|
{ "gpx files" }
|
|
</a>
|
|
</p>
|
|
|
|
<Loader />
|
|
|
|
<hr/>
|
|
|
|
<Footer />
|
|
</>
|
|
}
|
|
}
|
|
|
|
#[function_component(Footer)]
|
|
fn footer() -> Html {
|
|
let notes = Vec::from([
|
|
// note 1
|
|
"this has only been tested on GPX files produced by \
|
|
<a href=\"https://strava.com\" target=\"_blank\">strava</a> and \
|
|
<a href=\"https://garmin.com\" target=\"_blank\">garmin</a>",
|
|
// note 2
|
|
"all third-party extension info \
|
|
<a href=\"https://github.com/georust/gpx/issues/8\" target=\"_blank\">\
|
|
is stripped</a>",
|
|
// note 3
|
|
"if the app breaks, try refreshing the page",
|
|
"source (public access): git://pingo.thermokar.st/gpx-web-utils",
|
|
// note 4
|
|
"source (mirror): \
|
|
<a href=\"https://github.com/thermokarst/gpx-web-utils\" target=\"_blank\">\
|
|
https://github.com/thermokarst/gpx-web-utils</a>",
|
|
]);
|
|
|
|
html! {
|
|
<div>
|
|
<ul>
|
|
{ for notes.iter().map(|n| inner_html_enabled_li(n)) }
|
|
</ul>
|
|
|
|
<span>
|
|
<small>
|
|
{ "\u{000A9} matthew ryan dillon, 2021" }
|
|
</small>
|
|
</span>
|
|
</div>
|
|
}
|
|
}
|
|
|
|
fn inner_html_enabled_li(data: &str) -> Html {
|
|
let li = web_sys::window()
|
|
.unwrap()
|
|
.document()
|
|
.unwrap()
|
|
.create_element("li")
|
|
.unwrap();
|
|
|
|
li.set_inner_html(data);
|
|
|
|
let node = Node::from(li);
|
|
|
|
VNode::VRef(node)
|
|
}
|