UX: allow to share login tokens via QR-code for educational context

This commit is contained in:
Pieter Vander Vennet 2025-05-29 23:26:59 +02:00
parent 93c613aa89
commit a90387c4f3
6 changed files with 123 additions and 48 deletions

View file

@ -13,16 +13,38 @@
export let state: SpecialVisualizationState
export let tags: UIEventSource<Record<string, string>>
export let feature: Feature
let [lon, lat] = GeoOperations.centerpointCoordinates(feature)
export let extraUrlParams: Record<string, string> = {}
const includeLayout = window.location.pathname.split("/").at(-1).startsWith("theme")
const layout = includeLayout ? "layout=" + state.theme.id + "&" : ""
let id: Store<string> = tags.mapD((tags) => tags.id)
let url = id.mapD(
extraUrlParams["z"] ??= 15
if (includeLayout) {
extraUrlParams["layout"] ??= state.theme.id
}
if (feature) {
const [lon, lat] = GeoOperations.centerpointCoordinates(feature)
extraUrlParams["lon"] ??= "" + lon
extraUrlParams["lat"] ??= "" + lat
} else if (state?.mapProperties?.location?.data) {
const l = state?.mapProperties?.location?.data
extraUrlParams["lon"] ??= "" + l.lon
extraUrlParams["lat"] ??= "" + l.lat
}
const params = []
for (const key in extraUrlParams) {
console.log(key, "-->", extraUrlParams[key])
params.push(key + "=" + encodeURIComponent(extraUrlParams[key]))
}
let url = id.map((id) => {
if (id) {
return "#" + id
} else {
return ""
}
}).map(
(id) =>
`${window.location.protocol}//${window.location.host}${window.location.pathname}?${layout}lat=${lat}&lon=${lon}&z=15` +
`#${id}`
`${window.location.protocol}//${window.location.host}${window.location.pathname}?${params.join("&")}${id}`
)
function toggleSize() {
@ -32,9 +54,11 @@
size.setData(smallSize)
}
}
url.addCallbackAndRunD(url => console.log("URL IS", url))
</script>
{#if $id.startsWith("node/-")}
{#if $id?.startsWith("node/-")}
<!-- Not yet uploaded, doesn't have a fixed ID -->
<Loading />
{:else}