Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*.pyc
.vscode/
.idea/
.mypy_cache/
.DS_Store
node_modules/
Expand Down
25 changes: 24 additions & 1 deletion admin_ui/src/components/NewForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@
v-bind:key="property.title"
v-for="(property, columnName) in schema.properties"
>
<div v-if="Object.keys(property).includes('$ref')" v-bind:enum="property['$ref']">
<label>{{ schema["$defs"].enum.title }}</label>
<InputField
v-bind:choices="enumToChoices(schema['$defs'].enum.enum)"
v-bind:isFilter="false"
v-bind:key="columnName"
v-bind:columnName="String(columnName)"
v-bind:type="schema['$defs'].enum.type"
v-bind:timeResolution="
schema?.extra?.time_resolution[columnName]
"
v-bind:format="property.format"
/>
</div>
<label>{{ property.title }}</label>
<InputField
v-bind:isFilter="false"
Expand All @@ -23,7 +37,16 @@
<script lang="ts">
import { defineComponent, type PropType } from "vue"
import InputField from "./InputField.vue"
import { type Schema, getType } from "@/interfaces"
import { Enum, Choices, type Schema, getType } from "@/interfaces"

export function enumToChoices(data: Enum): Choices {
var choices: Choices = {}
for (let index = 0; index < data.enum.length; index++) {
const element = data.enum[index];
choices[element] = {display_name: element, value: element}
}
return choices
}

export default defineComponent({
props: {
Expand Down
12 changes: 12 additions & 0 deletions admin_ui/src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,23 @@ export interface SchemaExtra {
time_resolution: { [key: string]: number }
}

export interface Enum {
title: string
type: string
enum: string[]
}

export interface SchemaEnum {
[key: string]: Enum
}

export interface Schema {
extra: SchemaExtra
properties: Properties
required: string[]
title: string
type: string
$defs: SchemaEnum
}

export interface Properties {
Expand All @@ -145,6 +156,7 @@ export interface Property {
anyOf?: AnyOf[]
format?: string
maxLength?: number
$ref: string | null
}

export interface ForeignKey {
Expand Down
Loading