fix initialization of flowstore

This commit is contained in:
Ruben Fiszel
2022-11-03 14:34:41 +01:00
parent 8c8f1b9f2c
commit 63be299979
12 changed files with 26 additions and 22 deletions
@@ -137,8 +137,7 @@
'state',
encodeState({
flow: $flowStore,
selectedId: $selectedIdStore,
flowStateStore: $flowStateStore
selectedId: $selectedIdStore
})
),
500
@@ -175,7 +174,6 @@
}
onMount(() => {
console.log(selectedId)
selectedId && select(selectedId)
})
@@ -112,7 +112,7 @@
if (flowState) {
if (
!flowState[flowJobIds.moduleId].previewResult ||
!Array.isArray(flowState[flowJobIds.moduleId].previewResult)
!Array.isArray(flowState[flowJobIds.moduleId]?.previewResult)
) {
flowState[flowJobIds.moduleId].previewResult = []
}
@@ -163,7 +163,7 @@
: undefined}
on:jobsLoaded={(e) => {
if (mod.id && (mod.flow_jobs ?? []).length == 0) {
if (flowState) {
if (flowState && flowState[mod.id]) {
flowState[mod.id].previewResult = e.detail.result
flowState[mod.id].previewArgs = e.detail.args
}
@@ -84,7 +84,11 @@
})
if (JSON.stringify(schema) !== JSON.stringify($flowStateStore[flowModule.id]?.schema)) {
$flowStateStore[flowModule.id].schema = schema
if (!$flowStateStore[flowModule.id]) {
$flowStateStore[flowModule.id] = { schema }
} else {
$flowStateStore[flowModule.id].schema = schema
}
}
}
@@ -174,7 +178,7 @@
<Kbd>Ctrl/Cmd</Kbd> + <Kbd>S</Kbd>
</Tooltip>Inputs</Tab
>
<Tab value="test">Test</Tab>
<Tab value="test">Test this step</Tab>
<Tab value="retries">Retries</Tab>
{#if !$selectedId.includes('failure')}
<Tab value="early-stop">Early Stop</Tab>
@@ -189,7 +193,7 @@
pickableProperties={stepPropPicker.pickableProperties}
>
<SchemaForm
schema={$flowStateStore[$selectedId].schema}
schema={$flowStateStore[$selectedId]?.schema ?? {}}
inputTransform={true}
importPath={$selectedId}
bind:args={flowModule.value.input_transforms}
@@ -201,7 +205,7 @@
<ModulePreview
bind:this={modulePreview}
mod={flowModule}
schema={$flowStateStore[$selectedId].schema}
schema={$flowStateStore[$selectedId]?.schema ?? {}}
/>
{:else if selected === 'retries'}
<FlowRetries bind:flowModule class="px-4 pb-4 h-full overflow-auto" />
@@ -25,7 +25,7 @@
let editor: SimpleEditor | undefined = undefined
const pickableProperties = {
result: $flowStateStore[$selectedId].previewResult
result: $flowStateStore[$selectedId]?.previewResult ?? {}
}
$: isSuspendEnabled = Boolean(flowModule.suspend)
@@ -19,8 +19,8 @@ export type FlowState = Record<string, FlowModuleState>
*/
export const flowStateStore = writable<FlowState>({})
export async function initFlowState(flow: Flow, flowState: FlowState | undefined) {
const modulesState: FlowState = flowState ?? {}
export async function initFlowState(flow: Flow) {
const modulesState: FlowState = {}
await mapFlowModules(flow.value.modules, modulesState)
@@ -28,6 +28,7 @@ export async function initFlowState(flow: Flow, flowState: FlowState | undefined
? await loadFlowModuleState(flow.value.failure_module)
: emptyFlowModuleState()
console.log(modulesState)
flowStateStore.set({
...modulesState,
failure: failureModule
@@ -63,6 +64,7 @@ async function mapFlowModule(flowModule: FlowModule, modulesState: FlowState) {
const flowModuleState = await loadFlowModuleState(flowModule)
modulesState[flowModule.id] = flowModuleState
}
}
async function mapFlowModules(flowModules: FlowModule[], modulesState: FlowState) {
@@ -14,7 +14,7 @@ import {
NEVER_TESTED_THIS_FAR,
numberToChars
} from './utils'
import { Mutex, Semaphore, withTimeout } from 'async-mutex';
import { Mutex } from 'async-mutex';
export async function loadFlowModuleState(flowModule: FlowModule): Promise<FlowModuleState> {
try {
@@ -51,7 +51,7 @@ export function dfs(modules: FlowModule[], previewOrder: boolean = false): strin
export const flowIds = derived(flowStore, flow => dfs(flow.value.modules))
export async function initFlow(flow: Flow, flowState: FlowState | undefined) {
export async function initFlow(flow: Flow) {
let counter = 40
for (const mod of flow.value.modules) {
@@ -68,7 +68,7 @@ export async function initFlow(flow: Flow, flowState: FlowState | undefined) {
}
}
await initFlowState(flow, flowState)
await initFlowState(flow)
flowStore.set(flow)
@@ -20,7 +20,7 @@
function importJson() {
Object.assign($flowStore, JSON.parse(pendingJson))
initFlow($flowStore, undefined)
initFlow($flowStore)
sendUserToast('OpenFlow imported from JSON')
jsonSetterDrawer.toggleDrawer()
}
@@ -110,7 +110,7 @@ function getFlowInput(
} else {
return {
...parentFlowInput,
previous_result: flattenPreviousResult(flowState[parentPreviousModuleId].previewResult)
previous_result: flattenPreviousResult(flowState[parentPreviousModuleId]?.previewResult ?? {})
}
}
}
@@ -131,7 +131,7 @@ export function getStepPropPicker(
const flowInput = getFlowInput(dfs(parentModule?.id, flow), flowState, args, flow.schema)
const previousResults = previousModule
? flowState[previousModule.id].previewResult
? flowState[previousModule.id]?.previewResult
: flattenPreviousResult(flowInput)
const pickableProperties = {
@@ -44,7 +44,7 @@
function importJson() {
Object.assign($flowStore, JSON.parse(pendingJson))
initFlow($flowStore, undefined)
initFlow($flowStore)
sendUserToast('OpenFlow imported from JSON')
drawers.json?.toggleDrawer()
}
+1 -1
View File
@@ -50,7 +50,7 @@
$page.url.searchParams.delete('hub')
}
selectedId = state?.selectedId
await initFlow(flow, state?.flowState)
await initFlow(flow)
}
loadFlow()
@@ -34,7 +34,7 @@
let initialPath: string = ''
initFlow(flow, undefined)
initFlow(flow)
async function loadFlow(): Promise<void> {
flow =
@@ -46,7 +46,7 @@
})
initialPath = flow.path
await initFlow(flow, stateLoadedFromUrl?.flowState)
await initFlow(flow)
selectedId = stateLoadedFromUrl?.selectedId
$dirtyStore = false
}