From 469b39d031378200b2337851aaef765f359ca883 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Thu, 9 Feb 2023 13:36:23 +0100
Subject: [PATCH] Create lesson example

---
 example/src/App.vue | 56 +++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 52 insertions(+), 4 deletions(-)

diff --git a/example/src/App.vue b/example/src/App.vue
index 5750f67..49fd884 100644
--- a/example/src/App.vue
+++ b/example/src/App.vue
@@ -90,12 +90,25 @@ import NumberCounter from "./components/NumberCounter.vue";
         :rows="parseInt(lesson1Rows)"
         class="bordered"
         context="lesson"
+        grid-id="lesson-plan"
         @itemChanged="handleLessonMoved"
       >
         <template #item="item">
           <div class="container">{{ item }}</div>
         </template>
       </drag-grid>
+      <drag-grid
+        :value="lessons1"
+        :cols="1"
+        :rows="10"
+        context="lesson"
+        grid-id="lesson-storage"
+        @itemChanged="handleLessonDropInContainer"
+      >
+        <template #item="item">
+          <div class="container">{{ item }}</div>
+        </template>
+      </drag-grid>
     </div>
   </div>
 </template>
@@ -131,10 +144,18 @@ export default {
           this.lesson2X = lesson.x;
           this.lesson2Y = lesson.y;
           break;
+        case "lesson3":
+          this.lesson3X = lesson.x;
+          this.lesson3Y = lesson.y;
+          this.lesson3inPlan = true;
+          break;
         default:
           console.error("Something is wrong here!");
       }
     },
+    handleLessonDropInContainer(lesson) {
+      if (lesson.key === "lesson3") this.lesson3inPlan = false;
+    },
   },
   data() {
     return {
@@ -180,14 +201,21 @@ export default {
       lesson1Y: 1,
       lesson2X: 2,
       lesson2Y: 1,
+      lesson3X: -1,
+      lesson3Y: -1,
+      lesson3inPlan: false,
     };
   },
   computed: {
     lessons1() {
       return [
         {
-          x: this.lesson1X,
-          y: this.lesson1Y,
+          x: (grid) => {
+            return grid.gridId === "lesson-plan" ? this.lesson1X : 0;
+          },
+          y: (grid) => {
+            return grid.gridId === "lesson-plan" ? this.lesson1Y : 0;
+          },
           w: 1,
           h: this.lesson1Length,
           key: "lesson1",
@@ -195,14 +223,34 @@ export default {
         },
         {
           x: (grid) => {
-            return grid.context === "lesson" ? this.lesson2X : 1;
+            return grid.gridId === "lesson-plan" ? this.lesson2X : 0;
+          },
+          y: (grid) => {
+            return grid.gridId === "lesson-plan" ? this.lesson2Y : 0;
           },
-          y: this.lesson2Y,
           w: 1,
           h: parseInt(this.lesson1Length) + 1,
           key: "lesson2",
           data: {},
         },
+        {
+          x: (grid) => {
+            if (this.lesson3inPlan) {
+              return grid.gridId === "lesson-plan" ? this.lesson3X : -1;
+            }
+            return grid.gridId === "lesson-plan" ? -1 : 0;
+          },
+          y: (grid) => {
+            if (this.lesson3inPlan) {
+              return grid.gridId === "lesson-plan" ? this.lesson3Y : -1;
+            }
+            return grid.gridId === "lesson-plan" ? -1 : 0;
+          },
+          w: 1,
+          h: parseInt(this.lesson1Length) + 1,
+          key: "lesson3",
+          data: {},
+        },
       ];
     },
   },
-- 
GitLab