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() {