瀏覽代碼

prevent ressource to be registred multiple time

tripeur 4 年之前
父節點
當前提交
cdef313ce8
共有 4 個文件被更改,包括 15 次插入8 次删除
  1. 9 4
      lib/Timeline.js
  2. 0 0
      lib/Timeline.js.map
  3. 1 1
      package.json
  4. 5 3
      src/Timeline.ts

+ 9 - 4
lib/Timeline.js

@@ -125,9 +125,10 @@ let Timeline = class Timeline extends lit_element_1.LitElement {
     }
     addRessources(list) {
         return list.map((r) => this.addRessource(r));
+        0;
     }
     addRessource(ressource, pos = Infinity) {
-        var _a;
+        var _a, _b;
         const existingRessource = this.getRessourceFromId(ressource.id);
         if (existingRessource) {
             return existingRessource;
@@ -136,18 +137,22 @@ let Timeline = class Timeline extends lit_element_1.LitElement {
         if (r.parent !== undefined) {
             r.parent = (_a = this.getRessourceFromId(r.parent.id)) !== null && _a !== void 0 ? _a : this.addRessource(r.parent);
             const idx = this.rows.indexOf(r.parent);
+            const alreadyChild = (_b = r.parent) === null || _b === void 0 ? void 0 : _b.children.some((c) => c.id == r.id);
             if (idx > -1) {
                 if (pos <= idx) {
                     this.rows.splice(idx + 1, 0, r);
-                    r.parent.children = [r, ...r.parent.children];
+                    if (!alreadyChild)
+                        r.parent.children = [r, ...r.parent.children];
                 }
                 else if (pos < idx + r.parent.children.length) {
                     this.rows.splice(pos, 0, r);
-                    r.parent.children.splice(pos - idx, 0, r);
+                    if (!alreadyChild)
+                        r.parent.children.splice(pos - idx, 0, r);
                 }
                 else {
                     this.rows.splice(idx + r.parent.children.length, 0, r);
-                    r.parent.children = [...r.parent.children, r];
+                    if (!alreadyChild)
+                        r.parent.children = [...r.parent.children, r];
                 }
             }
             else {

File diff suppressed because it is too large
+ 0 - 0
lib/Timeline.js.map


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "jc-timeline",
-  "version": "0.2.7",
+  "version": "0.2.8",
   "description": "web component to manage ressources in time",
   "main": "./lib/main.js",
   "types": "./lib/main.d.ts",

+ 5 - 3
src/Timeline.ts

@@ -175,6 +175,7 @@ class Timeline extends LitElement {
   }
   addRessources(list: Array<IRessource>): Array<Ressource> {
     return list.map((r) => this.addRessource(r));
+    0;
   }
   // Ressource management
   /**
@@ -192,16 +193,17 @@ class Timeline extends LitElement {
     if (r.parent !== undefined) {
       r.parent = this.getRessourceFromId(r.parent.id) ?? this.addRessource(r.parent);
       const idx = this.rows.indexOf(r.parent as Ressource);
+      const alreadyChild = r.parent?.children.some((c) => c.id == r.id);
       if (idx > -1) {
         if (pos <= idx) {
           this.rows.splice(idx + 1, 0, r);
-          r.parent.children = [r, ...r.parent.children];
+          if (!alreadyChild) r.parent.children = [r, ...r.parent.children];
         } else if (pos < idx + r.parent.children.length) {
           this.rows.splice(pos, 0, r);
-          r.parent.children.splice(pos - idx, 0, r);
+          if (!alreadyChild) r.parent.children.splice(pos - idx, 0, r);
         } else {
           this.rows.splice(idx + r.parent.children.length, 0, r);
-          r.parent.children = [...r.parent.children, r];
+          if (!alreadyChild) r.parent.children = [...r.parent.children, r];
         }
       } else {
         throw new Error("Not able to create ressource parent.\n" + r.id);

Some files were not shown because too many files changed in this diff