Skip to content

Commit 049b01c

Browse files
committed
Adding reload button at viewer label
1 parent c52f8a9 commit 049b01c

File tree

2 files changed

+64
-28
lines changed

2 files changed

+64
-28
lines changed

client/src/views/Views.js

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const { Content, Sider } = Layout
1212
function Views () {
1313
const [current, setCurrent] = useState('visualization')
1414
const [viewers, setViewers] = useState([])
15+
const [isLoading, setIsLoading] = useState(false)
1516
console.log(viewers)
1617

1718
const onClick = (e) => {
@@ -44,11 +45,13 @@ function Views () {
4445
currentLabel,
4546
scales
4647
) => {
48+
setIsLoading(true)
4749
try {
4850
const viewerId = currentImage.uid + currentLabel.uid + JSON.stringify(scales)
4951
let updatedViewers = viewers
5052
const exists = viewers.find(
51-
(viewer) => viewer.key === currentImage.uid + currentLabel.uid
53+
// (viewer) => viewer.key === currentImage.uid + currentLabel.uid
54+
(viewer) => viewer.key === viewerId
5255
)
5356
// console.log(exists, viewers)
5457
if (exists) {
@@ -60,7 +63,7 @@ function Views () {
6063
scales
6164
)
6265
const newUrl = res.replace(/\/\/[^:/]+/, '//localhost')
63-
// console.log('Viewer at ', newUrl)
66+
console.log('Current Viewer at ', newUrl)
6467

6568
setViewers([
6669
...updatedViewers,
@@ -70,8 +73,10 @@ function Views () {
7073
viewer: newUrl
7174
}
7275
])
76+
setIsLoading(false)
7377
} catch (e) {
7478
console.log(e)
79+
setIsLoading(false)
7580
}
7681
}
7782

@@ -82,30 +87,36 @@ function Views () {
8287
minWidth: '90vw'
8388
}}
8489
>
85-
<Sider
86-
// collapsible
87-
collapsed={collapsed}
88-
onCollapse={(value) => setCollapsed(value)}
89-
theme='light'
90-
collapsedWidth='0'
91-
>
92-
<DataLoader fetchNeuroglancerViewer={fetchNeuroglancerViewer} />
93-
</Sider>
94-
<Layout className='site-layout'>
95-
<Content
96-
style={{
97-
margin: '0 16px'
98-
}}
99-
>
100-
<Menu
101-
onClick={onClick}
102-
selectedKeys={[current]}
103-
mode='horizontal'
104-
items={items}
105-
/>
106-
{renderMenu()}
107-
</Content>
108-
</Layout>
90+
{isLoading ? (
91+
<div>Loading the viewer ...</div>
92+
) : (
93+
<React.Fragment>
94+
<Sider
95+
// collapsible
96+
collapsed={collapsed}
97+
onCollapse={(value) => setCollapsed(value)}
98+
theme='light'
99+
collapsedWidth='0'
100+
>
101+
<DataLoader fetchNeuroglancerViewer={fetchNeuroglancerViewer} />
102+
</Sider>
103+
<Layout className='site-layout'>
104+
<Content
105+
style={{
106+
margin: '0 16px'
107+
}}
108+
>
109+
<Menu
110+
onClick={onClick}
111+
selectedKeys={[current]}
112+
mode='horizontal'
113+
items={items}
114+
/>
115+
{renderMenu()}
116+
</Content>
117+
</Layout>
118+
</React.Fragment>
119+
) }
109120
</Layout>
110121
)
111122
}

client/src/views/Visualization.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
ArrowRightOutlined,
55
DownOutlined,
66
EyeOutlined,
7-
InboxOutlined
7+
InboxOutlined,
8+
ReloadOutlined
89
} from '@ant-design/icons'
910

1011
function Visualization (props) {
@@ -42,6 +43,20 @@ function Visualization (props) {
4243
setActiveKey(newActiveKey)
4344
}
4445

46+
const refreshViewer = (key) => {
47+
// This function refreshes the viewer specified by the key
48+
const updatedViewers = viewers.map((viewer) => {
49+
if (viewer.key === key) {
50+
// Refresh the viewer URL by adding a refresh request token to it
51+
// The refresh request token is only for node.js to force refresh the element
52+
// The appended token will be ignored when rendering
53+
return {...viewer, viewer: viewer.viewer + '?refresh=' + new Date().getTime() }
54+
}
55+
return viewer
56+
})
57+
setViewers(updatedViewers)
58+
}
59+
4560
return (
4661
<div style={{ marginTop: '20px' }}>
4762
{viewers.length > 0
@@ -54,7 +69,17 @@ function Visualization (props) {
5469
activeKey={activeKey}
5570
onChange={handleChange}
5671
items={viewers.map((viewer) => ({
57-
label: viewer.title,
72+
label: (
73+
<span>
74+
{viewer.title}
75+
<Button
76+
type='link'
77+
icon={<ReloadOutlined />}
78+
onClick={() => refreshViewer(viewer.key)}
79+
/>
80+
81+
</span>
82+
),
5883
key: viewer.key,
5984
children: (
6085
<iframe

0 commit comments

Comments
 (0)