Skip to content

Commit

Permalink
Add originatingPath to edit_panel_action
Browse files Browse the repository at this point in the history
Support originatingPath in embeddable state transfer
  • Loading branch information
cqliu1 committed Oct 15, 2021
1 parent 27d7cdd commit 9b7ee32
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ test('redirects to app using state transfer with by value mode', async () => {
coolInput1: 1,
coolInput2: 2,
},
originatingPath: '',
},
});
});
Expand All @@ -86,6 +87,7 @@ test('redirects to app using state transfer without by value mode', async () =>
originatingApp: 'superCoolCurrentApp',
embeddableId: '123',
valueInput: undefined,
originatingPath: '',
},
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { VisualizeConstants } from '../..';

export const VisualizeByValueEditor = ({ onAppLeave }: VisualizeAppProps) => {
const [originatingApp, setOriginatingApp] = useState<string>();
const [originatingPath, setOriginatingPath] = useState<string>();
const { services } = useKibana<VisualizeServices>();
const [eventEmitter] = useState(new EventEmitter());
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
Expand All @@ -39,8 +40,10 @@ export const VisualizeByValueEditor = ({ onAppLeave }: VisualizeAppProps) => {
embeddableId: embeddableIdValue,
valueInput: valueInputValue,
searchSessionId,
originatingPath: pathValue,
} = stateTransferService.getIncomingEditorState(VisualizeConstants.APP_ID) || {};

setOriginatingPath(pathValue);
setOriginatingApp(value);
setValueInput(valueInputValue);
setEmbeddableId(embeddableIdValue);
Expand All @@ -64,7 +67,8 @@ export const VisualizeByValueEditor = ({ onAppLeave }: VisualizeAppProps) => {
eventEmitter,
isChromeVisible,
valueInput,
originatingApp
originatingApp,
originatingPath
);
const { appState, hasUnappliedChanges } = useVisualizeAppState(
services,
Expand Down Expand Up @@ -99,6 +103,7 @@ export const VisualizeByValueEditor = ({ onAppLeave }: VisualizeAppProps) => {
isEmbeddableRendered={isEmbeddableRendered}
originatingApp={originatingApp}
setOriginatingApp={setOriginatingApp}
originatingPath={originatingPath}
setHasUnsavedChanges={setHasUnsavedChanges}
visEditorRef={visEditorRef}
embeddableId={embeddableId}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import { VisualizeConstants } from '../..';
export const VisualizeEditor = ({ onAppLeave }: VisualizeAppProps) => {
const { id: visualizationIdFromUrl } = useParams<{ id: string }>();
const [originatingApp, setOriginatingApp] = useState<string>();
const [originatingPath, setOriginatingPath] = useState<string>();
const [embeddableIdValue, setEmbeddableId] = useState<string>();
const { services } = useKibana<VisualizeServices>();
const [eventEmitter] = useState(new EventEmitter());
Expand Down Expand Up @@ -61,6 +62,7 @@ export const VisualizeEditor = ({ onAppLeave }: VisualizeAppProps) => {
originatingApp: value,
searchSessionId,
embeddableId,
originatingPath: pathValue,
} = stateTransferService.getIncomingEditorState(VisualizeConstants.APP_ID) || {};

if (searchSessionId) {
Expand All @@ -71,6 +73,7 @@ export const VisualizeEditor = ({ onAppLeave }: VisualizeAppProps) => {

setEmbeddableId(embeddableId);
setOriginatingApp(value);
setOriginatingPath(pathValue);
}, [services]);

useEffect(() => {
Expand All @@ -91,6 +94,7 @@ export const VisualizeEditor = ({ onAppLeave }: VisualizeAppProps) => {
isEmbeddableRendered={isEmbeddableRendered}
originatingApp={originatingApp}
setOriginatingApp={setOriginatingApp}
originatingPath={originatingPath}
visualizationIdFromUrl={visualizationIdFromUrl}
setHasUnsavedChanges={setHasUnsavedChanges}
visEditorRef={visEditorRef}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ interface VisualizeEditorCommonProps {
visEditorRef: RefObject<HTMLDivElement>;
originatingApp?: string;
setOriginatingApp?: (originatingApp: string | undefined) => void;
originatingPath?: string;
visualizationIdFromUrl?: string;
embeddableId?: string;
}
Expand All @@ -52,6 +53,7 @@ export const VisualizeEditorCommon = ({
isEmbeddableRendered,
onAppLeave,
originatingApp,
originatingPath,
setOriginatingApp,
visualizationIdFromUrl,
embeddableId,
Expand Down Expand Up @@ -117,6 +119,7 @@ export const VisualizeEditorCommon = ({
isEmbeddableRendered={isEmbeddableRendered}
hasUnappliedChanges={hasUnappliedChanges}
originatingApp={originatingApp}
originatingPath={originatingPath}
setOriginatingApp={setOriginatingApp}
visInstance={visInstance}
stateContainer={appState}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ interface VisualizeTopNavProps {
setHasUnsavedChanges: (value: boolean) => void;
hasUnappliedChanges: boolean;
originatingApp?: string;
originatingPath?: string;
visInstance: VisualizeEditorVisInstance;
setOriginatingApp?: (originatingApp: string | undefined) => void;
stateContainer: VisualizeAppStateContainer;
Expand All @@ -46,6 +47,7 @@ const TopNav = ({
hasUnappliedChanges,
originatingApp,
setOriginatingApp,
originatingPath,
visInstance,
stateContainer,
visualizationIdFromUrl,
Expand Down Expand Up @@ -88,6 +90,7 @@ const TopNav = ({
openInspector,
originatingApp,
setOriginatingApp,
originatingPath,
visInstance,
stateContainer,
visualizationIdFromUrl,
Expand All @@ -104,6 +107,7 @@ const TopNav = ({
hasUnappliedChanges,
openInspector,
originatingApp,
originatingPath,
visInstance,
setOriginatingApp,
stateContainer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ interface TopNavConfigParams {
setHasUnsavedChanges: (value: boolean) => void;
openInspector: () => void;
originatingApp?: string;
originatingPath?: string;
setOriginatingApp?: (originatingApp: string | undefined) => void;
hasUnappliedChanges: boolean;
visInstance: VisualizeEditorVisInstance;
Expand All @@ -79,6 +80,7 @@ export const getTopNavConfig = (
setHasUnsavedChanges,
openInspector,
originatingApp,
originatingPath,
setOriginatingApp,
hasUnappliedChanges,
visInstance,
Expand Down Expand Up @@ -168,6 +170,8 @@ export const getTopNavConfig = (
if (saveOptions.dashboardId) {
path =
saveOptions.dashboardId === 'new' ? '#/create' : `#/view/${saveOptions.dashboardId}`;
} else if (originatingPath) {
path = originatingPath;
}

if (stateTransfer) {
Expand Down Expand Up @@ -232,7 +236,8 @@ export const getTopNavConfig = (
type: VISUALIZE_EMBEDDABLE_TYPE,
searchSessionId: data.search.session.getSessionId(),
};
stateTransfer.navigateToWithEmbeddablePackage(originatingApp, { state });

stateTransfer.navigateToWithEmbeddablePackage(originatingApp, { state, path: originatingPath });
};

const navigateToOriginatingApp = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ export const useVisByValue = (
eventEmitter: EventEmitter,
isChromeVisible: boolean | undefined,
valueInput?: VisualizeInput,
originatingApp?: string
originatingApp?: string,
originatingPath?: string
) => {
const [state, setState] = useState<{
byValueVisInstance?: ByValueVisInstance;
Expand Down Expand Up @@ -55,7 +56,9 @@ export const useVisByValue = (
const originatingAppName = originatingApp
? stateTransferService.getAppNameFromId(originatingApp)
: undefined;
const redirectToOrigin = originatingApp ? () => navigateToApp(originatingApp) : undefined;
const redirectToOrigin = originatingApp
? () => navigateToApp(originatingApp, { path: originatingPath })
: undefined;
chrome?.setBreadcrumbs(
getEditBreadcrumbs({ byValue: true, originatingAppName, redirectToOrigin })
);
Expand All @@ -76,6 +79,7 @@ export const useVisByValue = (
state.visEditorController,
valueInput,
originatingApp,
originatingPath,
]);

useEffect(() => {
Expand Down
3 changes: 2 additions & 1 deletion x-pack/plugins/maps/public/render_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ export async function renderApp(
setAppChrome();

function renderMapApp(routeProps: RouteComponentProps<{ savedMapId?: string }>) {
const { embeddableId, originatingApp, valueInput } =
const { embeddableId, originatingApp, valueInput, originatingPath } =
stateTransfer.getIncomingEditorState(APP_ID) || {};

let mapEmbeddableInput;
Expand All @@ -98,6 +98,7 @@ export async function renderApp(
setHeaderActionMenu={setHeaderActionMenu}
stateTransfer={stateTransfer}
originatingApp={originatingApp}
originatingPath={originatingPath}
history={history}
key={routeProps.match.params.savedMapId ? routeProps.match.params.savedMapId : 'new'}
/>
Expand Down
1 change: 1 addition & 0 deletions x-pack/plugins/maps/public/routes/map_page/map_page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export class MapPage extends Component<Props, State> {
mapEmbeddableInput: props.mapEmbeddableInput,
embeddableId: props.embeddableId,
originatingApp: props.originatingApp,
originatingPath: props.originatingPath,
stateTransfer: props.stateTransfer,
onSaveCallback: this.updateSaveCounter,
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export class SavedMap {
private _mapEmbeddableInput?: MapEmbeddableInput;
private readonly _onSaveCallback?: () => void;
private _originatingApp?: string;
private _originatingPath?: string;
private readonly _stateTransfer?: EmbeddableStateTransfer;
private readonly _store: MapStore;
private _tags: string[] = [];
Expand All @@ -68,19 +69,22 @@ export class SavedMap {
onSaveCallback,
originatingApp,
stateTransfer,
originatingPath,
}: {
defaultLayers?: LayerDescriptor[];
mapEmbeddableInput?: MapEmbeddableInput;
embeddableId?: string;
onSaveCallback?: () => void;
originatingApp?: string;
stateTransfer?: EmbeddableStateTransfer;
originatingPath?: string;
}) {
this._defaultLayers = defaultLayers;
this._mapEmbeddableInput = mapEmbeddableInput;
this._embeddableId = embeddableId;
this._onSaveCallback = onSaveCallback;
this._originatingApp = originatingApp;
this._originatingPath = originatingPath;
this._stateTransfer = stateTransfer;
this._store = createMapStore();
}
Expand Down Expand Up @@ -358,6 +362,7 @@ export class SavedMap {
type: MAP_SAVED_OBJECT_TYPE,
input: updatedMapEmbeddableInput,
},
path: this._originatingPath,
});
return;
} else if (dashboardId) {
Expand Down

0 comments on commit 9b7ee32

Please sign in to comment.