diff --git a/web/src/pages/Alerting/Message/Index.jsx b/web/src/pages/Alerting/Message/Index.jsx
index 6ce23f83..812a5f56 100644
--- a/web/src/pages/Alerting/Message/Index.jsx
+++ b/web/src/pages/Alerting/Message/Index.jsx
@@ -349,10 +349,10 @@ const Index = (props) => {
},
];
- const onTimeChange = ({ start, end }) => {
+ const onTimeChange = ({ start, end, refresh }) => {
dispatch({
type: "timeChange",
- value: { start_time: start, end_time: end },
+ value: { start_time: start, end_time: end, refresh },
});
};
@@ -503,6 +503,7 @@ const Index = (props) => {
delete newQueryParams._t;
delete newQueryParams.start_time;
delete newQueryParams.end_time;
+ delete newQueryParams.refresh;
return newQueryParams;
}, [JSON.stringify(queryParams)]);
@@ -511,8 +512,8 @@ const Index = (props) => {
return { minUpdated: "", maxUpdated: "" };
}
return {
- minUpdated: moment(dataSource.aggregations.min_updated?.value),
- maxUpdated: moment(dataSource.aggregations.max_updated?.value),
+ minUpdated: moment(dataSource.aggregations.min_updated?.value).tz(getTimezone()).utc().format(),
+ maxUpdated: moment(dataSource.aggregations.max_updated?.value).tz(getTimezone()).utc().format(),
};
}, [dataSource.aggregations]);
@@ -665,7 +666,7 @@ const Index = (props) => {
onRangeChange={onTimeChange}
{...refresh}
onRefreshChange={setRefresh}
- onRefresh={onTimeChange}
+ onRefresh={({ start, end}) => onTimeChange({ start, end, refresh: new Date().valueOf()})}
timeZone={timeZone}
onTimeZoneChange={setTimeZone}
recentlyUsedRangesKey={'alerting-message'}
@@ -715,6 +716,7 @@ const Index = (props) => {
to: maxUpdated,
}}
queryParams={widgetQueryParams}
+ refresh={queryParams?.refresh}
/>
{
+const RuleRecords = ({ ruleID, timeRange, showAertMetric = false, refresh }) => {
if (!ruleID || !timeRange.min) {
return null;
}
@@ -231,6 +231,7 @@ const RuleRecords = ({ ruleID, timeRange, showAertMetric = false }) => {
priority: queryParams.priority,
state: queryParams.state,
}}
+ refresh={refresh}
/>
) : null}
diff --git a/web/src/pages/Alerting/Rule/components/MessageRecord.jsx b/web/src/pages/Alerting/Rule/components/MessageRecord.jsx
index f3cc64ad..df389d8e 100644
--- a/web/src/pages/Alerting/Rule/components/MessageRecord.jsx
+++ b/web/src/pages/Alerting/Rule/components/MessageRecord.jsx
@@ -12,7 +12,7 @@ import moment from "moment";
import { Link } from "umi";
const Option = Select.Option;
-export default ({ ruleID, timeRange }) => {
+export default ({ ruleID, timeRange, refresh }) => {
const initialQueryParams = {
from: 0,
size: 10,
@@ -261,6 +261,7 @@ export default ({ ruleID, timeRange }) => {
priority: queryParams.priority,
status: queryParams.status,
}}
+ refresh={refresh}
/>
{
setParam({ ...param, timeRange: state.timeRange });
}, [state.timeRange]);
- const handleTimeChange = ({ start, end }) => {
+ const handleTimeChange = ({ start, end, refresh }) => {
setState({
...state,
spinning: true,
@@ -143,6 +143,7 @@ const RuleDetail = (props) => {
max: end,
timeFormatter: formatter.dates(1),
},
+ refresh: refresh || state.refresh
});
};
@@ -332,24 +333,12 @@ const RuleDetail = (props) => {
onRangeChange={handleTimeChange}
{...refresh}
onRefreshChange={setRefresh}
- onRefresh={handleTimeChange}
+ onRefresh={({ start, end}) => handleTimeChange({ start, end, refresh: new Date().valueOf()})}
timeZone={timeZone}
onTimeZoneChange={setTimeZone}
recentlyUsedRangesKey={"rule-detail"}
/>
-
@@ -379,6 +368,7 @@ const RuleDetail = (props) => {
from: state.timeRange.min,
to: state.timeRange.max,
}}
+ refresh={state.refresh}
/>
) : (
@@ -400,6 +390,7 @@ const RuleDetail = (props) => {
to: state.timeRange.max,
}}
queryParams={{ rule_id: ruleID }}
+ refresh={state.refresh}
/>
@@ -419,7 +410,7 @@ const RuleDetail = (props) => {
key="alerts"
tab={formatMessage({ id: "alert.rule.detail.title.alert_event" })}
>
-
+
{
ruleID={ruleID}
timeRange={state.timeRange}
showAertMetric={true}
+ refresh={state.refresh}
/>
diff --git a/web/src/pages/DataManagement/View/WidgetLoader.jsx b/web/src/pages/DataManagement/View/WidgetLoader.jsx
index 051ecb21..97fd631d 100644
--- a/web/src/pages/DataManagement/View/WidgetLoader.jsx
+++ b/web/src/pages/DataManagement/View/WidgetLoader.jsx
@@ -4,10 +4,13 @@ import styles from "./WidgetLoader.less"
import { Empty, Spin } from "antd"
import request from "@/utils/request"
import { generateFilter, mergeFilters } from "./components/QueriesBar/generate_filters"
+import { calculateBounds } from "@/components/vendor/data/common/query/timefilter";
+import moment from "moment"
+import { getTimezone } from "@/utils/utils"
export const WidgetRender = (props) => {
- const { widget, range, query, queryParams = {}, highlightRange = {} } = props;
+ const { widget, range, query, queryParams = {}, highlightRange = {}, refresh } = props;
const [globalRangeCache, setGlobalRangeCache] = useState()
const filters = useMemo(() => {
@@ -27,12 +30,21 @@ export const WidgetRender = (props) => {
return mergeFilters([], newFilters)
}, [JSON.stringify(queryParams)])
+ const formatTimeRange = useMemo(() => {
+ if (!range.from || !range.to) return { from: 'now-15m', to: 'now'}
+ const bounds = calculateBounds(range);
+ return {
+ from: moment(bounds.min.valueOf()).tz(getTimezone()).utc().format(),
+ to: moment(bounds.max.valueOf()).tz(getTimezone()).utc().format(),
+ };
+ }, [JSON.stringify(range), refresh]);
+
return (
widget ? (