diff --git a/web/src/common/src/DatePicker/index.jsx b/web/src/common/src/DatePicker/index.jsx
index 95f01954..439123fa 100644
--- a/web/src/common/src/DatePicker/index.jsx
+++ b/web/src/common/src/DatePicker/index.jsx
@@ -202,7 +202,7 @@ const DatePicker = (props) => {
const [reloadLoading, setReloadLoading] = useState(false)
const onRefreshClick = () => {
setReloadLoading(true)
- onRefresh && onRefresh({ start, end });
+ onRefresh && onRefresh({ start, end, refresh: true });
setTimeout(()=>{
setReloadLoading(false)
}, 1000)
diff --git a/web/src/components/Overview/Detail/Metrics/MetricLineList.jsx b/web/src/components/Overview/Detail/Metrics/MetricLineList.jsx
index 936bdd5f..756f55d9 100644
--- a/web/src/components/Overview/Detail/Metrics/MetricLineList.jsx
+++ b/web/src/components/Overview/Detail/Metrics/MetricLineList.jsx
@@ -24,6 +24,7 @@ export default (props) => {
queryParams={queryParams}
timeout={timeout}
className={styles.lineWrapper}
+ height={150}
formatMetric={(metric) => {
if (!metric) return metric;
let units = "";
diff --git a/web/src/components/Overview/Monitor/index.jsx b/web/src/components/Overview/Monitor/index.jsx
index a9c4e5d6..51b2f6bb 100644
--- a/web/src/components/Overview/Monitor/index.jsx
+++ b/web/src/components/Overview/Monitor/index.jsx
@@ -1,5 +1,5 @@
import React, { useState, useMemo, useEffect, useCallback } from "react";
-import { Card, Tabs, Breadcrumb, Button, BackTop, Empty } from "antd";
+import { Card, Tabs, Breadcrumb, Button, BackTop, Empty, Spin } from "antd";
import { calculateBounds } from "@/components/vendor/data/common/query/timefilter";
import { formatter } from "@/utils/format";
import moment from "moment";
@@ -66,6 +66,7 @@ const Monitor = (props) => {
timeInterval: formatTimeInterval(param?.timeInterval),
timeout: formatTimeout(param?.timeout) || localStorage.getItem(TIMEOUT_CACHE_KEY) || '120s',
param: param,
+ refresh: true
})
);
@@ -76,7 +77,7 @@ const Monitor = (props) => {
setParam({ ...param, timeRange: state.timeRange, timeInterval: state.timeInterval, timeout: state.timeout });
}, [state.timeRange, state.timeInterval, state.timeout]);
- const handleTimeChange = useCallback(({ start, end, timeInterval, timeout }) => {
+ const handleTimeChange = useCallback(({ start, end, timeInterval, timeout, refresh }) => {
const bounds = calculateBounds({
from: start,
to: end,
@@ -93,9 +94,9 @@ const Monitor = (props) => {
timeFormatter: formatter.dates(intDay),
},
timeInterval: timeInterval || state.timeInterval,
- timeout: timeout || state.timeout
+ timeout: timeout || state.timeout,
+ refresh
});
- setSpinning(true);
}, [state])
const onInfoChange = (info) => {
@@ -112,6 +113,12 @@ const Monitor = (props) => {
return monitor_configs?.node_stats?.enabled === false && monitor_configs?.index_stats?.enabled === false
}, [JSON.stringify(selectedCluster?.monitor_configs)])
+ console.log("spinning")
+ console.log(spinning)
+ console.log("state.refresh")
+ console.log(state.refresh)
+
+
return (
@@ -165,12 +172,14 @@ const Monitor = (props) => {
>
{panes.map((pane) => (
-
+
+
+
{checkPaneParams({
...state,
diff --git a/web/src/lib/hooks/use_fetch.js b/web/src/lib/hooks/use_fetch.js
index 91ab10c4..998b0e23 100644
--- a/web/src/lib/hooks/use_fetch.js
+++ b/web/src/lib/hooks/use_fetch.js
@@ -6,7 +6,7 @@ const DEFAULT_OPTIONS = {
};
export default function useFetch(url, options = {}, dependencies = [], runInInit = true) {
- const { returnRawResponse, noticeable, ...rest } = options
+ const { returnRawResponse, noticeable, ...rest } = options || {}
return useAsync(() => {
return request(url, { ...DEFAULT_OPTIONS, ...rest }, returnRawResponse, noticeable);
}, dependencies, runInInit);
diff --git a/web/src/pages/Platform/Overview/Cluster/Monitor/advanced.jsx b/web/src/pages/Platform/Overview/Cluster/Monitor/advanced.jsx
index 0e63e71a..a5f10813 100644
--- a/web/src/pages/Platform/Overview/Cluster/Monitor/advanced.jsx
+++ b/web/src/pages/Platform/Overview/Cluster/Monitor/advanced.jsx
@@ -8,17 +8,27 @@ import QueueMetric from "../../components/queue_metric";
import { ESPrefix } from "@/services/common";
import { SearchEngines } from "@/lib/search_engines";
-const timezone = "local";
-
export default ({
selectedCluster,
clusterID,
timeRange,
handleTimeChange,
+ timezone,
bucketSize,
timeout,
+ refresh,
}) => {
+ const tabProps = {
+ clusterID,
+ timeRange,
+ handleTimeChange,
+ timezone,
+ bucketSize,
+ timeout,
+ refresh
+ }
+
const isVersionGTE6 = useMemo(() => {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(selectedCluster?.distribution)) return true;
const main = selectedCluster?.version?.split('.')[0]
@@ -56,12 +66,8 @@ export default ({
})}
>
!!item)}
/>
- {/*
-
- */}
);
}
diff --git a/web/src/pages/Platform/Overview/Cluster/Monitor/overview.jsx b/web/src/pages/Platform/Overview/Cluster/Monitor/overview.jsx
index 2346d62d..0f29b883 100644
--- a/web/src/pages/Platform/Overview/Cluster/Monitor/overview.jsx
+++ b/web/src/pages/Platform/Overview/Cluster/Monitor/overview.jsx
@@ -1,20 +1,21 @@
import ClusterMetric from "../../components/cluster_metric";
import { ESPrefix } from "@/services/common";
-const timezone = "local";
-
export default ({
clusterID,
timeRange,
handleTimeChange,
bucketSize,
timeout,
+ timezone,
+ refresh
}) => {
return (
{
const [param, setParam] = useState({
show_top: false,
@@ -28,6 +28,7 @@ export default ({
shardID={shardID}
bucketSize={bucketSize}
timeout={timeout}
+ refresh={refresh}
metrics={[
[
"operations",
diff --git a/web/src/pages/Platform/Overview/Indices/Monitor/overview.jsx b/web/src/pages/Platform/Overview/Indices/Monitor/overview.jsx
index e15a9292..1637e2dc 100644
--- a/web/src/pages/Platform/Overview/Indices/Monitor/overview.jsx
+++ b/web/src/pages/Platform/Overview/Indices/Monitor/overview.jsx
@@ -2,8 +2,6 @@ import { ESPrefix } from "@/services/common";
import StatisticBar from "./statistic_bar";
import ClusterMetric from "../../components/cluster_metric";
-const timezone = "local";
-
export default ({
isAgent,
clusterID,
@@ -12,7 +10,9 @@ export default ({
handleTimeChange,
shardID,
bucketSize,
- timeout
+ timezone,
+ timeout,
+ refresh
}) => {
let url = `${ESPrefix}/${clusterID}/index/${indexName}/metrics`;
if(shardID){
@@ -27,6 +27,7 @@ export default ({
fetchUrl={url}
bucketSize={bucketSize}
timeout={timeout}
+ refresh={refresh}
metrics={[
"index_health",
"index_throughput",
diff --git a/web/src/pages/Platform/Overview/Node/Monitor/advanced.jsx b/web/src/pages/Platform/Overview/Node/Monitor/advanced.jsx
index 7d27be70..379f3a2b 100644
--- a/web/src/pages/Platform/Overview/Node/Monitor/advanced.jsx
+++ b/web/src/pages/Platform/Overview/Node/Monitor/advanced.jsx
@@ -5,18 +5,28 @@ import QueueMetric from "../../components/queue_metric";
import { formatMessage } from "umi/locale";
import { SearchEngines } from "@/lib/search_engines";
-const timezone = "local";
-
export default ({
selectedCluster,
clusterID,
nodeID,
timeRange,
handleTimeChange,
+ timezone,
bucketSize,
timeout,
+ refresh,
}) => {
+ const tabProps = {
+ clusterID,
+ timeRange,
+ handleTimeChange,
+ timezone,
+ bucketSize,
+ timeout,
+ refresh
+ }
+
const isVersionGTE6 = useMemo(() => {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(selectedCluster?.distribution)) return true;
const main = selectedCluster?.version?.split('.')[0]
@@ -59,14 +69,9 @@ export default ({
})}
>
{
return (
@@ -20,6 +20,7 @@ export default ({
timezone={timezone}
timeRange={timeRange}
timeout={timeout}
+ refresh={refresh}
handleTimeChange={handleTimeChange}
overview={1}
fetchUrl={`${ESPrefix}/${clusterID}/node/${nodeID}/metrics`}
diff --git a/web/src/pages/Platform/Overview/components/MetricChart.jsx b/web/src/pages/Platform/Overview/components/MetricChart.jsx
index 305171f6..50602ab5 100644
--- a/web/src/pages/Platform/Overview/components/MetricChart.jsx
+++ b/web/src/pages/Platform/Overview/components/MetricChart.jsx
@@ -27,6 +27,7 @@ export default (props) => {
timezone,
timeRange,
timeout,
+ refresh,
handleTimeChange,
fetchUrl,
metricKey,
@@ -82,9 +83,9 @@ export default (props) => {
}
useEffect(() => {
- observerRef.current.deps = cloneDeep([queryParams, fetchUrl, metricKey])
- fetchData(queryParams, fetchUrl, metricKey)
- }, [JSON.stringify(queryParams), fetchUrl, metricKey])
+ observerRef.current.deps = cloneDeep([queryParams, fetchUrl, metricKey, refresh])
+ fetchData(queryParams, fetchUrl, metricKey, refresh)
+ }, [JSON.stringify(queryParams), fetchUrl, metricKey, refresh])
useEffect(() => {
const observer = new IntersectionObserver(
@@ -144,7 +145,6 @@ export default (props) => {
};
const renderChart = () => {
- if (loading) return
if (error) {
return (
@@ -155,7 +155,14 @@ export default (props) => {
const axis = metric?.axis || [];
const lines = metric?.lines || [];
if (lines.every((item) => !item.data || item.data.length === 0)) {
- return
+ return (
+
+
+
+ )
+ }
+ if (customRenderChart) {
+ return customRenderChart(metric)
}
return (
{
}
- {customRenderChart ? customRenderChart(metric) : renderChart()}
+ {renderChart()}
);
diff --git a/web/src/pages/Platform/Overview/components/cluster_metric.jsx b/web/src/pages/Platform/Overview/components/cluster_metric.jsx
index 44d96d8b..5958686e 100644
--- a/web/src/pages/Platform/Overview/components/cluster_metric.jsx
+++ b/web/src/pages/Platform/Overview/components/cluster_metric.jsx
@@ -8,7 +8,7 @@ import { formatTimeRange } from "@/lib/elasticsearch/util";
export default (props) => {
- const { fetchUrl, overview, metrics = [], renderExtra, timeRange, timeout, timezone, bucketSize, handleTimeChange } = props
+ const { fetchUrl, overview, metrics = [], renderExtra, timeRange, timeout, timezone, refresh, bucketSize, handleTimeChange } = props
if (!fetchUrl || metrics.length === 0) {
return null;
@@ -36,6 +36,7 @@ export default (props) => {
timezone={timezone}
timeRange={timeRange}
timeout={timeout}
+ refresh={refresh}
handleTimeChange={handleTimeChange}
fetchUrl={fetchUrl}
metricKey={metricKey}
diff --git a/web/src/pages/Platform/Overview/components/index_metric.jsx b/web/src/pages/Platform/Overview/components/index_metric.jsx
index 44fab94b..88f586bd 100644
--- a/web/src/pages/Platform/Overview/components/index_metric.jsx
+++ b/web/src/pages/Platform/Overview/components/index_metric.jsx
@@ -23,7 +23,8 @@ export default (props) => {
shardID,
bucketSize,
metrics = [],
- timeout
+ timeout,
+ refresh,
} = props
if (!clusterID || metrics.length == 0) {
@@ -130,6 +131,7 @@ export default (props) => {
queryParams={queryParams}
className={"metric-item"}
timeout={timeout}
+ refresh={refresh}
/>
))
}
diff --git a/web/src/pages/Platform/Overview/components/node_metric.jsx b/web/src/pages/Platform/Overview/components/node_metric.jsx
index c4bd0eb9..c8b32cde 100644
--- a/web/src/pages/Platform/Overview/components/node_metric.jsx
+++ b/web/src/pages/Platform/Overview/components/node_metric.jsx
@@ -21,6 +21,7 @@ export default (props) => {
setParam,
bucketSize,
timeout,
+ refresh,
metrics = []
} = props
@@ -153,6 +154,7 @@ export default (props) => {
queryParams={queryParams}
className={"metric-item"}
timeout={timeout}
+ refresh={refresh}
/>
))
}
diff --git a/web/src/pages/Platform/Overview/components/queue_metric.jsx b/web/src/pages/Platform/Overview/components/queue_metric.jsx
index c790f7dd..7932b4af 100644
--- a/web/src/pages/Platform/Overview/components/queue_metric.jsx
+++ b/web/src/pages/Platform/Overview/components/queue_metric.jsx
@@ -21,7 +21,8 @@ export default (props) => {
setParam,
bucketSize,
metrics = [],
- timeout
+ timeout,
+ refresh
} = props
if (!clusterID || metrics.length == 0) {
@@ -153,6 +154,7 @@ export default (props) => {
queryParams={queryParams}
className={"metric-item"}
timeout={timeout}
+ refresh={refresh}
/>
))
}