Skip to content

Commit 8b176ab

Browse files
yaojp123yaojiping
and
yaojiping
authored
fix: add loading to monitor statistic (#11)
Co-authored-by: yaojiping <[email protected]>
1 parent e5dbe31 commit 8b176ab

File tree

15 files changed

+89
-82
lines changed

15 files changed

+89
-82
lines changed

web/src/common/src/DatePicker/index.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ const DatePicker = (props) => {
202202
const [reloadLoading, setReloadLoading] = useState(false)
203203
const onRefreshClick = () => {
204204
setReloadLoading(true)
205-
onRefresh && onRefresh({ start, end });
205+
onRefresh && onRefresh({ start, end, refresh: true });
206206
setTimeout(()=>{
207207
setReloadLoading(false)
208208
}, 1000)

web/src/components/Overview/Detail/Metrics/MetricLineList.jsx

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export default (props) => {
2424
queryParams={queryParams}
2525
timeout={timeout}
2626
className={styles.lineWrapper}
27+
height={150}
2728
formatMetric={(metric) => {
2829
if (!metric) return metric;
2930
let units = "";

web/src/components/Overview/Monitor/index.jsx

+19-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState, useMemo, useEffect, useCallback } from "react";
2-
import { Card, Tabs, Breadcrumb, Button, BackTop, Empty } from "antd";
2+
import { Card, Tabs, Breadcrumb, Button, BackTop, Empty, Spin } from "antd";
33
import { calculateBounds } from "@/components/vendor/data/common/query/timefilter";
44
import { formatter } from "@/utils/format";
55
import moment from "moment";
@@ -66,6 +66,7 @@ const Monitor = (props) => {
6666
timeInterval: formatTimeInterval(param?.timeInterval),
6767
timeout: formatTimeout(param?.timeout) || localStorage.getItem(TIMEOUT_CACHE_KEY) || '120s',
6868
param: param,
69+
refresh: true
6970
})
7071
);
7172

@@ -76,7 +77,7 @@ const Monitor = (props) => {
7677
setParam({ ...param, timeRange: state.timeRange, timeInterval: state.timeInterval, timeout: state.timeout });
7778
}, [state.timeRange, state.timeInterval, state.timeout]);
7879

79-
const handleTimeChange = useCallback(({ start, end, timeInterval, timeout }) => {
80+
const handleTimeChange = useCallback(({ start, end, timeInterval, timeout, refresh }) => {
8081
const bounds = calculateBounds({
8182
from: start,
8283
to: end,
@@ -93,9 +94,9 @@ const Monitor = (props) => {
9394
timeFormatter: formatter.dates(intDay),
9495
},
9596
timeInterval: timeInterval || state.timeInterval,
96-
timeout: timeout || state.timeout
97+
timeout: timeout || state.timeout,
98+
refresh
9799
});
98-
setSpinning(true);
99100
}, [state])
100101

101102
const onInfoChange = (info) => {
@@ -112,6 +113,12 @@ const Monitor = (props) => {
112113
return monitor_configs?.node_stats?.enabled === false && monitor_configs?.index_stats?.enabled === false
113114
}, [JSON.stringify(selectedCluster?.monitor_configs)])
114115

116+
console.log("spinning")
117+
console.log(spinning)
118+
console.log("state.refresh")
119+
console.log(state.refresh)
120+
121+
115122
return (
116123
<div>
117124
<BreadcrumbList data={breadcrumbList} />
@@ -165,12 +172,14 @@ const Monitor = (props) => {
165172
>
166173
{panes.map((pane) => (
167174
<TabPane tab={pane.title} key={pane.key}>
168-
<StatisticBar
169-
setSpinning={setSpinning}
170-
onInfoChange={onInfoChange}
171-
{...state}
172-
{...extraParams}
173-
/>
175+
<Spin spinning={spinning && !!state.refresh}>
176+
<StatisticBar
177+
setSpinning={setSpinning}
178+
onInfoChange={onInfoChange}
179+
{...state}
180+
{...extraParams}
181+
/>
182+
</Spin>
174183
<div style={{ marginTop: 15 }}>
175184
{checkPaneParams({
176185
...state,

web/src/lib/hooks/use_fetch.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const DEFAULT_OPTIONS = {
66
};
77

88
export default function useFetch(url, options = {}, dependencies = [], runInInit = true) {
9-
const { returnRawResponse, noticeable, ...rest } = options
9+
const { returnRawResponse, noticeable, ...rest } = options || {}
1010
return useAsync(() => {
1111
return request(url, { ...DEFAULT_OPTIONS, ...rest }, returnRawResponse, noticeable);
1212
}, dependencies, runInInit);

web/src/pages/Platform/Overview/Cluster/Monitor/advanced.jsx

+16-37
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,27 @@ import QueueMetric from "../../components/queue_metric";
88
import { ESPrefix } from "@/services/common";
99
import { SearchEngines } from "@/lib/search_engines";
1010

11-
const timezone = "local";
12-
1311
export default ({
1412
selectedCluster,
1513
clusterID,
1614
timeRange,
1715
handleTimeChange,
16+
timezone,
1817
bucketSize,
1918
timeout,
19+
refresh,
2020
}) => {
2121

22+
const tabProps = {
23+
clusterID,
24+
timeRange,
25+
handleTimeChange,
26+
timezone,
27+
bucketSize,
28+
timeout,
29+
refresh
30+
}
31+
2232
const isVersionGTE6 = useMemo(() => {
2333
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(selectedCluster?.distribution)) return true;
2434
const main = selectedCluster?.version?.split('.')[0]
@@ -56,12 +66,8 @@ export default ({
5666
})}
5767
>
5868
<ClusterMetric
59-
timezone={timezone}
60-
timeRange={timeRange}
61-
handleTimeChange={handleTimeChange}
69+
{...tabProps}
6270
fetchUrl={`${ESPrefix}/${clusterID}/cluster_metrics`}
63-
bucketSize={bucketSize}
64-
timeout={timeout}
6571
metrics={[
6672
'cluster_health',
6773
'index_throughput',
@@ -84,14 +90,9 @@ export default ({
8490
})}
8591
>
8692
<NodeMetric
87-
clusterID={clusterID}
88-
timezone={timezone}
89-
timeRange={timeRange}
90-
handleTimeChange={handleTimeChange}
93+
{...tabProps}
9194
param={param}
9295
setParam={setParam}
93-
bucketSize={bucketSize}
94-
timeout={timeout}
9596
metrics={[
9697
[
9798
"operations",
@@ -231,14 +232,9 @@ export default ({
231232
})}
232233
>
233234
<IndexMetric
234-
clusterID={clusterID}
235-
timezone={timezone}
236-
timeRange={timeRange}
237-
handleTimeChange={handleTimeChange}
235+
{...tabProps}
238236
param={param}
239237
setParam={setParam}
240-
bucketSize={bucketSize}
241-
timeout={timeout}
242238
metrics={[
243239
[
244240
"operations",
@@ -314,14 +310,9 @@ export default ({
314310
})}
315311
>
316312
<QueueMetric
317-
clusterID={clusterID}
318-
timezone={timezone}
319-
timeRange={timeRange}
320-
handleTimeChange={handleTimeChange}
313+
{...tabProps}
321314
param={param}
322315
setParam={setParam}
323-
bucketSize={bucketSize}
324-
timeout={timeout}
325316
metrics={[
326317
isVersionGTE6 ? [
327318
"thread_pool_write",
@@ -397,18 +388,6 @@ export default ({
397388
].filter((item) => !!item)}
398389
/>
399390
</Tabs.TabPane>
400-
{/* <Tabs.TabPane
401-
key="storage"
402-
tab={formatMessage({
403-
id: "cluster.monitor.queue.storage",
404-
})}
405-
>
406-
<StorageMetric
407-
clusterID={clusterID}
408-
timezone={timezone}
409-
timeRange={timeRange}
410-
/>
411-
</Tabs.TabPane> */}
412391
</Tabs>
413392
);
414393
}

web/src/pages/Platform/Overview/Cluster/Monitor/overview.jsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
import ClusterMetric from "../../components/cluster_metric";
22
import { ESPrefix } from "@/services/common";
33

4-
const timezone = "local";
5-
64
export default ({
75
clusterID,
86
timeRange,
97
handleTimeChange,
108
bucketSize,
119
timeout,
10+
timezone,
11+
refresh
1212
}) => {
1313
return (
1414
<ClusterMetric
1515
timezone={timezone}
1616
timeRange={timeRange}
1717
timeout={timeout}
18+
refresh={refresh}
1819
handleTimeChange={handleTimeChange}
1920
overview={1}
2021
fetchUrl={`${ESPrefix}/${clusterID}/cluster_metrics`}

web/src/pages/Platform/Overview/Indices/Monitor/advanced.jsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import { useState } from "react";
22
import StatisticBar from "./statistic_bar";
33
import IndexMetric from "../../components/index_metric";
44

5-
const timezone = "local";
6-
75
export default ({
86
clusterID,
97
indexName,
108
timeRange,
119
handleTimeChange,
1210
shardID,
1311
bucketSize,
14-
timeout
12+
timezone,
13+
timeout,
14+
refresh,
1515
}) => {
1616
const [param, setParam] = useState({
1717
show_top: false,
@@ -28,6 +28,7 @@ export default ({
2828
shardID={shardID}
2929
bucketSize={bucketSize}
3030
timeout={timeout}
31+
refresh={refresh}
3132
metrics={[
3233
[
3334
"operations",

web/src/pages/Platform/Overview/Indices/Monitor/overview.jsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import { ESPrefix } from "@/services/common";
22
import StatisticBar from "./statistic_bar";
33
import ClusterMetric from "../../components/cluster_metric";
44

5-
const timezone = "local";
6-
75
export default ({
86
isAgent,
97
clusterID,
@@ -12,7 +10,9 @@ export default ({
1210
handleTimeChange,
1311
shardID,
1412
bucketSize,
15-
timeout
13+
timezone,
14+
timeout,
15+
refresh
1616
}) => {
1717
let url = `${ESPrefix}/${clusterID}/index/${indexName}/metrics`;
1818
if(shardID){
@@ -27,6 +27,7 @@ export default ({
2727
fetchUrl={url}
2828
bucketSize={bucketSize}
2929
timeout={timeout}
30+
refresh={refresh}
3031
metrics={[
3132
"index_health",
3233
"index_throughput",

web/src/pages/Platform/Overview/Node/Monitor/advanced.jsx

+14-14
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,28 @@ import QueueMetric from "../../components/queue_metric";
55
import { formatMessage } from "umi/locale";
66
import { SearchEngines } from "@/lib/search_engines";
77

8-
const timezone = "local";
9-
108
export default ({
119
selectedCluster,
1210
clusterID,
1311
nodeID,
1412
timeRange,
1513
handleTimeChange,
14+
timezone,
1615
bucketSize,
1716
timeout,
17+
refresh,
1818
}) => {
1919

20+
const tabProps = {
21+
clusterID,
22+
timeRange,
23+
handleTimeChange,
24+
timezone,
25+
bucketSize,
26+
timeout,
27+
refresh
28+
}
29+
2030
const isVersionGTE6 = useMemo(() => {
2131
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(selectedCluster?.distribution)) return true;
2232
const main = selectedCluster?.version?.split('.')[0]
@@ -59,14 +69,9 @@ export default ({
5969
})}
6070
>
6171
<NodeMetric
62-
clusterID={clusterID}
63-
timezone={timezone}
64-
timeRange={timeRange}
65-
handleTimeChange={handleTimeChange}
72+
{...tabProps}
6673
param={param}
6774
setParam={setParam}
68-
bucketSize={bucketSize}
69-
timeout={timeout}
7075
metrics={[
7176
[
7277
"operations",
@@ -206,14 +211,9 @@ export default ({
206211
})}
207212
>
208213
<QueueMetric
209-
clusterID={clusterID}
210-
timezone={timezone}
211-
timeRange={timeRange}
212-
handleTimeChange={handleTimeChange}
214+
{...tabProps}
213215
param={param}
214216
setParam={setParam}
215-
bucketSize={bucketSize}
216-
timeout={timeout}
217217
metrics={[
218218
isVersionGTE6 ? [
219219
"thread_pool_write",

web/src/pages/Platform/Overview/Node/Monitor/overview.jsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,24 @@ import StatisticBar from "./statistic_bar";
33
import ClusterMetric from "../../components/cluster_metric";
44
import { useMemo } from "react";
55

6-
const timezone = "local";
7-
86
export default ({
97
isAgent,
108
clusterID,
119
nodeID,
1210
timeRange,
1311
handleTimeChange,
1412
bucketSize,
13+
timezone,
1514
timeout,
15+
refresh
1616
}) => {
1717

1818
return (
1919
<ClusterMetric
2020
timezone={timezone}
2121
timeRange={timeRange}
2222
timeout={timeout}
23+
refresh={refresh}
2324
handleTimeChange={handleTimeChange}
2425
overview={1}
2526
fetchUrl={`${ESPrefix}/${clusterID}/node/${nodeID}/metrics`}

0 commit comments

Comments
 (0)