Studio: first working version

This commit is contained in:
Pieter Vander Vennet 2023-10-17 01:36:22 +02:00
parent 4fe0c41628
commit 632dd6dfb1
8 changed files with 36 additions and 23 deletions

View file

@ -95,6 +95,19 @@
}
],
"multiAnswer": true
},
{
"question": {
"en": "When is this animal shelter opened?"
},
"id": "7",
"render": {
"en": "{opening_hours_table()}"
},
"freeform": {
"key": "opening_hours",
"type": "opening_hours"
}
}
],
"deletion": true,
@ -105,4 +118,4 @@
"description": {
"en": "An animal shelter is a facility where animals in trouble are brought and facility's staff (volunteers or not) feeds them and cares of them, rehabilitating and healing them if necessary. This definition includes kennels for abandoned dogs, catteries for abandoned cats, shelters for other abandoned pets and wildlife recovery centres. "
}
}
}

View file

@ -174,7 +174,10 @@ export class OsmConnection {
public AttemptLogin() {
this.UpdateCapabilities()
this.loadingStatus.setData("loading")
if (this.loadingStatus.data !== "logged-in") {
// Stay 'logged-in' if we are already logged in; this simply means we are checking for messages
this.loadingStatus.setData("loading")
}
if (this.fakeUser) {
this.loadingStatus.setData("logged-in")
console.log("AttemptLogin called, but ignored as fakeUser is set")

View file

@ -515,7 +515,6 @@ class MappedStore<TIn, T> extends Store<T> {
}
private unregisterFromUpstream() {
console.debug("Unregistering callbacks for", this.tag)
this._callbacksAreRegistered = false
this._unregisterFromUpstream()
this._unregisterFromExtraStores?.forEach((unr) => unr())

View file

@ -1,7 +1,6 @@
import { TagConfigJson } from "./TagConfigJson"
import { TagRenderingConfigJson } from "./TagRenderingConfigJson"
import type { Translatable } from "./Translatable"
import { TagsFilter } from "../../../Logic/Tags/TagsFilter"
export interface MappingConfigJson {
/**

View file

@ -28,8 +28,7 @@
</script>
{#if $badge}
<slot/>
<!-- {#if !ignoreLoading && $loadingStatus === "loading"}
{#if !ignoreLoading && $loadingStatus === "loading"}
<slot name="loading">
<Loading />
</slot>
@ -42,5 +41,5 @@
<slot />
{:else if $loadingStatus === "not-attempted"}
<slot name="not-logged-in" />
{/if} -->
{/if}
{/if}

View file

@ -180,26 +180,30 @@ export default class EditLayerState {
public setValueAt(path: ReadonlyArray<string | number>, v: any) {
let entry = this.configuration.data
const isUndefined =
v !== undefined &&
v !== null &&
v !== "" &&
!(typeof v === "object" && Object.keys({}).length === 0)
v === undefined ||
v === null ||
v === "" ||
(typeof v === "object" && Object.keys(v).length === 0)
for (let i = 0; i < path.length - 1; i++) {
const breadcrumb = path[i]
if (entry[breadcrumb] === undefined) {
if (isUndefined) {
// we have a dead end _and_ we do not need to set a value - we do an early return
return
}
entry[breadcrumb] = typeof path[i + 1] === "number" ? [] : {}
}
entry = entry[breadcrumb]
if (entry === undefined && isUndefined) {
// Nothing to do anymore: we cannot traverse the object, but don't have to set something anyway
return
}
}
const lastBreadcrumb = path.at(-1)
if (isUndefined) {
entry[path.at(-1)] = v
} else if (entry) {
delete entry[path.at(-1)]
if (entry && entry[lastBreadcrumb]) {
console.log("Deleting", lastBreadcrumb, "of", path.join("."))
delete entry[lastBreadcrumb]
}
} else {
entry[lastBreadcrumb] = v
}
this.configuration.ping()
}

View file

@ -96,13 +96,10 @@
err = path.join(".") + " " + e
}
let startValue = state.getCurrentValueFor(path)
const tags = new UIEventSource<Record<string, string>>({value: startValue ?? ""})
const tags = new UIEventSource<Record<string, string>>({value: startValue})
try {
onDestroy(state.register(path, tags.map(tgs => {
const v = tgs["value"];
if(v !== ""){
console.log("Registering",path,"setting value to", v)
}
if(typeof v !== "string"){
return v
}

View file

@ -90,7 +90,6 @@
const existingValue = state.getCurrentValueFor(path);
console.log("Initial, existing value for", path.join(".") ,"is", existingValue);
if (hasBooleanOption >= 0 && (existingValue === true || existingValue === false)) {
tags.setData({ value: "" + existingValue });
} else if (lastIsString && typeof existingValue === "string") {