From a2b566fc7fbe50e95590915940bfaa9ea8bdfcf4 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sat, 27 Jan 2024 13:50:50 +0100 Subject: [PATCH] improve displayresult perf --- .../src/lib/components/DisplayResult.svelte | 102 +++++++++--------- .../flows/content/FlowRetries.svelte | 1 - 2 files changed, 51 insertions(+), 52 deletions(-) diff --git a/frontend/src/lib/components/DisplayResult.svelte b/frontend/src/lib/components/DisplayResult.svelte index 6e36506431..7c1d110773 100644 --- a/frontend/src/lib/components/DisplayResult.svelte +++ b/frontend/src/lib/components/DisplayResult.svelte @@ -86,9 +86,10 @@ } if (result !== undefined) { - is_render_all = isRenderAll(result) try { - let keys = Object.keys(result) + let keys = typeof result == 'object' ? Object.keys(result) : [] + is_render_all = + keys.length == 1 && keys.includes('render_all') && Array.isArray(result['render_all']) // Check if the result is an image if (['png', 'svg', 'jpeg'].includes(keys[0]) && keys.length == 1) { @@ -106,55 +107,63 @@ return 'json' } - if ((keys.length == 1 && keys[0] == 'table-row') || isRectangularArray(result)) { - return 'table-row' - } else if ((keys.length == 1 && keys[0] == 'table-col') || isObjectOfArray(result, keys)) { - return 'table-col' - } else if (keys.length == 1 && keys[0] == 'html') { - return 'html' - } else if (keys.length == 1 && keys[0] == 'file') { - return 'file' - } else if ( - keys.includes('windmill_content_type') && - result['windmill_content_type'].startsWith('text/') - ) { - return 'plain' - } else if (keys.length == 1 && keys[0] == 'error') { - return 'error' - } else if (keys.length === 2 && keys.includes('file') && keys.includes('filename')) { - return 'file' - } else if ( - keys.length === 3 && - keys.includes('file') && - keys.includes('filename') && - keys.includes('autodownload') - ) { - if (result.autodownload) { - const a = document.createElement('a') + if (keys.length != 0) { + if ((keys.length == 1 && keys[0] == 'table-row') || isRectangularArray(result)) { + return 'table-row' + } else if ( + (keys.length == 1 && keys[0] == 'table-col') || + isObjectOfArray(result, keys) + ) { + return 'table-col' + } else if (keys.length == 1 && keys[0] == 'html') { + return 'html' + } else if (keys.length == 1 && keys[0] == 'file') { + return 'file' + } else if ( + keys.includes('windmill_content_type') && + result['windmill_content_type'].startsWith('text/') + ) { + return 'plain' + } else if (keys.length == 1 && keys[0] == 'error') { + return 'error' + } else if (keys.length === 2 && keys.includes('file') && keys.includes('filename')) { + return 'file' + } else if ( + keys.length === 3 && + keys.includes('file') && + keys.includes('filename') && + keys.includes('autodownload') + ) { + if (result.autodownload) { + const a = document.createElement('a') - a.href = 'data:application/octet-stream;base64,' + result.file - a.download = result.filename - a.click() - console.log('autodownload', result.file, result.filename) + a.href = 'data:application/octet-stream;base64,' + result.file + a.download = result.filename + a.click() + console.log('autodownload', result.file, result.filename) + } + return 'file' + } else if ( + keys.includes('resume') && + keys.includes('cancel') && + keys.includes('approvalPage') + ) { + return 'approval' + } else if (keys.length === 1 && keys.includes('s3')) { + return 's3object' + } else if (keys.length === 1 && (keys.includes('md') || keys.includes('markdown'))) { + return 'markdown' } - return 'file' - } else if ( - keys.includes('resume') && - keys.includes('cancel') && - keys.includes('approvalPage') - ) { - return 'approval' - } else if (keys.length === 1 && keys.includes('s3')) { - return 's3object' } else if ( Array.isArray(result) && result.every((elt) => inferResultKind(elt) === 's3object') ) { return 's3object-list' - } else if (keys.length === 1 && (keys.includes('md') || keys.includes('markdown'))) { - return 'markdown' } } catch (err) {} + } else { + largeObject = false + is_render_all = false } return 'json' } @@ -210,15 +219,6 @@ return result } - function isRenderAll(result: any) { - return ( - result != undefined && - Object.keys(result).length === 1 && - 'render_all' in result && - Array.isArray(result['render_all']) - ) - } - let globalForceJson: boolean = false diff --git a/frontend/src/lib/components/flows/content/FlowRetries.svelte b/frontend/src/lib/components/flows/content/FlowRetries.svelte index b810cf37c6..2cb3e7904f 100644 --- a/frontend/src/lib/components/flows/content/FlowRetries.svelte +++ b/frontend/src/lib/components/flows/content/FlowRetries.svelte @@ -5,7 +5,6 @@ import ToggleButton from '$lib/components/common/toggleButton-v2/ToggleButton.svelte' import { enterpriseLicense } from '$lib/stores' import { AlertTriangle } from 'lucide-svelte' - import Tooltip from '$lib/components/Tooltip.svelte' export let flowModuleRetry: Retry | undefined export let disabled: boolean = false