Skip to content
Snippets Groups Projects

Resolve "Implement json schema parser"

Merged Daniel Göbel requested to merge feature/38-implement-json-schema-parser into development
Files
6
@@ -37,7 +37,7 @@ const parameters = computed<Record<string, never>>(
() => props.parameterGroup["properties"]
);
const modelStuff = computed(() => props.modelValue);
const formInput = computed(() => props.modelValue);
const emit = defineEmits<{
(
e: "update:modelValue",
@@ -45,8 +45,21 @@ const emit = defineEmits<{
): void;
}>();
function parameterRequired(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
parameterGroup: Record<string, any>,
parameterName: string
): boolean {
return (
parameterGroup["required"]?.includes(parameterName) || // parameter is required
parameterGroup["dependentRequired"]?.[parameterName] // parameter is required when another parameter is set
?.map((param: string) => formInput.value[param])
?.reduce((acc: boolean, val: string) => acc || val, false)
);
}
watch(
modelStuff,
formInput,
(newVal) => {
//console.log("Group", props.parameterGroupName, newVal);
emit("update:modelValue", newVal);
@@ -87,10 +100,10 @@ watch(
:parameter-name="parameterName"
:parameter="parameter"
:help-id="parameterName + '-help'"
:required="parameterGroup['required']?.includes(parameterName)"
:model-value="modelStuff[parameterName]"
:required="parameterRequired(parameterGroup, parameterName)"
:model-value="formInput[parameterName]"
@update:model-value="
(newValue) => (modelStuff[parameterName] = newValue)
(newValue) => (formInput[parameterName] = newValue)
"
/>
<parameter-boolean-input
@@ -98,9 +111,9 @@ watch(
:parameter-name="parameterName"
:parameter="parameter"
:help-id="parameterName + '-help'"
:model-value="modelStuff[parameterName]"
:model-value="formInput[parameterName]"
@update:model-value="
(newValue) => (modelStuff[parameterName] = newValue)
(newValue) => (formInput[parameterName] = newValue)
"
/>
<template v-else-if="parameter['type'] === 'string'">
@@ -108,20 +121,20 @@ watch(
v-if="parameter['enum']"
:parameter-name="parameterName"
:parameter="parameter"
:model-value="modelStuff[parameterName]"
:required="parameterGroup['required']?.includes(parameterName)"
:model-value="formInput[parameterName]"
:required="parameterRequired(parameterGroup, parameterName)"
@update:model-value="
(newValue) => (modelStuff[parameterName] = newValue)
(newValue) => (formInput[parameterName] = newValue)
"
/>
<parameter-string-input
v-else
:parameter-name="parameterName"
:parameter="parameter"
:model-value="modelStuff[parameterName]"
:required="parameterGroup['required']?.includes(parameterName)"
:model-value="formInput[parameterName]"
:required="parameterRequired(parameterGroup, parameterName)"
@update:model-value="
(newValue) => (modelStuff[parameterName] = newValue)
(newValue) => (formInput[parameterName] = newValue)
"
/>
</template>
@@ -151,6 +164,9 @@ watch(
class="helpTextCode"
:markdown="parameter['help_text']"
/>
<p v-if="parameter['pattern']">
Pattern: <code>{{ parameter["pattern"] }}</code>
</p>
</div>
</template>
</template>
Loading