+
diff --git a/frontend/src/lib/components/ScriptEditor.svelte b/frontend/src/lib/components/ScriptEditor.svelte
index 94df5e0455..41bcf0bcaf 100644
--- a/frontend/src/lib/components/ScriptEditor.svelte
+++ b/frontend/src/lib/components/ScriptEditor.svelte
@@ -146,6 +146,7 @@
bind:code
bind:websocketAlive
bind:this={editor}
+ on:change={() => inferSchema()}
cmdEnterAction={async () => {
await inferSchema()
runTest()
diff --git a/frontend/src/lib/components/ScriptSchema.svelte b/frontend/src/lib/components/ScriptSchema.svelte
index 20cb0613ec..7374064118 100644
--- a/frontend/src/lib/components/ScriptSchema.svelte
+++ b/frontend/src/lib/components/ScriptSchema.svelte
@@ -21,7 +21,7 @@
-
UI customisation
+ Advanced
UI
diff --git a/frontend/src/lib/components/common/button/Button.svelte b/frontend/src/lib/components/common/button/Button.svelte
index 862d073f09..1a494e6c94 100644
--- a/frontend/src/lib/components/common/button/Button.svelte
+++ b/frontend/src/lib/components/common/button/Button.svelte
@@ -61,7 +61,7 @@
variant === 'border' ? 'border' : '',
ButtonType.FontSizeClasses[size],
ButtonType.SpacingClasses[spacingSize],
- 'focus:ring-4 font-semibold',
+ 'focus:ring-2 font-semibold',
'rounded-md',
'justify-center items-center text-center whitespace-nowrap inline-flex',
btnClasses,
diff --git a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte
index 5a9e3c1340..e03f8b6761 100644
--- a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte
+++ b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte
@@ -176,9 +176,15 @@
automaticLayout={true}
cmdEnterAction={async () => {
selected = 'test'
+ if (flowModule.value.type === 'rawscript') {
+ flowModule.value.content = editor.getCode()
+ }
await reload(flowModule)
modulePreview?.runTestWithStepArgs()
}}
+ on:change={async (event) => {
+ await reload(flowModule)
+ }}
formatAction={() => reload(flowModule)}
/>
diff --git a/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte b/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte
index 48037b84b6..a4c5969d3b 100644
--- a/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte
+++ b/frontend/src/routes/approve/[workspace]/[job]/[resume]/[hmac]@none.svelte
@@ -5,10 +5,10 @@
import CenteredModal from '$lib/components/CenteredModal.svelte'
import { sendUserToast } from '$lib/utils'
import FlowMetadata from '$lib/components/FlowMetadata.svelte'
- import FlowModulesViewer from '$lib/components/FlowModulesViewer.svelte'
import JobArgs from '$lib/components/JobArgs.svelte'
import { onDestroy, onMount } from 'svelte'
import Tooltip from '$lib/components/Tooltip.svelte'
+ import FlowGraph from '$lib/components/graph/FlowGraph.svelte'
let job: Job | undefined = undefined
let currentApprovers: { resume_id: number; approver: string }[] = []
@@ -21,6 +21,7 @@
.includes(new Number($page.params.resume).valueOf())
let timeout: NodeJS.Timer | undefined = undefined
+ let error: string | undefined = undefined
getJob()
@@ -28,14 +29,16 @@
timeout = setInterval(getJob, 1000)
window.onunhandledrejection = (event: PromiseRejectionEvent) => {
event.preventDefault()
-
+ timeout && clearInterval(timeout)
if (event.reason?.message) {
const { message, body, status } = event.reason
if (body) {
sendUserToast(`${body}`, true)
+ error = body.toString()
} else {
sendUserToast(`${message}`, true)
+ error = message.toString()
}
} else {
console.log('Caught unhandled promise rejection without message', event)
@@ -48,19 +51,15 @@
})
async function getJob() {
- try {
- const suspendedJobFlow = await JobService.getSuspendedJobFlow({
- workspace: $page.params.workspace,
- id: $page.params.job,
- resumeId: new Number($page.params.resume).valueOf(),
- signature: $page.params.hmac,
- approver
- })
- job = suspendedJobFlow.job
- currentApprovers = suspendedJobFlow.approvers
- } catch (e) {
- sendUserToast(e.message, true)
- }
+ const suspendedJobFlow = await JobService.getSuspendedJobFlow({
+ workspace: $page.params.workspace,
+ id: $page.params.job,
+ resumeId: new Number($page.params.resume).valueOf(),
+ signature: $page.params.hmac,
+ approver
+ })
+ job = suspendedJobFlow.job
+ currentApprovers = suspendedJobFlow.approvers
}
async function resume() {
@@ -92,6 +91,9 @@
+ {#if error}
+ {error}
+ {/if}
Current approvers
@@ -167,10 +169,13 @@
{#if job && job.raw_flow}
Flow details
-
+
+
+
{/if}