mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 20:43:58 +00:00
add column to JSON view
This commit is contained in:
@@ -70,9 +70,14 @@ function getDisplayColumn(basePath, columnName, display) {
|
|||||||
|
|
||||||
export function analyseCollectionDisplayColumns(rows, display) {
|
export function analyseCollectionDisplayColumns(rows, display) {
|
||||||
const res = [];
|
const res = [];
|
||||||
|
const addedColumns = display?.config?.addedColumns;
|
||||||
for (const row of rows || []) {
|
for (const row of rows || []) {
|
||||||
getColumnsForObject([], row, res, display);
|
getColumnsForObject([], row, res, display);
|
||||||
}
|
}
|
||||||
|
for (const added of addedColumns || []) {
|
||||||
|
if (res.find(x => x.uniqueName == added)) continue;
|
||||||
|
res.push(getDisplayColumn([], added, display));
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
res.map(col => ({
|
res.map(col => ({
|
||||||
...col,
|
...col,
|
||||||
|
|||||||
@@ -92,6 +92,10 @@ export abstract class GridDisplay {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addDynamicColumn(name: string) {
|
||||||
|
this.includeInColumnSet('addedColumns', name, true);
|
||||||
|
}
|
||||||
|
|
||||||
focusColumn(uniqueName: string) {
|
focusColumn(uniqueName: string) {
|
||||||
this.setConfig(cfg => ({
|
this.setConfig(cfg => ({
|
||||||
...cfg,
|
...cfg,
|
||||||
|
|||||||
@@ -7,17 +7,34 @@
|
|||||||
|
|
||||||
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
||||||
import SearchInput from '../elements/SearchInput.svelte';
|
import SearchInput from '../elements/SearchInput.svelte';
|
||||||
|
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||||
|
import { showModal } from '../modals/modalTools';
|
||||||
import ColumnManagerRow from './ColumnManagerRow.svelte';
|
import ColumnManagerRow from './ColumnManagerRow.svelte';
|
||||||
|
|
||||||
export let managerSize;
|
export let managerSize;
|
||||||
export let display: GridDisplay;
|
export let display: GridDisplay;
|
||||||
export let isJsonView = false;
|
export let isJsonView = false;
|
||||||
|
export let isDynamicStructure = false;
|
||||||
|
|
||||||
let filter;
|
let filter;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<SearchBoxWrapper>
|
<SearchBoxWrapper>
|
||||||
<SearchInput placeholder="Search columns" bind:value={filter} />
|
<SearchInput placeholder="Search columns" bind:value={filter} />
|
||||||
|
{#if isDynamicStructure && !isJsonView}
|
||||||
|
<InlineButton
|
||||||
|
on:click={() => {
|
||||||
|
showModal(InputTextModal, {
|
||||||
|
value: '',
|
||||||
|
label: 'Column name',
|
||||||
|
header: 'Add new column',
|
||||||
|
onConfirm: name => {
|
||||||
|
display.addDynamicColumn(name);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}}>Add</InlineButton
|
||||||
|
>
|
||||||
|
{/if}
|
||||||
<InlineButton on:click={() => display.hideAllColumns()}>Hide</InlineButton>
|
<InlineButton on:click={() => display.hideAllColumns()}>Hide</InlineButton>
|
||||||
<InlineButton on:click={() => display.showAllColumns()}>Show</InlineButton>
|
<InlineButton on:click={() => display.showAllColumns()}>Show</InlineButton>
|
||||||
</SearchBoxWrapper>
|
</SearchBoxWrapper>
|
||||||
|
|||||||
@@ -153,7 +153,7 @@
|
|||||||
height="45%"
|
height="45%"
|
||||||
show={(!freeTableColumn || isDynamicStructure) && !isFormView}
|
show={(!freeTableColumn || isDynamicStructure) && !isFormView}
|
||||||
>
|
>
|
||||||
<ColumnManager {...$$props} {managerSize} {isJsonView} />
|
<ColumnManager {...$$props} {managerSize} {isJsonView} {isDynamicStructure} />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
|
|||||||
Reference in New Issue
Block a user