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 ? (