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();