Skip to content

Commit 633e5f7

Browse files
Merge pull request #4276 from RedisInsight/fe/bugfix/RI-6592-rename-data-type-bugfix
RI-5547 not show graph key when no graph module
2 parents abcbf16 + ee32903 commit 633e5f7

File tree

7 files changed

+35
-8
lines changed

7 files changed

+35
-8
lines changed

redisinsight/ui/src/pages/browser/components/browser-search-panel/BrowserSearchPanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ const BrowserSearchPanel = (props: Props) => {
224224
{SearchModeSwitch()}
225225
</OnboardingTour>
226226
{searchMode === SearchMode.Pattern ? (
227-
<FilterKeyType />
227+
<FilterKeyType modules={modules} />
228228
) : (
229229
<RediSearchIndexesList onCreateIndex={handleCreateIndexPanel} />
230230
)}

redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.spec.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { loadKeys, setFilter } from 'uiSrc/slices/browser/keys'
1414
import { connectedInstanceOverviewSelector } from 'uiSrc/slices/instances/instances'
1515
import { FeatureFlags, KeyTypes } from 'uiSrc/constants'
1616
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
17+
import { RedisDefaultModules } from 'uiSrc/slices/interfaces'
1718
import FilterKeyType from './FilterKeyType'
1819

1920
let store: typeof mockedStore
@@ -120,9 +121,18 @@ describe('FilterKeyType', () => {
120121
})
121122
})
122123

124+
it('should filter out graph if redis db does not have graph module', () => {
125+
const { queryByText } = render(<FilterKeyType modules={[]} />)
126+
127+
fireEvent.click(screen.getByTestId(filterSelectId))
128+
129+
const graphElement = queryByText('Graph')
130+
expect(graphElement).not.toBeInTheDocument()
131+
})
132+
123133
it('should not filter out items if required feature flags are set to true', () => {
124134
const { queryByText } = render(
125-
<FilterKeyType />
135+
<FilterKeyType modules={[{ name: RedisDefaultModules.Graph, version: 1, semanticVersion: '1.3' }]} />
126136
)
127137

128138
fireEvent.click(screen.getByTestId(filterSelectId))

redisinsight/ui/src/pages/browser/components/filter-key-type/FilterKeyType.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,18 @@ import { FilterNotAvailable } from 'uiSrc/components'
2020
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
2121
import { resetBrowserTree } from 'uiSrc/slices/app/context'
2222
import { appFeatureFlagsFeaturesSelector } from 'uiSrc/slices/app/features'
23+
import { AdditionalRedisModule } from 'uiSrc/slices/interfaces'
2324
import { FILTER_KEY_TYPE_OPTIONS } from './constants'
2425

2526
import styles from './styles.module.scss'
2627

2728
const ALL_KEY_TYPES_VALUE = 'all'
2829

29-
const FilterKeyType = () => {
30+
export interface Props {
31+
modules?: AdditionalRedisModule[]
32+
}
33+
34+
const FilterKeyType = ({ modules }: Props) => {
3035
const [isSelectOpen, setIsSelectOpen] = useState<boolean>(false)
3136
const [typeSelected, setTypeSelected] = useState<string>('all')
3237
const [isVersionSupported, setIsVersionSupported] = useState<boolean>(true)
@@ -53,7 +58,12 @@ const FilterKeyType = () => {
5358
}, [filter])
5459

5560
const options: EuiSuperSelectOption<string>[] = FILTER_KEY_TYPE_OPTIONS
56-
.filter(({ featureFlag }) => !featureFlag || features[featureFlag]?.flag)
61+
.filter(({ featureFlag, skipIfNoModule }) => {
62+
if (skipIfNoModule && !modules?.some(({ name }) => name === skipIfNoModule)) {
63+
return false
64+
}
65+
return !featureFlag || features[featureFlag]?.flag
66+
})
5767
.map(
5868
(item) => {
5969
const { value, color, text } = item

redisinsight/ui/src/pages/browser/components/filter-key-type/constants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
ModulesKeyTypes,
55
FeatureFlags
66
} from 'uiSrc/constants'
7+
import { RedisDefaultModules } from 'uiSrc/slices/interfaces'
78

89
export const FILTER_KEY_TYPE_OPTIONS = [
910
{
@@ -45,10 +46,11 @@ export const FILTER_KEY_TYPE_OPTIONS = [
4546
text: 'Graph',
4647
value: ModulesKeyTypes.Graph,
4748
color: GROUP_TYPES_COLORS[ModulesKeyTypes.Graph],
49+
skipIfNoModule: RedisDefaultModules.Graph,
4850
featureFlag: FeatureFlags.envDependent
4951
},
5052
{
51-
text: 'TS',
53+
text: 'Time Series',
5254
value: ModulesKeyTypes.TimeSeries,
5355
color: GROUP_TYPES_COLORS[ModulesKeyTypes.TimeSeries],
5456
},

redisinsight/ui/src/slices/interfaces/instances.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
GetListElementsResponse,
1010
} from 'apiSrc/modules/browser/list/dto'
1111
import { Database as DatabaseInstanceResponse } from 'apiSrc/modules/database/models/database'
12-
import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module'
1312
import { SearchZSetMembersResponse } from 'apiSrc/modules/browser/z-set/dto'
1413
import { SentinelMaster } from 'apiSrc/modules/redis-sentinel/models/sentinel-master'
1514
import { CreateSentinelDatabaseDto } from 'apiSrc/modules/redis-sentinel/dto/create.sentinel.database.dto'
@@ -55,6 +54,12 @@ export interface Instance extends Partial<DatabaseInstanceResponse> {
5554
isFreeDb?: boolean
5655
}
5756

57+
export interface AdditionalRedisModule {
58+
name: string
59+
version: number
60+
semanticVersion: string
61+
}
62+
5863
interface CaCertificate {
5964
id?: string
6065
name?: string

tests/e2e/helpers/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export enum KeyTypesTexts {
77
ReJSON = 'JSON',
88
Stream = 'Stream',
99
Graph = 'Graph',
10-
TimeSeries = 'TS',
10+
TimeSeries = 'Time Series',
1111
}
1212
export const keyLength = 50;
1313

tests/e2e/tests/web/critical-path/browser/filtering.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ test
105105
await browserPage.selectFilterGroupType(textType);
106106
// Check key type label
107107
await t.expect((await browserPage.filterByKeyTypeDropDown.innerText).toUpperCase).eql(textType.toUpperCase, `The label of type ${textType} is displayed`);
108-
if (['Stream', 'Graph', 'TS'].includes(textType)) {
108+
if (['Stream', 'Graph', 'Time Series'].includes(textType)) {
109109
await t.expect(browserPage.keysNumberOfResults.textContent).eql('0', 'Number of found keys');
110110
}
111111
else {

0 commit comments

Comments
 (0)