diff --git a/packages/web/src/datagrid/DataGridCell.svelte b/packages/web/src/datagrid/DataGridCell.svelte
index 1eb4b5e2f..82552b541 100644
--- a/packages/web/src/datagrid/DataGridCell.svelte
+++ b/packages/web/src/datagrid/DataGridCell.svelte
@@ -40,6 +40,8 @@
import { arrayToHexString } from 'dbgate-tools';
import { showModal } from '../modals/modalTools';
import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte';
+ import { openJsonDocument } from '../tabs/JsonTab.svelte';
+import openNewTab from '../utility/openNewTab';
export let rowIndex;
export let col;
@@ -80,6 +82,8 @@
}
$: style = computeStyle(maxWidth, col);
+
+ $: isJson = _.isPlainObject(value) && !(value?.type == 'Buffer' && _.isArray(value.data)) && !value.$oid;
|
{/if}
+ {#if isJson}
+ openJsonDocument(value)} />
+ {/if}
+
+ {#if _.isArray(value)}
+
+ openNewTab(
+ {
+ title: 'Data #',
+ icon: 'img free-table',
+ tabComponent: 'FreeTableTab',
+ props: {},
+ },
+ {
+ editor: {
+ rows: value,
+ structure: { __isDynamicStructure: true, columns: [] },
+ },
+ }
+ )}
+ />
+ {/if}
+
{#if isAutoFillMarker}
{/if}
diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte
index 8b17149ae..297aa1e32 100644
--- a/packages/web/src/icons/FontIcon.svelte
+++ b/packages/web/src/icons/FontIcon.svelte
@@ -27,6 +27,7 @@
'icon pin': 'mdi mdi-pin',
'icon arrange': 'mdi mdi-arrange-send-to-back',
'icon app': 'mdi mdi-layers-triple',
+ 'icon open-in-new': 'mdi mdi-open-in-new',
'icon columns': 'mdi mdi-view-column',
'icon columns-outline': 'mdi mdi-view-column-outline',