Fixed copyTo by only copying explicit input (#98083)

This commit is contained in:
Devon Thomson 2021-04-26 15:36:28 -04:00 committed by GitHub
parent b6e8e7be14
commit 6d9159e0b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 3 deletions

View file

@ -25,8 +25,13 @@ import {
import { DashboardCopyToCapabilities } from './copy_to_dashboard_action';
import { LazyDashboardPicker, withSuspense } from '../../services/presentation_util';
import { dashboardCopyToDashboardAction } from '../../dashboard_strings';
import { EmbeddableStateTransfer, IEmbeddable } from '../../services/embeddable';
import { createDashboardEditUrl, DashboardConstants } from '../..';
import {
EmbeddableStateTransfer,
IEmbeddable,
PanelNotFoundError,
} from '../../services/embeddable';
import { createDashboardEditUrl, DashboardConstants, DashboardContainer } from '../..';
import { DashboardPanelState } from '..';
interface CopyToDashboardModalProps {
capabilities: DashboardCopyToCapabilities;
@ -53,9 +58,16 @@ export function CopyToDashboardModal({
);
const onSubmit = useCallback(() => {
const dashboard = embeddable.getRoot() as DashboardContainer;
const panelToCopy = dashboard.getInput().panels[embeddable.id] as DashboardPanelState;
if (!panelToCopy) {
throw new PanelNotFoundError();
}
const state = {
input: omit(embeddable.getInput(), 'id'),
type: embeddable.type,
input: {
...omit(panelToCopy.explicitInput, 'id'),
},
};
const path =

View file

@ -91,6 +91,15 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await PageObjects.dashboard.expectOnDashboard(`Editing ${fewPanelsTitle}`);
const newPanelCount = await PageObjects.dashboard.getPanelCount();
expect(newPanelCount).to.be(fewPanelsPanelCount + 1);
// Save & ensure that view mode is applied properly.
await PageObjects.dashboard.clickQuickSave();
await testSubjects.existOrFail('saveDashboardSuccess');
await PageObjects.dashboard.clickCancelOutOfEditMode();
const panelOptions = await dashboardPanelActions.getPanelHeading(markdownTitle);
await dashboardPanelActions.openContextMenu(panelOptions);
await dashboardPanelActions.expectMissingEditPanelAction();
});
it('does not show the current dashboard in the dashboard picker', async () => {