diff --git a/src/views/desktop/transactions/import/tabs/ImportTransactionExecuteCustomScriptTab.vue b/src/views/desktop/transactions/import/tabs/ImportTransactionExecuteCustomScriptTab.vue index 5c564762..7c1142de 100644 --- a/src/views/desktop/transactions/import/tabs/ImportTransactionExecuteCustomScriptTab.vue +++ b/src/views/desktop/transactions/import/tabs/ImportTransactionExecuteCustomScriptTab.vue @@ -31,7 +31,7 @@
+ :color="executionError ? 'error': undefined" :value="displayPreviewResult">
@@ -101,6 +101,7 @@ const sandboxLoaded = ref(false); const customScript = ref(''); const previewResult = ref(undefined); const executingScript = ref(false); +const executionError = ref(''); const previewCount = ref(10); const numeralSystem = computed(() => getCurrentNumeralSystemType()); @@ -136,6 +137,8 @@ function parse(row, index) { const displayPreviewResult = computed(() => { if (executingScript.value) { return tt('Executing Script...'); + } else if (executionError.value) { + return executionError.value; } else if (previewResult.value) { const rows = previewResult.value.slice(0, previewCount.value); return JSON.stringify(rows, null, 2); @@ -244,7 +247,7 @@ function executeCustomScript(): void { const sandboxRequest: SandboxRequest = { parsedFileData: props.parsedFileData || [], - code: customScript.value + '\n\n;window.parse = parse;' + code: customScript.value + `\n\n;if (typeof parse !== 'undefined') { window.parse = parse; }` }; sandbox.value?.contentWindow?.postMessage(JSON.stringify(sandboxRequest), '*'); @@ -266,6 +269,7 @@ function generateResult(): string | undefined { function reset(): void { customScript.value = sampleScript.value; previewResult.value = undefined; + executionError.value = ''; executingScript.value = false; previewCount.value = 10; } @@ -298,10 +302,12 @@ function onMessage(event: MessageEvent): void { if (data.knownError) { snackbar.value?.showError(data.knownError); previewResult.value = undefined; + executionError.value = tt(data.knownError); } else if (data.error) { logger.error('Failed to execute custom script: ' + data.error); snackbar.value?.showError('Failed to execute custom script'); previewResult.value = undefined; + executionError.value = data.error; } else if (data.result) { const originalResult = JSON.parse(data.result) as Record[]; const finalResult: ImportTransactionRequestItem[] = []; @@ -324,6 +330,7 @@ function onMessage(event: MessageEvent): void { } previewResult.value = finalResult; + executionError.value = ''; } reloadSandbox();