Skip to content

Commit 02f99a0

Browse files
authored
Merge pull request #666 from RedisInsight/feature/bugfix
#RI-2920 - add units converter for configure popup
2 parents 2c0be4e + 7526e9a commit 02f99a0

File tree

8 files changed

+540
-25
lines changed

8 files changed

+540
-25
lines changed

redisinsight/ui/src/pages/slowLog/SlowLogPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ const SlowLogPage = () => {
159159
)}
160160
</AutoSizer>
161161
{isEmptySlowLog
162-
? <EmptySlowLog />
162+
? <EmptySlowLog slowlogLogSlowerThan={slowlogLogSlowerThan} durationUnit={durationUnit} />
163163
: <SlowLogTable items={data} loading={loading} durationUnit={durationUnit} />}
164164
</div>
165165
</>
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import React from 'react'
2+
import { DurationUnits } from 'uiSrc/constants'
23
import { render } from 'uiSrc/utils/test-utils'
34

45
import EmptySlowLog from './EmptySlowLog'
56

67
describe('EmptySlowLog', () => {
78
it('should render', () => {
8-
expect(render(<EmptySlowLog />)).toBeTruthy()
9+
expect(render(
10+
<EmptySlowLog durationUnit={DurationUnits.milliSeconds} slowlogLogSlowerThan={100} />
11+
)).toBeTruthy()
912
})
1013
})
Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,33 @@
11
import { EuiText, EuiTitle } from '@elastic/eui'
22
import React from 'react'
3+
import { DurationUnits } from 'uiSrc/constants'
4+
import { convertNumberByUnits } from 'uiSrc/pages/slowLog/utils'
5+
import { numberWithSpaces } from 'uiSrc/utils/numbers'
36

47
import styles from '../styles.module.scss'
58

6-
const EmptySlowLog = () => (
7-
<div className={styles.noSlowLogWrapper} data-testid="empty-slow-log">
8-
<div className={styles.noSlowLogText}>
9-
<EuiTitle className={styles.noFoundTitle}>
10-
<h4>No Slow Logs found</h4>
11-
</EuiTitle>
12-
<EuiText color="subdued">
13-
Either no commands exceeding 10000 µs were found or Slow Log is disabled on the server.
14-
</EuiText>
9+
export interface Props {
10+
durationUnit: DurationUnits
11+
slowlogLogSlowerThan: number
12+
}
13+
14+
const EmptySlowLog = (props: Props) => {
15+
const { durationUnit, slowlogLogSlowerThan } = props
16+
17+
return (
18+
<div className={styles.noSlowLogWrapper} data-testid="empty-slow-log">
19+
<div className={styles.noSlowLogText}>
20+
<EuiTitle className={styles.noFoundTitle}>
21+
<h4>No Slow Logs found</h4>
22+
</EuiTitle>
23+
<EuiText color="subdued">
24+
Either no commands exceeding&nbsp;
25+
{numberWithSpaces(convertNumberByUnits(slowlogLogSlowerThan, durationUnit))} {durationUnit}
26+
&nbsp;were found or Slow Log is disabled on the server.
27+
</EuiText>
28+
</div>
1529
</div>
16-
</div>
17-
)
30+
)
31+
}
1832

1933
export default EmptySlowLog

redisinsight/ui/src/pages/slowLog/components/SlowLogConfig/SlowLogConfig.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
EuiSuperSelect,
99
EuiText,
1010
} from '@elastic/eui'
11+
import { toNumber } from 'lodash'
1112
import React, { ChangeEvent, useState } from 'react'
1213
import { useDispatch, useSelector } from 'react-redux'
1314
import { useHistory, useParams } from 'react-router-dom'
@@ -28,6 +29,7 @@ import { patchSlowLogConfigAction, slowLogConfigSelector, slowLogSelector } from
2829
import { errorValidateNegativeInteger, validateNumber } from 'uiSrc/utils'
2930
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
3031
import { openCli } from 'uiSrc/slices/cli/cli-settings'
32+
import { numberWithSpaces } from 'uiSrc/utils/numbers'
3133
import { convertNumberByUnits } from '../../utils'
3234
import styles from './styles.module.scss'
3335

@@ -152,6 +154,19 @@ const SlowLogConfig = ({ closePopover, onRefresh }: Props) => {
152154
</>
153155
)
154156

157+
const unitConverter = () => {
158+
if (durationUnit === DurationUnits.microSeconds) {
159+
const value = numberWithSpaces(convertNumberByUnits(toNumber(slowerThan), DurationUnits.milliSeconds))
160+
return `${value} ${DurationUnits.milliSeconds}`
161+
}
162+
163+
if (durationUnit === DurationUnits.milliSeconds) {
164+
const value = numberWithSpaces(toNumber(slowerThan) * 1000)
165+
return `${value} ${DurationUnits.microSeconds}`
166+
}
167+
return null
168+
}
169+
155170
return (
156171
<div className={cx(styles.container, { [styles.containerCluster]: connectionType === ConnectionType.Cluster })}>
157172
{connectionType === ConnectionType.Cluster && (clusterContent())}
@@ -183,7 +198,7 @@ const SlowLogConfig = ({ closePopover, onRefresh }: Props) => {
183198
data-test-subj="select-default-unit"
184199
/>
185200
<div className={styles.helpText}>
186-
<div>10 ms</div>
201+
<div data-testid="unit-converter">{unitConverter()}</div>
187202
<div>
188203
Execution time to exceed in order to log the command.
189204
<br />

redisinsight/ui/src/pages/slowLog/components/SlowLogTable/SlowLogTable.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
77
import { DurationUnits, SortOrder, TableCellAlignment, TableCellTextAlignment } from 'uiSrc/constants'
88
import { convertNumberByUnits } from 'uiSrc/pages/slowLog/utils'
99
import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry'
10-
import { Nullable } from 'uiSrc/utils'
1110
import { numberWithSpaces } from 'uiSrc/utils/numbers'
1211

1312
import styles from '../styles.module.scss'
@@ -17,7 +16,7 @@ export const DATE_FORMAT = 'HH:mm:ss d LLL yyyy'
1716
export interface Props {
1817
items: any
1918
loading: boolean
20-
durationUnit: Nullable<DurationUnits>
19+
durationUnit: DurationUnits
2120
}
2221

2322
const sortByTimeStamp = (items = [], order: SortOrder) =>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ export interface StateSlowLog {
88
data: SlowLog[]
99
lastRefreshTime: Nullable<number>,
1010
config: Nullable<SlowLogConfig>,
11-
durationUnit: Nullable<DurationUnits>
11+
durationUnit: DurationUnits
1212
}

redisinsight/ui/src/slices/slowlog/slowlog.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ const slowLogSlice = createSlice({
2727
getSlowLogs: (state) => {
2828
state.loading = true
2929
},
30-
getSlowLogsSuccess: (state, { payload: [data, durationUnit] }:
31-
PayloadAction<[SlowLog[], Nullable<DurationUnits> ]>) => {
30+
getSlowLogsSuccess: (
31+
state,
32+
{ payload: [data, durationUnit] }: PayloadAction<[SlowLog[], DurationUnits]>
33+
) => {
3234
state.loading = false
3335
state.data = data
3436
state.durationUnit = durationUnit
@@ -52,8 +54,10 @@ const slowLogSlice = createSlice({
5254
getSlowLogConfig: (state) => {
5355
state.loading = true
5456
},
55-
getSlowLogConfigSuccess: (state, { payload: [data, durationUnit] }:
56-
PayloadAction<[SlowLogConfig, Nullable<DurationUnits> ]>) => {
57+
getSlowLogConfigSuccess: (
58+
state,
59+
{ payload: [data, durationUnit] }: PayloadAction<[SlowLogConfig, Nullable<DurationUnits> ]>
60+
) => {
5761
state.loading = false
5862
state.config = data
5963

@@ -203,10 +207,6 @@ export function patchSlowLogConfigAction(
203207
) {
204208
return async (dispatch: AppDispatch) => {
205209
try {
206-
console.log('instanceId', instanceId)
207-
console.log('config', config)
208-
console.log('durationUnit', durationUnit)
209-
210210
dispatch(getSlowLogConfig())
211211

212212
const { data, status } = await apiService.patch<SlowLogConfig>(

0 commit comments

Comments
 (0)