|
@@ -15,36 +15,50 @@
|
|
* limitations under the License.
|
|
* limitations under the License.
|
|
*/
|
|
*/
|
|
|
|
|
|
-import { defineComponent } from 'vue'
|
|
+import { defineComponent, reactive } from 'vue'
|
|
import { DagSidebar } from './dag-sidebar'
|
|
import { DagSidebar } from './dag-sidebar'
|
|
import { DagCanvas } from './dag-canvas'
|
|
import { DagCanvas } from './dag-canvas'
|
|
|
|
+import { useDagStore } from '@/store/project/dynamic/dag'
|
|
import styles from './index.module.scss'
|
|
import styles from './index.module.scss'
|
|
|
|
|
|
const DynamicDag = defineComponent({
|
|
const DynamicDag = defineComponent({
|
|
name: 'DynamicDag',
|
|
name: 'DynamicDag',
|
|
setup() {
|
|
setup() {
|
|
- const handelDragend = () => {
|
|
+ const dragged = reactive({
|
|
- //console.log(e, task)
|
|
+ x: 0,
|
|
- //if (readonly.value) {
|
|
+ y: 0,
|
|
- // e.preventDefault()
|
|
+ task: ''
|
|
- // return
|
|
+ })
|
|
- //}
|
|
+
|
|
- //dragged.value = {
|
|
+ const handelDragstart = (e: DragEvent, task: string) => {
|
|
- // x: e.offsetX,
|
|
+ dragged.x = e.offsetX
|
|
- // y: e.offsetY,
|
|
+ dragged.y = e.offsetY
|
|
- // type: task
|
|
+ dragged.task = task
|
|
- //}
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const handelDrop = (e: DragEvent) => {
|
|
|
|
+ if (!dragged.task) return
|
|
|
|
+
|
|
|
|
+ dragged.x = e.offsetX
|
|
|
|
+ dragged.y = e.offsetY
|
|
|
|
+
|
|
|
|
+ const shapes = useDagStore().getDagTasks
|
|
|
|
+ if (shapes) {
|
|
|
|
+ shapes.push(dragged)
|
|
|
|
+ }
|
|
|
|
+ useDagStore().setDagTasks(shapes)
|
|
}
|
|
}
|
|
|
|
|
|
return {
|
|
return {
|
|
- handelDragend
|
|
+ handelDragstart,
|
|
|
|
+ handelDrop
|
|
}
|
|
}
|
|
},
|
|
},
|
|
render() {
|
|
render() {
|
|
return (
|
|
return (
|
|
<div class={styles['workflow-dag']}>
|
|
<div class={styles['workflow-dag']}>
|
|
- <DagSidebar onDragend={this.handelDragend} />
|
|
+ <DagSidebar onDragstart={this.handelDragstart} />
|
|
- <DagCanvas />
|
|
+ <DagCanvas onDrop={this.handelDrop} />
|
|
</div>
|
|
</div>
|
|
)
|
|
)
|
|
}
|
|
}
|