Skip to content

Commit e4cde52

Browse files
committed
* #RI-6341 - Unlimited combobox size
* #RI-6340 - All delimiters between each node item name of folder description tooltip
1 parent e2e6b11 commit e4cde52

File tree

8 files changed

+56
-17
lines changed

8 files changed

+56
-17
lines changed

redisinsight/ui/src/helpers/constructKeysToTree.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,29 +78,29 @@ export const constructKeysToTree = (props: Props): any[] => {
7878
return treeNodes.map((key, index) => {
7979
const name = key?.toString()
8080
const node: any = { nameString: name }
81-
const tillNowKeyName = previousKey + name + delimiter
8281
const path = prevIndex ? `${prevIndex}.${index}` : `${index}`
8382

8483
// populate node with children nodes
8584
if (!tree[key].isLeaf && Object.keys(tree[key]).length > 0) {
8685
node.children = formatTreeData(
8786
tree[key],
88-
tillNowKeyName,
87+
`${previousKey + name}-`,
8988
delimiter,
9089
path,
9190
)
9291
node.keyCount = node.children.reduce((a: any, b:any) => a + (b.keyCount || 1), 0)
9392
node.keyApproximate = (node.keyCount / keys.length) * 100
93+
node.fullName = previousKey + name
9494
} else {
9595
// populate leaf
9696
node.isLeaf = true
9797
node.children = []
9898
node.nameString = name.slice(0, -keysSymbol.length)
9999
node.nameBuffer = tree[key]?.name
100+
node.fullName = previousKey + name + delimiter
100101
}
101102

102103
node.path = path
103-
node.fullName = tillNowKeyName
104104
node.id = getUniqueId()
105105
return node
106106
})

redisinsight/ui/src/helpers/tests/constructKeysToTreeMockResult.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@ export const constructKeysToTreeMockResult = [
1111
isLeaf: true,
1212
children: [],
1313
path: '0.0.0',
14-
fullName: `empty${delimiterMock + delimiterMock}empty::testkeys${delimiterMock}keys${delimiterMock}`,
14+
fullName: `empty--empty::testkeys${delimiterMock}keys${delimiterMock}`,
1515
}
1616
],
1717
keyCount: 1,
1818
keyApproximate: 10,
1919
path: '0.0',
20-
fullName: `empty${delimiterMock + delimiterMock}`,
20+
fullName: 'empty-',
2121
}
2222
],
2323
keyCount: 1,
2424
keyApproximate: 10,
2525
path: '0',
26-
fullName: `empty${delimiterMock}`,
26+
fullName: 'empty',
2727
},
2828
{
2929
nameString: 'keys',
@@ -36,54 +36,54 @@ export const constructKeysToTreeMockResult = [
3636
isLeaf: true,
3737
children: [],
3838
path: '1.0.0',
39-
fullName: `keys${delimiterMock}1${delimiterMock}keys:1:1keys${delimiterMock}keys${delimiterMock}`,
39+
fullName: `keys-1-keys:1:1keys${delimiterMock}keys${delimiterMock}`,
4040
},
4141
{
4242
nameString: 'keys:1:2',
4343
isLeaf: true,
4444
children: [],
4545
path: '1.0.1',
46-
fullName: `keys${delimiterMock}1${delimiterMock}keys:1:2keys${delimiterMock}keys${delimiterMock}`,
46+
fullName: `keys-1-keys:1:2keys${delimiterMock}keys${delimiterMock}`,
4747
}
4848
],
4949
keyCount: 2,
5050
keyApproximate: 20,
5151
path: '1.0',
52-
fullName: `keys${delimiterMock}1${delimiterMock}`,
52+
fullName: 'keys-1',
5353
},
5454
{
5555
nameString: 'keys_2',
5656
isLeaf: true,
5757
children: [],
5858
path: '1.1',
59-
fullName: `keys${delimiterMock}keys_2keys${delimiterMock}keys${delimiterMock}`,
59+
fullName: `keys-keys_2keys${delimiterMock}keys${delimiterMock}`,
6060
},
6161
{
6262
nameString: 'keys:1',
6363
isLeaf: true,
6464
children: [],
6565
path: '1.2',
66-
fullName: `keys${delimiterMock}keys:1keys${delimiterMock}keys${delimiterMock}`,
66+
fullName: `keys-keys:1keys${delimiterMock}keys${delimiterMock}`,
6767
},
6868
{
6969
nameString: 'keys:2',
7070
isLeaf: true,
7171
children: [],
7272
path: '1.3',
73-
fullName: `keys${delimiterMock}keys:2keys${delimiterMock}keys${delimiterMock}`,
73+
fullName: `keys-keys:2keys${delimiterMock}keys${delimiterMock}`,
7474
},
7575
{
7676
nameString: 'keys:3',
7777
isLeaf: true,
7878
children: [],
7979
path: '1.4',
80-
fullName: `keys${delimiterMock}keys:3keys${delimiterMock}keys${delimiterMock}`,
80+
fullName: `keys-keys:3keys${delimiterMock}keys${delimiterMock}`,
8181
}
8282
],
8383
keyCount: 6,
8484
keyApproximate: 60,
8585
path: '1',
86-
fullName: `keys${delimiterMock}`,
86+
fullName: 'keys',
8787
},
8888
{
8989
nameString: 'keys1',

redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ const KeyTree = forwardRef((props: Props, ref) => {
6969
const [items, setItems] = useState<IKeyPropTypes[]>(parseKeyNames(keysState.keys ?? []))
7070

7171
// escape regexp symbols and join and transform to regexp
72-
const delimiterPattern = comboBoxToArray(treeViewDelimiter)
72+
const delimiters = comboBoxToArray(treeViewDelimiter)
73+
const delimiterPattern = delimiters
7374
.map(escapeRegExp)
7475
.join('|')
7576

@@ -194,6 +195,7 @@ const KeyTree = forwardRef((props: Props, ref) => {
194195
<VirtualTree
195196
items={items}
196197
loadingIcon={TreeViewSVG}
198+
delimiters={delimiters}
197199
delimiterPattern={delimiterPattern}
198200
sorting={sorting}
199201
deleting={deleting}

redisinsight/ui/src/pages/browser/components/key-tree/KeyTreeSettings/styles.module.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@
9191
height: 30px !important;
9292
}
9393
:global(.euiComboBox__inputWrap) {
94+
max-height: 200px;
95+
overflow: auto;
9496
max-width: 210px !important;
9597
padding: 2px 4px !important;
9698
min-height: 34px !important;

redisinsight/ui/src/pages/browser/components/virtual-tree/VirtualTree.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import styles from './styles.module.scss'
2828
export interface Props {
2929
items: IKeyPropTypes[]
3030
delimiterPattern: string
31+
delimiters: string[]
3132
loadingIcon?: string
3233
loading: boolean
3334
deleting: boolean
@@ -53,6 +54,7 @@ const VirtualTree = (props: Props) => {
5354
const {
5455
items,
5556
delimiterPattern,
57+
delimiters,
5658
loadingIcon = 'empty',
5759
statusOpen = {},
5860
statusSelected,
@@ -191,6 +193,7 @@ const VirtualTree = (props: Props) => {
191193
type: node.type,
192194
fullName: node.fullName,
193195
shortName: node.nameString?.split(new RegExp(delimiterPattern, 'g')).pop(),
196+
delimiters,
194197
nestingLevel,
195198
deleting,
196199
path: node.path,

redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/Node.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ const Node = ({
4747
nameString,
4848
keyApproximate,
4949
isSelected,
50+
delimiters = [],
5051
getMetadata,
5152
onDelete,
5253
onDeleteClicked,
@@ -163,8 +164,14 @@ const Node = ({
163164

164165
const tooltipContent = (
165166
<>
166-
<b>{`${fullName}*`}</b>
167-
<br />
167+
<div className={styles.folderTooltipHeader}>
168+
<span className={styles.folderPattern}>{`${fullName}-*`}</span>
169+
<span className={styles.delimiters}>
170+
{delimiters.map((delimiter) => (
171+
<span className={styles.delimiter}>{delimiter}</span>
172+
))}
173+
</span>
174+
</div>
168175
<span>{`${keyCount} key(s) (${Math.round(keyApproximate * 100) / 100}%)`}</span>
169176
</>
170177
)

redisinsight/ui/src/pages/browser/components/virtual-tree/components/Node/styles.module.scss

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,27 @@
140140
.deletePopover {
141141
max-width: 400px !important;
142142
}
143+
144+
.folderTooltipHeader {
145+
display: flex;
146+
flex-wrap: wrap;
147+
align-items: center;
148+
white-space: nowrap;
149+
}
150+
151+
.delimiters {
152+
display: inline-flex;
153+
flex-wrap: wrap;
154+
}
155+
156+
.folderPattern {
157+
margin-right: 4px;
158+
}
159+
160+
.delimiter {
161+
margin-bottom: 2px;
162+
padding: 2px 5px;
163+
margin-right: 4px;
164+
border-radius: 2px;
165+
background-color: var(--euiColorLightestShade);
166+
}

redisinsight/ui/src/pages/browser/components/virtual-tree/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export interface TreeData extends FixedSizeNodeData {
5050
nestingLevel: number
5151
deleting: boolean
5252
isSelected: boolean
53+
delimiters: string[]
5354
children?: TreeData[]
5455
updateStatusOpen: (fullName: string, value: boolean) => void
5556
updateStatusSelected: (key: RedisString) => void

0 commit comments

Comments
 (0)