Skip to content

Commit

Permalink
TEMP
Browse files Browse the repository at this point in the history
  • Loading branch information
davismcphee committed Mar 11, 2024
1 parent aa1e659 commit 7dd144c
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ import { DiscoverResizableLayout } from './discover_resizable_layout';
import { ESQLTechPreviewCallout } from './esql_tech_preview_callout';
import { PanelsToggle, PanelsToggleProps } from '../../../../components/panels_toggle';
import { sendErrorMsg } from '../../hooks/use_saved_search_messages';
import { useDiscoverContext } from '../../../../customizations';
import { DataSourceType, useDiscoverContext } from '../../../../customizations';
import { RuntimeContextNavigator } from '../../../../customizations/runtime_context_navigator';
import { RuntimeContextManager } from '../../../../customizations/runtime_context_manager';

const SidebarMemoized = React.memo(DiscoverSidebarResponsive);
const TopNavMemoized = React.memo(DiscoverTopNav);
Expand All @@ -74,6 +76,9 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
history,
spaces,
docLinks,
locator,
storage,
application,
} = useDiscoverServices();
const pageBackgroundColor = useEuiBackgroundColor('plain');
const globalQueryState = data.query.getState();
Expand All @@ -94,7 +99,7 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
]);
const dataState: DataMainMsg = useDataState(main$);
const savedSearch = useSavedSearchInitial();
const { rootContext } = useDiscoverContext();
const { rootContext, allProfiles, currentProfile, runtimeContext } = useDiscoverContext();
const fetchCounter = useRef<number>(0);

useEffect(() => {
Expand Down Expand Up @@ -211,6 +216,10 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
);
}, [stateContainer, sidebarToggleState$]);

const [navigator] = useState(
() => new RuntimeContextNavigator(new RuntimeContextManager(storage), locator, application)
);

const mainDisplay = useMemo(() => {
if (resultState === 'uninitialized') {
addLog('[DiscoverLayout] uninitialized triggers data fetching');
Expand All @@ -221,6 +230,48 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
<>
{/* Temporarily display a tech preview callout for ES|QL*/}
{isPlainRecord && <ESQLTechPreviewCallout docLinks={docLinks} />}
<div>
<a
href={locator.getRedirectUrl({})}
onClick={(e) => {
e.preventDefault();
navigator.navigateWithContext(
{
runtimeContext: {
...runtimeContext,
dataSourceType:
runtimeContext.dataSourceType === DataSourceType.DataView
? DataSourceType.Esql
: DataSourceType.DataView,
},
},
{ openInNewTab: true }
);
}}
css={{
marginRight: 10,
}}
>
SWAP
</a>
<span css={{ marginRight: 10, fontWeight: 'bold' }}>{runtimeContext.dataSourceType}</span>
{allProfiles.map((profile) => (
<a
key={profile.id}
href={locator.getRedirectUrl({ profile: profile.id })}
onClick={(e) => {
e.preventDefault();
locator.navigate({ profile: profile.id });
}}
css={{
marginRight: 10,
fontWeight: currentProfile.id === profile.id ? 'bold' : 'normal',
}}
>
{profile.displayName}
</a>
))}
</div>
<DiscoverHistogramLayout
isPlainRecord={isPlainRecord}
dataView={dataView}
Expand All @@ -237,18 +288,23 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
</>
);
}, [
allProfiles,
currentColumns,
currentProfile.id,
dataView,
docLinks,
isPlainRecord,
locator,
mainContainer,
navigator,
onAddFilter,
onDropFieldToTable,
onFieldEdited,
panelsToggle,
resultState,
runtimeContext,
stateContainer,
viewMode,
panelsToggle,
]);

const isLoading =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import {
DiscoverCustomizationProvider,
useDiscoverContext,
useDiscoverCustomizationService,
useDiscoverRuntimeContextEvents,
} from '../../customizations';
import { DiscoverTopNavInline } from './components/top_nav/discover_topnav_inline';
import { isTextBasedQuery } from './utils/is_text_based_query';
Expand Down Expand Up @@ -66,10 +67,12 @@ export function DiscoverMainRoute({ stateStorageContainer }: MainRouteProps) {
} = services;
const { id: savedSearchId } = useParams<DiscoverLandingParams>();
const { rootContext } = useDiscoverContext();
const runtimeContextEvents = useDiscoverRuntimeContextEvents();
const { stateContainer, resetStateContainer } = useDiscoverStateContainer({
history,
services,
rootContext,
runtimeContextEvents,
stateStorageContainer,
});
const { customizationService, isInitialized: isCustomizationServiceInitialized } =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ import {
getDiscoverGlobalStateContainer,
DiscoverGlobalStateContainer,
} from './discover_global_state_container';
import type { DiscoverRootContext } from '../../../customizations';
import {
DataSourceType,
DiscoverRootContext,
DiscoverRuntimeContextEvents,
} from '../../../customizations';

export interface DiscoverStateContainerParams {
/**
Expand All @@ -72,6 +76,10 @@ export interface DiscoverStateContainerParams {
* Context object for customization related properties
*/
rootContext: DiscoverRootContext;
/**
* Events for runtime context
*/
runtimeContextEvents: DiscoverRuntimeContextEvents;
/**
* a custom url state storage
*/
Expand Down Expand Up @@ -209,6 +217,7 @@ export function getDiscoverStateContainer({
history,
services,
rootContext,
runtimeContextEvents,
stateStorageContainer,
}: DiscoverStateContainerParams): DiscoverStateContainer {
const storeInSessionStorage = services.uiSettings.get('state:storeInSessionStorage');
Expand Down Expand Up @@ -276,6 +285,8 @@ export function getDiscoverStateContainer({
internalStateContainer.transitions.setDataView(dataView);
pauseAutoRefreshInterval(dataView);
savedSearchContainer.getState().searchSource.setField('index', dataView);
const dataSourceType = dataView.type === 'esql' ? DataSourceType.Esql : DataSourceType.DataView;
runtimeContextEvents.onDataSourceTypeChange(dataSourceType);
};

const dataStateContainer = getDataStateContainer({
Expand Down

0 comments on commit 7dd144c

Please sign in to comment.