mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 03:16:01 +00:00
SYNC: form cell view - show JSON
This commit is contained in:
committed by
Diflow
parent
088dfcd4dc
commit
4527866276
@@ -7,7 +7,6 @@
|
|||||||
import createRef from '../utility/createRef';
|
import createRef from '../utility/createRef';
|
||||||
import { showModal } from '../modals/modalTools';
|
import { showModal } from '../modals/modalTools';
|
||||||
import EditCellDataModal from '../modals/EditCellDataModal.svelte';
|
import EditCellDataModal from '../modals/EditCellDataModal.svelte';
|
||||||
import ShowFormButton from '../formview/ShowFormButton.svelte';
|
|
||||||
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
||||||
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
||||||
import SearchInput from '../elements/SearchInput.svelte';
|
import SearchInput from '../elements/SearchInput.svelte';
|
||||||
@@ -16,6 +15,8 @@
|
|||||||
import ColumnLabel from '../elements/ColumnLabel.svelte';
|
import ColumnLabel from '../elements/ColumnLabel.svelte';
|
||||||
import CheckboxField from '../forms/CheckboxField.svelte';
|
import CheckboxField from '../forms/CheckboxField.svelte';
|
||||||
import { getLocalStorage, setLocalStorage } from '../utility/storageCache';
|
import { getLocalStorage, setLocalStorage } from '../utility/storageCache';
|
||||||
|
import JSONTree from '../jsontree/JSONTree.svelte';
|
||||||
|
import Link from '../elements/Link.svelte';
|
||||||
|
|
||||||
export let selection;
|
export let selection;
|
||||||
|
|
||||||
@@ -107,10 +108,11 @@
|
|||||||
|
|
||||||
function handleClick(field) {
|
function handleClick(field) {
|
||||||
if (!editable || !grider) return;
|
if (!editable || !grider) return;
|
||||||
if (isJsonValue(field.value) && !field.hasMultipleValues) {
|
if (isJsonValue(field.value)) return;
|
||||||
openEditModal(field);
|
// if (isJsonValue(field.value) && !field.hasMultipleValues) {
|
||||||
return;
|
// openEditModal(field);
|
||||||
}
|
// return;
|
||||||
|
// }
|
||||||
startEditing(field);
|
startEditing(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,11 +173,12 @@
|
|||||||
if (nextIndex < 0 || nextIndex >= filteredFields.length) return;
|
if (nextIndex < 0 || nextIndex >= filteredFields.length) return;
|
||||||
|
|
||||||
tick().then(() => {
|
tick().then(() => {
|
||||||
if (isJsonValue(nextField.value)) {
|
startEditing(nextField);
|
||||||
openEditModal(nextField);
|
// if (isJsonValue(nextField.value)) {
|
||||||
} else {
|
// openEditModal(nextField);
|
||||||
startEditing(nextField);
|
// } else {
|
||||||
}
|
// startEditing(nextField);
|
||||||
|
// }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,6 +236,11 @@
|
|||||||
if (!isJsonLikeLongString(value)) return null;
|
if (!isJsonLikeLongString(value)) return null;
|
||||||
return safeJsonParse(value);
|
return safeJsonParse(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleEdit(field) {
|
||||||
|
editingColumn = null;
|
||||||
|
openEditModal(field);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="outer">
|
<div class="outer">
|
||||||
@@ -247,13 +255,14 @@
|
|||||||
<CloseSearchButton bind:filter />
|
<CloseSearchButton bind:filter />
|
||||||
</SearchBoxWrapper>
|
</SearchBoxWrapper>
|
||||||
<CheckboxField
|
<CheckboxField
|
||||||
|
defaultChecked={notNull}
|
||||||
on:change={e => {
|
on:change={e => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
notNull = e.target.checked;
|
notNull = e.target.checked;
|
||||||
setLocalStorage('dataGridCellDataFormNotNull', notNull ? 'true' : 'false');
|
setLocalStorage('dataGridCellDataFormNotNull', notNull ? 'true' : 'false');
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{_t('tableCell.notNull', { defaultMessage: 'Not null' })}
|
{_t('tableCell.hideNullValues', { defaultMessage: 'Hide NULL values' })}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
@@ -262,7 +271,11 @@
|
|||||||
{:else}
|
{:else}
|
||||||
{#each filteredFields as field (field.uniqueName)}
|
{#each filteredFields as field (field.uniqueName)}
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<div class="field-name"><ColumnLabel {...field} showDataType /></div>
|
<div class="field-name">
|
||||||
|
<ColumnLabel {...field} showDataType /><Link onClick={() => handleEdit(field)}
|
||||||
|
>{_t('tableCell.edit', { defaultMessage: 'Edit' })}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
<div class="field-value" class:editable on:click={() => handleClick(field)}>
|
<div class="field-value" class:editable on:click={() => handleClick(field)}>
|
||||||
{#if editingColumn === field.uniqueName}
|
{#if editingColumn === field.uniqueName}
|
||||||
<div class="editor-wrapper">
|
<div class="editor-wrapper">
|
||||||
@@ -275,20 +288,13 @@
|
|||||||
on:blur={() => handleBlur(field)}
|
on:blur={() => handleBlur(field)}
|
||||||
class="inline-editor"
|
class="inline-editor"
|
||||||
/>
|
/>
|
||||||
{#if editable && !field.hasMultipleValues}
|
|
||||||
<ShowFormButton
|
|
||||||
icon="icon edit"
|
|
||||||
on:click={() => {
|
|
||||||
editingColumn = null;
|
|
||||||
openEditModal(field);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
{:else if field.hasMultipleValues}
|
{:else if field.hasMultipleValues}
|
||||||
<span class="multiple-values"
|
<span class="multiple-values"
|
||||||
>({_t('tableCell.multipleValues', { defaultMessage: 'Multiple values' })})</span
|
>({_t('tableCell.multipleValues', { defaultMessage: 'Multiple values' })})</span
|
||||||
>
|
>
|
||||||
|
{:else if isJsonValue(field.value)}
|
||||||
|
<JSONTree value={getJsonParsedValue(field.value)} />
|
||||||
{:else}
|
{:else}
|
||||||
<CellValue
|
<CellValue
|
||||||
{rowData}
|
{rowData}
|
||||||
@@ -296,9 +302,6 @@
|
|||||||
jsonParsedValue={getJsonParsedValue(field.value)}
|
jsonParsedValue={getJsonParsedValue(field.value)}
|
||||||
{editorTypes}
|
{editorTypes}
|
||||||
/>
|
/>
|
||||||
{#if isJsonValue(field.value)}
|
|
||||||
<ShowFormButton icon="icon open-in-new" on:click={() => openJsonInNewTab(field)} />
|
|
||||||
{/if}
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -357,6 +360,8 @@
|
|||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: var(--theme-font-2);
|
color: var(--theme-font-2);
|
||||||
border-bottom: 1px solid var(--theme-border);
|
border-bottom: 1px solid var(--theme-border);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.field-value {
|
.field-value {
|
||||||
|
|||||||
Reference in New Issue
Block a user