mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 01:03:58 +00:00
Redis Format Json #582
This commit is contained in:
@@ -9,7 +9,18 @@
|
|||||||
|
|
||||||
<div class="props">
|
<div class="props">
|
||||||
{#each dbKeyFields as column}
|
{#each dbKeyFields as column}
|
||||||
<DbKeyValueDetail {item} {column} {onChangeItem} />
|
<DbKeyValueDetail
|
||||||
|
value={item && item[column.name]}
|
||||||
|
columnTitle={_.startCase(column.name)}
|
||||||
|
onChangeValue={onChangeItem
|
||||||
|
? value => {
|
||||||
|
onChangeItem?.({
|
||||||
|
...item,
|
||||||
|
[column.name]: value,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
: null}
|
||||||
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
|
|
||||||
let display = 'text';
|
let display = 'text';
|
||||||
|
|
||||||
export let column;
|
export let columnTitle;
|
||||||
export let item;
|
export let value;
|
||||||
export let onChangeItem = null;
|
export let onChangeValue = null;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="colnamewrap">
|
<div class="colnamewrap">
|
||||||
<div class="colname">{_.startCase(column.name)}</div>
|
<div class="colname">{columnTitle}</div>
|
||||||
<SelectField
|
<SelectField
|
||||||
isNative
|
isNative
|
||||||
value={display}
|
value={display}
|
||||||
@@ -31,22 +31,17 @@
|
|||||||
<div class="colvalue">
|
<div class="colvalue">
|
||||||
{#if display == 'text'}
|
{#if display == 'text'}
|
||||||
<AceEditor
|
<AceEditor
|
||||||
readOnly={!onChangeItem}
|
readOnly={!onChangeValue}
|
||||||
value={item && item[column.name]}
|
{value}
|
||||||
on:input={e => {
|
on:input={e => {
|
||||||
if (onChangeItem) {
|
onChangeValue?.(e.detail);
|
||||||
onChangeItem({
|
|
||||||
...item,
|
|
||||||
[column.name]: e.detail,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
{#if display == 'json'}
|
{#if display == 'json'}
|
||||||
<div class="outer">
|
<div class="outer">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<JsonTree value={safeJsonParse(item[column.name]) || { error: 'Not valid JSON' }} expanded />
|
<JsonTree value={safeJsonParse(value) || { error: 'Not valid JSON' }} expanded />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
function getKeyText(key) {
|
function getKeyText(key) {
|
||||||
const keySplit = key.split(':');
|
const keySplit = key.split(':');
|
||||||
if (keySplit.length > 1) return keySplit[keySplit.length - 1];
|
if (keySplit.length > 1) return keySplit[keySplit.length - 1];
|
||||||
return key;
|
return key || '(no name)';
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -32,6 +32,8 @@
|
|||||||
import DbKeyAddItemModal from '../modals/DbKeyAddItemModal.svelte';
|
import DbKeyAddItemModal from '../modals/DbKeyAddItemModal.svelte';
|
||||||
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
|
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
|
||||||
import { changeTab } from '../utility/common';
|
import { changeTab } from '../utility/common';
|
||||||
|
import SelectField from '../forms/SelectField.svelte';
|
||||||
|
import DbKeyValueDetail from '../dbkeyvalue/DbKeyValueDetail.svelte';
|
||||||
|
|
||||||
export let tabid;
|
export let tabid;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -157,12 +159,15 @@
|
|||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
</VerticalSplitter>
|
</VerticalSplitter>
|
||||||
{:else}
|
{:else}
|
||||||
<AceEditor
|
<div class="value-holder">
|
||||||
|
<DbKeyValueDetail
|
||||||
|
columnTitle="Value"
|
||||||
value={editedValue || keyInfo.value}
|
value={editedValue || keyInfo.value}
|
||||||
on:input={e => {
|
onChangeValue={value => {
|
||||||
editedValue = e.detail;
|
editedValue = value;
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -199,4 +204,15 @@
|
|||||||
.key-name :global(input) {
|
.key-name :global(input) {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.value-holder {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -135,7 +135,7 @@
|
|||||||
|
|
||||||
<AppObjectCore
|
<AppObjectCore
|
||||||
icon={getIconForRedisType(item.type)}
|
icon={getIconForRedisType(item.type)}
|
||||||
title={item.text}
|
title={item.text || '(no name)'}
|
||||||
expandIcon={item.type == 'dir' ? plusExpandIcon(isExpanded) : 'icon invisible-box'}
|
expandIcon={item.type == 'dir' ? plusExpandIcon(isExpanded) : 'icon invisible-box'}
|
||||||
on:expand={() => {
|
on:expand={() => {
|
||||||
if (item.type == 'dir') {
|
if (item.type == 'dir') {
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
} else {
|
} else {
|
||||||
openNewTab({
|
openNewTab({
|
||||||
tabComponent: 'DbKeyDetailTab',
|
tabComponent: 'DbKeyDetailTab',
|
||||||
title: item.text,
|
title: item.text || '(no name)',
|
||||||
icon: 'img keydb',
|
icon: 'img keydb',
|
||||||
props: {
|
props: {
|
||||||
isDefaultBrowser: true,
|
isDefaultBrowser: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user