fix: also include selected in undo redo object

This commit is contained in:
Shariq Ansari 2023-05-02 20:28:33 +05:30
parent 9037c4140c
commit b6aa76b7ef
5 changed files with 19 additions and 16 deletions

View file

@ -168,7 +168,7 @@ function onDrop(event) {
y: node.position.y - node.dimensions.height / 2
};
stop();
store.selected = node;
store.workflow.selected = node;
store.ref_history.commit();
}
},
@ -193,11 +193,19 @@ onMounted(() => store.fetch());
<Sidebar />
</div>
<div class="workflow-container" @drop="onDrop">
<VueFlow v-model="store.workflow.elements" connection-mode="loose" @dragover="onDragOver">
<VueFlow
v-model="store.workflow.elements"
connection-mode="loose"
@dragover="onDragOver"
>
<Background pattern-color="#aaa" gap="10" />
<Panel :position="PanelPosition.TopRight">
<div class="empty-state">
<div class="btn btn-md drag-handle" :draggable="true" @dragstart="onDragStart">
<div
class="btn btn-md drag-handle"
:draggable="true"
@dragstart="onDragStart"
>
Drag to add state
</div>
</div>

View file

@ -27,13 +27,13 @@ const { findNode } = useVueFlow();
watch(
() => findNode(props.node.id)?.selected,
val => {
store.selected = val ? props.node : "";
store.workflow.selected = val ? props.node : "";
}
);
</script>
<template>
<div class="node" tabindex="0" @click.stop="store.selected = node">
<div class="node" tabindex="0" @click.stop="store.workflow.selected = node">
<div v-if="node.data.action" class="node-label">{{ node.data.action }}</div>
<div v-else class="node-placeholder text-muted">{{ __("No Label") }}</div>
<Handle

View file

@ -1,16 +1,13 @@
<script setup>
import { ref, computed, nextTick } from "vue";
import { useStore } from "../store";
import { useVueFlow } from "@vue-flow/core";
let store = useStore();
let { nodes } = useVueFlow();
let title = ref("Workflow Details");
let doc = computed(() => {
return store.selected ? store.selected.data : store.workflow_doc;
return store.workflow.selected ? store.workflow.selected.data : store.workflow_doc;
});
let properties = computed(() => {
@ -18,7 +15,7 @@ let properties = computed(() => {
let field = $(".field input[data-fieldname!='document_type']").first();
if (field.val() === "") field.focus();
});
if (store.selected && "action" in store.selected.data) {
if (store.workflow.selected && "action" in store.workflow.selected.data) {
title.value = "Transition Properties";
return store.transitionfields.filter(df => {
if (in_list(["action", "allowed", "allow_self_approval", "condition"], df.fieldname)) {
@ -26,7 +23,7 @@ let properties = computed(() => {
}
return false;
});
} else if (store.selected && "state" in store.selected.data) {
} else if (store.workflow.selected && "state" in store.workflow.selected.data) {
title.value = "State Properties";
return store.statefields;
}

View file

@ -26,13 +26,13 @@ const { findNode } = useVueFlow();
watch(
() => findNode(props.node.id)?.selected,
val => {
store.selected = val ? props.node : "";
store.workflow.selected = val ? props.node : "";
}
);
</script>
<template>
<div class="node" tabindex="0" @click.stop="store.selected = node">
<div class="node" tabindex="0" @click.stop="store.workflow.selected = node">
<div v-if="node.data.state" class="node-label">{{ node.data.state }}</div>
<div v-else class="node-placeholder text-muted">{{ __("No Label") }}</div>
<Handle

View file

@ -6,8 +6,7 @@ import { useManualRefHistory, onKeyDown } from "@vueuse/core";
export const useStore = defineStore("workflow-builder-store", () => {
let workflow_name = ref(null);
let workflow_doc = ref(null);
let workflow = ref({ elements: [] });
let selected = ref(null);
let workflow = ref({ elements: [], selected: null });
let workflowfields = ref([]);
let statefields = ref([]);
let transitionfields = ref([]);
@ -94,7 +93,6 @@ export const useStore = defineStore("workflow-builder-store", () => {
workflow_name,
workflow_doc,
workflow,
selected,
workflowfields,
statefields,
transitionfields,