Skip to content

Commit

Permalink
[ML] replace custom time range subject with timefilter
Browse files Browse the repository at this point in the history
  • Loading branch information
darnautov committed Jul 2, 2020
1 parent a44f125 commit e6fd3af
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ import { Subscription } from 'rxjs';
import { EuiSuperDatePicker, OnRefreshProps } from '@elastic/eui';
import { TimeRange, TimeHistoryContract } from 'src/plugins/data/public';

import {
mlTimefilterRefresh$,
mlTimefilterTimeChange$,
} from '../../../services/timefilter_refresh_service';
import { mlTimefilterRefresh$ } from '../../../services/timefilter_refresh_service';
import { useUrlState } from '../../../util/url_state';
import { useMlKibana } from '../../../contexts/kibana';

Expand Down Expand Up @@ -108,7 +105,6 @@ export const DatePickerWrapper: FC = () => {
timefilter.setTime(newTime);
setTime(newTime);
setRecentlyUsedRanges(getRecentlyUsedRanges());
mlTimefilterTimeChange$.next({ lastRefresh: Date.now(), timeRange: { start, end } });
}

function updateInterval({
Expand Down
34 changes: 22 additions & 12 deletions x-pack/plugins/ml/public/application/routing/use_refresh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,36 @@
*/

import { useObservable } from 'react-use';
import { merge, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { merge } from 'rxjs';
import { map, skip } from 'rxjs/operators';

import { useMemo } from 'react';
import { annotationsRefresh$ } from '../services/annotations_service';
import {
mlTimefilterRefresh$,
mlTimefilterTimeChange$,
} from '../services/timefilter_refresh_service';
import { mlTimefilterRefresh$ } from '../services/timefilter_refresh_service';
import { useTimefilter } from '../contexts/kibana';

export interface Refresh {
lastRefresh: number;
timeRange?: { start: string; end: string };
}

const refresh$: Observable<Refresh> = merge(
mlTimefilterRefresh$,
mlTimefilterTimeChange$,
annotationsRefresh$.pipe(map((d) => ({ lastRefresh: d })))
);

export const useRefresh = () => {
const timefilter = useTimefilter();

const refresh$ = useMemo(() => {
return merge(
mlTimefilterRefresh$,
timefilter.getTimeUpdate$().pipe(
// skip initially emitted value
skip(1),
map((_) => {
const { from, to } = timefilter.getTime();
return { lastRefresh: Date.now(), timeRange: { start: from, end: to } };
})
),
annotationsRefresh$.pipe(map((d) => ({ lastRefresh: d })))
);
}, []);

return useObservable<Refresh>(refresh$);
};
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,3 @@ import { Subject } from 'rxjs';
import { Refresh } from '../routing/use_refresh';

export const mlTimefilterRefresh$ = new Subject<Required<Refresh>>();
export const mlTimefilterTimeChange$ = new Subject<Required<Refresh>>();

0 comments on commit e6fd3af

Please sign in to comment.