Redis Format Json #582

This commit is contained in:
SPRINX0\prochazka
2025-01-21 18:36:25 +01:00
parent 7a2390c025
commit 0c35aefbe2
4 changed files with 45 additions and 23 deletions

View File

@@ -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>

View File

@@ -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}

View File

@@ -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">
value={editedValue || keyInfo.value} <DbKeyValueDetail
on:input={e => { columnTitle="Value"
editedValue = e.detail; value={editedValue || keyInfo.value}
}} onChangeValue={value => {
/> 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>

View File

@@ -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,