From af17b159410c2c4c075dabc140f4aad61dad8949 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sun, 4 Jun 2023 01:45:35 +0200 Subject: [PATCH] fix: optimize object viewer to handle large data --- .../propertyPicker/ObjectViewer.svelte | 165 +++++++++--------- 1 file changed, 81 insertions(+), 84 deletions(-) diff --git a/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte b/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte index 5e760c91f6..9a89332e34 100644 --- a/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte +++ b/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte @@ -11,24 +11,17 @@ export let level = 0 export let currentPath: string = '' export let pureViewer = false - export let collapsed = level == 3 || Array.isArray(json) + export let collapsed = level % 3 == 0 || Array.isArray(json) export let rawKey = false export let topBrackets = false export let topLevelNode = false export let allowCopy = true const collapsedSymbol = '...' - let keys: string | any[] - let isArray: boolean - let openBracket: string - let closeBracket: string - - $: { - keys = getTypeAsString(json) === 'object' ? Object.keys(json) : [] - isArray = Array.isArray(json) - openBracket = isArray ? '[' : '{' - closeBracket = isArray ? ']' : '}' - } + $: keys = getTypeAsString(json) === 'object' ? Object.keys(json) : [] + $: isArray = Array.isArray(json) + $: openBracket = isArray ? '[' : '{' + $: closeBracket = isArray ? ']' : '}' export function getTypeAsString(arg: any): string { if (arg === null) { @@ -53,82 +46,86 @@ dispatch('select', rawKey ? key : computeKey(key, isArray, currentPath)) } - let keyLimit = 100 + $: keyLimit = isArray ? 1 : 100 {#if keys.length > 0} - - {#if level != 0} - - - - - - {/if} - {#if level == 0 && topBrackets}{/if} - - {#if level == 0 && topBrackets}{/if} - + {#if level == 0 && topBrackets}{/if} + + {#if level == 0 && topBrackets}{/if} + + {/if} +