Skip to content

Commit d94dbfb

Browse files
committed
refactor: splitRangerDateFilters
1 parent 5d4e0ba commit d94dbfb

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

frontend/src/app/pages/DashBoardPage/utils/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { ChartDetailConfigDTO } from 'app/types/ChartConfigDTO';
3535
import { ChartDataRequestFilter } from 'app/types/ChartDataRequest';
3636
import ChartDataView from 'app/types/ChartDataView';
3737
import { convertToChartConfigDTO } from 'app/utils/ChartDtoHelper';
38-
import { getTime } from 'app/utils/time';
38+
import { getTime, splitRangerDateFilters } from 'app/utils/time';
3939
import { FilterSqlOperator, TIME_FORMATTER } from 'globalConstants';
4040
import i18next from 'i18next';
4141
import moment from 'moment';
@@ -428,6 +428,9 @@ export const getChartWidgetRequestParams = (obj: {
428428

429429
// filter 去重
430430
requestParams.filters = getDistinctFiltersByColumn(requestParams.filters);
431+
// splitRangerDateFilters
432+
requestParams.filters = splitRangerDateFilters(requestParams.filters);
433+
431434
// 变量
432435
if (variableParams) {
433436
requestParams.params = variableParams;

frontend/src/app/utils/time.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@
1616
* limitations under the License.
1717
*/
1818

19-
import { RECOMMEND_TIME, TIME_FORMATTER } from 'globalConstants';
19+
import { DataViewFieldType } from 'app/constants';
20+
import { ChartDataRequestFilter } from 'app/types/ChartDataRequest';
21+
import {
22+
FilterSqlOperator,
23+
RECOMMEND_TIME,
24+
TIME_FORMATTER,
25+
} from 'globalConstants';
2026
import moment, { Moment, unitOfTime } from 'moment';
2127

2228
export function getTimeRange(
@@ -75,3 +81,36 @@ export function recommendTimeRangeConverter(relativeTimeRange) {
7581
}
7682
return timeRange;
7783
}
84+
85+
export const splitRangerDateFilters = (filters: ChartDataRequestFilter[]) => {
86+
if (!Array.isArray(filters)) return filters;
87+
const newFilter = [] as ChartDataRequestFilter[];
88+
filters.forEach(filter => {
89+
let isTargetFilter = false;
90+
if (
91+
filter.sqlOperator === FilterSqlOperator.Between &&
92+
filter.values?.[0].valueType === DataViewFieldType.DATE
93+
) {
94+
isTargetFilter = true;
95+
}
96+
if (!isTargetFilter) {
97+
newFilter.push(filter);
98+
return;
99+
}
100+
// split date range filters
101+
if (filter.values?.[0] && filter.values?.[1]) {
102+
const start: ChartDataRequestFilter = {
103+
...filter,
104+
sqlOperator: FilterSqlOperator.GreaterThanOrEqual,
105+
values: [filter.values?.[0]],
106+
};
107+
const end: ChartDataRequestFilter = {
108+
...filter,
109+
sqlOperator: FilterSqlOperator.LessThan,
110+
values: [filter.values?.[1]],
111+
};
112+
newFilter.push(start, end);
113+
}
114+
});
115+
return newFilter;
116+
};

0 commit comments

Comments
 (0)