Skip to content

Commit 8981260

Browse files
committed
Address quality issues
1 parent 22d9e97 commit 8981260

File tree

5 files changed

+101
-68
lines changed

5 files changed

+101
-68
lines changed

src/components/AnnotationCategoryItem.tsx

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { SettingOutlined } from '@ant-design/icons'
22
import { Button, Checkbox, Menu, Popover, Space, Tooltip } from 'antd'
33
import type { CheckboxChangeEvent } from 'antd/es/checkbox'
4+
import { useCallback } from 'react'
45
import type { Category, Type } from './AnnotationCategoryList'
56
import ColorSettingsMenu from './ColorSettingsMenu'
67
import type { StyleOptions } from './SlideViewer/types'
@@ -33,6 +34,10 @@ function AnnotationTypeRow({
3334
const isChecked = uids.every((uid: string) => checkedAnnotationUids.has(uid))
3435
const indeterminateType =
3536
!isChecked && uids.some((uid: string) => checkedAnnotationUids.has(uid))
37+
const handleChange = useCallback(
38+
(e: CheckboxChangeEvent) => onCheckboxChange(type, e),
39+
[type, onCheckboxChange],
40+
)
3641
return (
3742
<div
3843
style={{
@@ -45,7 +50,7 @@ function AnnotationTypeRow({
4550
<Checkbox
4651
indeterminate={indeterminateType}
4752
checked={isChecked}
48-
onChange={onCheckboxChange.bind(null, type)}
53+
onChange={handleChange}
4954
/>
5055
<div style={{ paddingLeft: '5px' }}>
5156
<Tooltip
@@ -139,54 +144,55 @@ const AnnotationCategoryItem = ({
139144
/>
140145
)
141146

142-
const handleCheckboxChangeType = (
143-
type: Type,
144-
e: CheckboxChangeEvent,
145-
): void => {
147+
function handleCheckboxChangeType(type: Type, e: CheckboxChangeEvent): void {
146148
handleChangeCheckedType({ type, isVisible: e.target.checked })
147149
}
148150

151+
const categoryHeader = (
152+
<Checkbox
153+
indeterminate={indeterminate}
154+
checked={checkAll}
155+
onChange={onCheckCategoryChange}
156+
>
157+
<Tooltip
158+
title={`${category.CodeValue}:${category.CodingSchemeDesignator}`}
159+
mouseEnterDelay={1}
160+
>
161+
{category.CodeMeaning}
162+
</Tooltip>
163+
<Popover
164+
placement="topLeft"
165+
overlayStyle={{ width: '350px' }}
166+
title="Display Settings"
167+
content={categoryColorSettingsContent}
168+
>
169+
<Button
170+
type="primary"
171+
shape="circle"
172+
style={{ marginLeft: '10px' }}
173+
icon={<SettingOutlined />}
174+
/>
175+
</Popover>
176+
</Checkbox>
177+
)
178+
149179
return (
150180
<Menu.Item style={{ height: '100%', paddingLeft: '3px' }} {...props}>
151181
<Space align="start">
152182
<div style={{ paddingLeft: '14px', color: 'black' }}>
153183
<Space direction="vertical" align="end">
154-
<Checkbox
155-
indeterminate={indeterminate}
156-
checked={checkAll}
157-
onChange={onCheckCategoryChange}
158-
>
159-
<Tooltip
160-
title={`${category.CodeValue}:${category.CodingSchemeDesignator}`}
161-
mouseEnterDelay={1}
162-
>
163-
{category.CodeMeaning}
164-
</Tooltip>
165-
<Popover
166-
placement="topLeft"
167-
overlayStyle={{ width: '350px' }}
168-
title="Display Settings"
169-
content={categoryColorSettingsContent}
170-
>
171-
<Button
172-
type="primary"
173-
shape="circle"
174-
style={{ marginLeft: '10px' }}
175-
icon={<SettingOutlined />}
176-
/>
177-
</Popover>
178-
</Checkbox>
184+
{categoryHeader}
185+
{types.map((type: Type) => (
186+
<AnnotationTypeRow
187+
key={`${type.CodingSchemeDesignator}:${type.CodeMeaning}`}
188+
type={type}
189+
checkedAnnotationUids={checkedAnnotationUids}
190+
onCheckboxChange={handleCheckboxChangeType}
191+
onStyleChange={onStyleChange}
192+
defaultAnnotationStyles={defaultAnnotationStyles}
193+
/>
194+
))}
179195
</Space>
180-
{types.map((type: Type) => (
181-
<AnnotationTypeRow
182-
key={`${type.CodingSchemeDesignator}:${type.CodeMeaning}`}
183-
type={type}
184-
checkedAnnotationUids={checkedAnnotationUids}
185-
onCheckboxChange={handleCheckboxChangeType}
186-
onStyleChange={onStyleChange}
187-
defaultAnnotationStyles={defaultAnnotationStyles}
188-
/>
189-
))}
190196
</div>
191197
</Space>
192198
</Menu.Item>

src/components/Header.tsx

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,10 @@ class Header extends React.Component<HeaderProps, HeaderState> {
208208
}
209209
}
210210

211+
handleUserMenuButtonClick = (e: React.SyntheticEvent): void => {
212+
e.preventDefault()
213+
}
214+
211215
handleInfoButtonClick = (): void => {
212216
const browser = detect()
213217
const environment: {
@@ -222,13 +226,22 @@ class Header extends React.Component<HeaderProps, HeaderState> {
222226
browser: {},
223227
os: {},
224228
}
225-
if (browser != null) {
229+
if (browser !== null && browser !== undefined) {
226230
environment.browser = {
227-
name: browser.name != null ? browser.name : undefined,
228-
version: browser.version != null ? browser.version : undefined,
231+
name:
232+
browser.name !== null && browser.name !== undefined
233+
? browser.name
234+
: undefined,
235+
version:
236+
browser.version !== null && browser.version !== undefined
237+
? browser.version
238+
: undefined,
229239
}
230240
environment.os = {
231-
name: browser.os != null ? browser.os : undefined,
241+
name:
242+
browser.os !== null && browser.os !== undefined
243+
? browser.os
244+
: undefined,
232245
}
233246
}
234247

@@ -332,7 +345,9 @@ class Header extends React.Component<HeaderProps, HeaderState> {
332345
</div>
333346
</div>
334347
),
335-
onOk(): void {},
348+
onOk: () => {
349+
Modal.destroyAll?.()
350+
},
336351
})
337352
}
338353

@@ -357,7 +372,9 @@ class Header extends React.Component<HeaderProps, HeaderState> {
357372
seriesInstanceUID={seriesInstanceUID}
358373
/>
359374
),
360-
onOk(): void {},
375+
onOk: () => {
376+
Modal.destroyAll?.()
377+
},
361378
})
362379
}
363380

@@ -458,7 +475,9 @@ class Header extends React.Component<HeaderProps, HeaderState> {
458475
</Panel>
459476
</Collapse>
460477
),
461-
onOk(): void {},
478+
onOk: () => {
479+
Modal.destroyAll?.()
480+
},
462481
})
463482
}
464483

@@ -515,7 +534,7 @@ class Header extends React.Component<HeaderProps, HeaderState> {
515534

516535
const url = this.state.selectedServerUrl?.trim()
517536
let closeModal = false
518-
if (url != null && url !== '') {
537+
if (url !== null && url !== undefined && url !== '') {
519538
if (url.startsWith('http://') || url.startsWith('https://')) {
520539
this.props.onServerSelection({ url })
521540
closeModal = true
@@ -547,7 +566,7 @@ class Header extends React.Component<HeaderProps, HeaderState> {
547566
<Dropdown menu={userMenu} trigger={['click']}>
548567
<Button
549568
icon={UserOutlined}
550-
onClick={(e) => e.preventDefault()}
569+
onClick={this.handleUserMenuButtonClick}
551570
label={`${this.props.user.name} (${this.props.user.email})`}
552571
/>
553572
</Dropdown>
@@ -618,7 +637,9 @@ class Header extends React.Component<HeaderProps, HeaderState> {
618637
this.props.defaultClients?.default?.baseURL)
619638

620639
const urlInfo =
621-
selectedServerUrl != null && selectedServerUrl !== '' ? (
640+
selectedServerUrl !== null &&
641+
selectedServerUrl !== undefined &&
642+
selectedServerUrl !== '' ? (
622643
<Tooltip title={selectedServerUrl}>
623644
<div
624645
style={{

src/components/HoveredRoiTooltip.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,18 @@ const HoveredRoiTooltip = ({
109109
>
110110
<div style={{ fontWeight: 'bold' }}>
111111
ROI {roi.index}
112-
{annotationGroupLabelAttr != null && (
113-
<span
114-
style={{
115-
fontWeight: 500,
116-
marginLeft: '6px',
117-
color: 'rgba(0, 0, 0, 0.7)',
118-
}}
119-
>
120-
- {annotationGroupLabelAttr.value}
121-
</span>
122-
)}
112+
{annotationGroupLabelAttr !== null &&
113+
annotationGroupLabelAttr !== undefined && (
114+
<span
115+
style={{
116+
fontWeight: 500,
117+
marginLeft: '6px',
118+
color: 'rgba(0, 0, 0, 0.7)',
119+
}}
120+
>
121+
- {annotationGroupLabelAttr.value}
122+
</span>
123+
)}
123124
</div>
124125
{otherAttributes.length > 0 && (
125126
<div

src/components/MemoryFooter.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ class MemoryFooter extends React.Component<
2424
> {
2525
private unsubscribeMemory?: () => void
2626
private lastWarningLevel: 'none' | 'high' | 'critical' = 'none'
27-
private lastCriticalWarningTime: number = 0
27+
private lastCriticalWarningTime = 0
2828
private readonly criticalWarningThrottleMs: number = 30000
29-
private didStartMonitoring: boolean = false
29+
private didStartMonitoring = false
3030

3131
constructor(props: MemoryFooterProps) {
3232
super(props)
@@ -77,7 +77,10 @@ class MemoryFooter extends React.Component<
7777
}
7878

7979
componentWillUnmount(): void {
80-
if (this.unsubscribeMemory != null) {
80+
if (
81+
this.unsubscribeMemory !== null &&
82+
this.unsubscribeMemory !== undefined
83+
) {
8184
this.unsubscribeMemory()
8285
}
8386
if (this.didStartMonitoring) {

src/components/SlideViewer.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,7 @@ class SlideViewer extends React.Component<SlideViewerProps, SlideViewerState> {
13221322
this.setDefaultPresentationState()
13231323
this.loadPresentationStates()
13241324

1325-
void Promise.allSettled([
1325+
Promise.allSettled([
13261326
this.addAnnotations(),
13271327
this.addAnnotationGroups(),
13281328
this.addSegmentations(),
@@ -1731,7 +1731,7 @@ class SlideViewer extends React.Component<SlideViewerProps, SlideViewerState> {
17311731
({ roi, annotationGroupUID }) =>
17321732
`${roi.uid}:${annotationGroupUID ?? ''}`,
17331733
)
1734-
.sort()
1734+
.sort((a, b) => a.localeCompare(b))
17351735
.join('|')
17361736

17371737
if (
@@ -1831,7 +1831,8 @@ class SlideViewer extends React.Component<SlideViewerProps, SlideViewerState> {
18311831
const payload = event.detail?.payload
18321832
const roiPayload = payload as dmv.roi.ROI | { uid?: string } | undefined
18331833
const isRoiObject =
1834-
roiPayload != null &&
1834+
roiPayload !== null &&
1835+
roiPayload !== undefined &&
18351836
typeof roiPayload === 'object' &&
18361837
'uid' in roiPayload &&
18371838
'scoord3d' in roiPayload
@@ -3873,7 +3874,8 @@ class SlideViewer extends React.Component<SlideViewerProps, SlideViewerState> {
38733874
this.volumeViewer.setSegmentStyle(segment.uid, {
38743875
opacity: defaultSegmentStyles[segment.uid].opacity,
38753876
paletteColorLookupTable:
3876-
defaultSegmentStyles[segment.uid].color != null
3877+
defaultSegmentStyles[segment.uid].color !== null &&
3878+
defaultSegmentStyles[segment.uid].color !== undefined
38773879
? SlideViewer.createSegmentPaletteColorLookupTable(
38783880
defaultSegmentStyles[segment.uid].color as number[],
38793881
)

0 commit comments

Comments
 (0)