forked from MapComplete/MapComplete
Studio: first working version
This commit is contained in:
parent
4fe0c41628
commit
632dd6dfb1
8 changed files with 36 additions and 23 deletions
|
@ -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. "
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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")
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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 {
|
||||
/**
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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") {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue