diff --git a/app/src/modules/insights/components/panel.vue b/app/src/modules/insights/components/panel.vue index 4b19828fd5..ae1e79230a 100644 --- a/app/src/modules/insights/components/panel.vue +++ b/app/src/modules/insights/components/panel.vue @@ -244,10 +244,9 @@ export default defineComponent({ } function onPointerUp() { + dragging.value = false; if (props.editMode === false) return; emit('update', editedPosition); - - dragging.value = false; window.removeEventListener('pointerup', onPointerUp); window.removeEventListener('pointermove', onPointerMove); diff --git a/app/src/modules/insights/components/workspace.vue b/app/src/modules/insights/components/workspace.vue index 21a94a5407..db919beadc 100644 --- a/app/src/modules/insights/components/workspace.vue +++ b/app/src/modules/insights/components/workspace.vue @@ -5,9 +5,9 @@ :key="panel.id" :panel="panel" :edit-mode="editMode" - @update="stagePanelEdits($event, panel.id)" - @delete="confirmDeletePanel = panel.id" - @duplicate="duplicatePanel(panel)" + @update="$emit('update', { edits: $event, id: panel.id })" + @delete="$emit('delete', panel.id)" + @duplicate="$emit('duplicate', panel)" /> diff --git a/app/src/modules/insights/routes/dashboard.vue b/app/src/modules/insights/routes/dashboard.vue index 6133840d9a..53e2a6c31e 100644 --- a/app/src/modules/insights/routes/dashboard.vue +++ b/app/src/modules/insights/routes/dashboard.vue @@ -52,7 +52,14 @@ - + , key: string = props.panelKey) { + function stagePanelEdits(event: { edits: Partial; id?: string }) { + const key = event.id ?? props.panelKey; + if (key === '+') { stagedPanels.value = [ ...stagedPanels.value, { id: `_${nanoid()}`, dashboard: props.primaryKey, - ...edits, + ...event.edits, }, ]; } else { if (stagedPanels.value.some((panel) => panel.id === key)) { stagedPanels.value = stagedPanels.value.map((panel) => { if (panel.id === key) { - return merge({ id: key, dashboard: props.primaryKey }, panel, edits); + return merge({ id: key, dashboard: props.primaryKey }, panel, event.edits); } return panel; }); } else { - stagedPanels.value = [...stagedPanels.value, { id: key, dashboard: props.primaryKey, ...edits }]; + stagedPanels.value = [...stagedPanels.value, { id: key, dashboard: props.primaryKey, ...event.edits }]; } } } function stageConfiguration(edits: Partial) { - stagePanelEdits(edits); + stagePanelEdits({ edits }); router.push(`/insights/${props.primaryKey}`); } @@ -303,7 +312,7 @@ export default defineComponent({ const newPanel = omit(merge({}, panel), 'id'); newPanel.position_x = newPanel.position_x + 2; newPanel.position_y = newPanel.position_y + 2; - stagePanelEdits(newPanel, '+'); + stagePanelEdits({ edits: newPanel, id: '+' }); } function toggleFullScreen() {