Mirror of https://github.com/roostorg/osprey
github.com/roostorg/osprey
1import dayjs from 'dayjs';
2
3import { history } from '../stores/QueryStore';
4import { QueryRecord, ScanQueryOrder } from '../types/QueryTypes';
5import { getIntervalFromDateRange } from './DateUtils';
6import { getQueryDateRange } from './QueryUtils';
7
8export function openNewQueryWindow(queryFilter: string) {
9 const queryString = new URLSearchParams(history.location.search);
10 queryString.set('queryFilter', queryFilter);
11
12 window.open(`${window.location.origin}/?${queryString.toString()}`, window.name);
13}
14
15export function getSearchParamsForQueryRecord(query: QueryRecord, useInterval: boolean = false): string {
16 const interval = getIntervalFromDateRange(query.date_range);
17
18 let start = dayjs.utc(query.date_range.start).format();
19 let end = dayjs.utc(query.date_range.end).format();
20
21 if (useInterval && interval != null) {
22 const dateRange = getQueryDateRange(interval);
23
24 start = dateRange.start;
25 end = dateRange.end;
26 }
27
28 const queryString = new URLSearchParams();
29 queryString.append('queryFilter', query.query_filter);
30 queryString.append('start', start);
31 queryString.append('end', end);
32
33 if (interval != null) {
34 queryString.append('interval', interval);
35 }
36
37 if (query.sort_order === ScanQueryOrder.ASCENDING) {
38 queryString.append('sortOrder', ScanQueryOrder.ASCENDING);
39 }
40
41 if (query.top_n.length > 0) {
42 query.top_n.forEach((table) => {
43 queryString.append('topn', table.asQueryParam());
44 });
45 }
46
47 return `?${queryString.toString()}`;
48}