fix: fix resource type picker object reinitialization

This commit is contained in:
Ruben Fiszel
2023-09-25 19:13:05 +02:00
parent 1a572e1f56
commit cbd68a944c
7 changed files with 37 additions and 14 deletions
+6 -1
View File
@@ -114,7 +114,10 @@
}
function evalValueToRaw() {
rawValue = inputCat === 'object' ? JSON.stringify(value, null, 2) : undefined
rawValue =
inputCat === 'object' || inputCat === 'resource-object'
? JSON.stringify(value, null, 2)
: undefined
}
evalValueToRaw()
@@ -351,6 +354,8 @@
</Button>
</div>
</div>
{:else if inputCat == 'resource-object' && resourceTypes == undefined}
<span class="text-2xs text-tertiary">Loading resource types...</span>
{:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format.split('-').length > 1 && resourceTypes.includes(format.substring('resource-'.length))))}
<ObjectResourceInput {disablePortal} {format} bind:value {showSchemaExplorer} />
{:else if inputCat == 'object' || inputCat == 'resource-object'}
@@ -15,11 +15,11 @@
import type VariableEditor from './VariableEditor.svelte'
import type ItemPicker from './ItemPicker.svelte'
import { ResourceService, type InputTransform } from '$lib/gen'
import type { InputTransform } from '$lib/gen'
import TemplateEditor from './TemplateEditor.svelte'
import { setInputCat as computeInputCat, isCodeInjection } from '$lib/utils'
import { FunctionSquare, Plug } from 'lucide-svelte'
import { workspaceStore } from '$lib/stores'
import { getResourceTypes } from './resourceTypesStore'
export let schema: Schema
export let arg: InputTransform | any
@@ -141,8 +141,9 @@
let resourceTypes: string[] | undefined = undefined
async function loadResourceTypes() {
resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore! })
resourceTypes = await getResourceTypes()
}
loadResourceTypes()
</script>
@@ -263,7 +264,7 @@
</span>
{/if}
{#if isStaticTemplate(inputCat) && propertyType == 'static' && !noDynamicToggle}
<div class="mt-2 min-h-[28px] rounded border border-1 border-gray-400">
<div class="mt-2 min-h-[28px]">
{#if arg}
<TemplateEditor
bind:this={monacoTemplate}
@@ -8,10 +8,10 @@
import { getContext } from 'svelte'
import type { FlowEditorContext } from './flows/types'
import { evalValue } from './flows/utils'
import { ResourceService, type FlowModule } from '$lib/gen'
import type { FlowModule } from '$lib/gen'
import type { PickableProperties } from './flows/previousResults'
import type SimpleEditor from './SimpleEditor.svelte'
import { workspaceStore } from '$lib/stores'
import { getResourceTypes } from './resourceTypesStore'
export let schema: Schema
export let args: Record<string, any> = {}
@@ -62,10 +62,7 @@
let resourceTypes: string[] | undefined = undefined
async function loadResourceTypes() {
resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore! })
}
loadResourceTypes()
getResourceTypes()
</script>
<div class="w-full pt-2">
@@ -1,6 +1,6 @@
<script lang="ts">
import type { Schema } from '$lib/common'
import { ResourceService, VariableService } from '$lib/gen'
import { VariableService } from '$lib/gen'
import { workspaceStore } from '$lib/stores'
import { allTrue } from '$lib/utils'
import { faPlus } from '@fortawesome/free-solid-svg-icons'
@@ -10,6 +10,7 @@
import VariableEditor from './VariableEditor.svelte'
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte'
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte'
import { getResourceTypes } from './resourceTypesStore'
export let schema: Schema | any
export let args: Record<string, any> = {}
@@ -70,8 +71,9 @@
let resourceTypes: string[] | undefined = undefined
async function loadResourceTypes() {
resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore! })
resourceTypes = await getResourceTypes()
}
loadResourceTypes()
</script>
@@ -604,7 +604,7 @@
<div
bind:this={divEl}
style="height: 18px;"
class="{$$props.class ?? ''} template rounded-lg min-h-4 mx-0.5 overflow-clip"
class="{$$props.class ?? ''} border template rounded min-h-4 mx-0.5 overflow-clip"
bind:clientWidth={width}
/>
@@ -0,0 +1,16 @@
import { ResourceService } from "$lib/gen";
import { workspaceStore } from "$lib/stores";
import { get, writable } from "svelte/store";
export const resourceTypesStore = writable<string[] | undefined>(undefined)
export async function getResourceTypes() {
const rts = get(resourceTypesStore)
if (rts) {
return rts
} else {
const nrts = await ResourceService.listResourceTypeNames({ workspace: get(workspaceStore)! })
resourceTypesStore.set(nrts)
return nrts
}
}
@@ -15,6 +15,7 @@
import Popover from '$lib/components/Popover.svelte'
import Required from '$lib/components/Required.svelte'
import ResourceEditor from '$lib/components/ResourceEditor.svelte'
import { resourceTypesStore } from '$lib/components/resourceTypesStore'
import SchemaEditor from '$lib/components/SchemaEditor.svelte'
import SchemaViewer from '$lib/components/SchemaViewer.svelte'
import SearchItems from '$lib/components/SearchItems.svelte'
@@ -175,6 +176,7 @@
resourceTypeDrawer.closeDrawer?.()
sendUserToast('Resource type created')
loadResourceTypes()
$resourceTypesStore = undefined
}
async function updateResourceType(): Promise<void> {