Browse Source

feat:conflict

ananzhusen 1 year ago
parent
commit
2ab8e08fa3
3 changed files with 165 additions and 2 deletions
  1. 149 1
      src/services/common.ts
  2. 8 0
      src/views/components/Header.vue
  3. 8 1
      src/views/components/View.vue

+ 149 - 1
src/services/common.ts

@@ -1124,4 +1124,152 @@ export const useExtendData = () => {
     getExtendData,
     setExtendData,
   };
-};
+};
+
+export function dealDataBeforeOpen(data){
+  data.oldV = false;
+  data.pens.forEach((pen)=>{
+    if(pen.image){
+      pen.image = pen.image.split('?')[0];
+    }
+    if (!(pen.animations && pen.animations.length)) {
+      if (!pen.type && pen.frames) {
+        pen.animations = [
+          {
+            name: '动画1',
+            temType: 'id',
+            animate: 'custom',
+            frames: deepClone(pen.frames),
+            animateCycle: pen.animateCycle,
+            keepAnimateState: pen.keepAnimateState,
+            linear: pen.linear,
+            autoPlay: pen.autoPlay,
+            nextAnimate: pen.nextAnimate,
+          },
+        ];
+        data.oldV = true;
+      } else if (pen.type && pen.lineAnimateType !== undefined) {
+        pen.animations = [
+          {
+            name: '动画1',
+            temType: 'id',
+            animateSpan: pen.animateSpan || 1,
+            lineAnimateType: pen.lineAnimateType,
+            animateColor: pen.animateColor,
+            animateReverse: pen.animateReverse,
+            animateCycle: pen.animateCycle,
+            animateLineWidth: pen.animateLineWidth,
+            autoPlay: pen.autoPlay,
+            nextAnimate: pen.nextAnimate,
+          },
+        ];
+        data.oldV = true;
+      }
+    }
+    if (pen.events?.length) {
+      for (let i = 0; i < pen.events.length; i++) {
+        const event = pen.events[i];
+        // pen.events.forEach((event)=>{
+        if (event.action !== undefined) {
+          data.oldV = true;
+          // 老格式
+          if (event.name === 'valueUpdate') {
+            if (event.where && event.where.key) {
+              if (!pen.realTimes) {
+                pen.realTimes = [];
+              }
+              let index = pen.realTimes.findIndex(
+                (el) => el.key === event.where.key
+              );
+              let trigger = {
+                name: '状态1',
+                conditionType: 'and',
+                conditions: [
+                  {
+                    type: event.where?.type === 'custom' ? 'fn' : '',
+                    key: event.where?.key,
+                    operator: event.where?.comparison,
+                    value: event.where?.value,
+                    fnJs: event.where?.fnJs,
+                  },
+                ],
+                actions: [
+                  {
+                    action: event.action,
+                    value: event.value,
+                    params: event.params,
+                  },
+                ],
+              };
+              if (index !== -1) {
+                pen.realTimes[index].triggers.push(trigger);
+              } else {
+                pen.realTimes.push({
+                  label: event.where.key,
+                  key: event.where.key,
+                  triggers: [trigger],
+                });
+              }
+              pen.events.splice(i, 1);
+              i--;
+            } else {
+              //TODO 没有选择触发条件的情况
+              if (event.value.indexOf('pen.value') !== -1) {
+                if (!pen.realTimes) {
+                  pen.realTimes = [];
+                }
+                pen.realTimes.push({
+                  label: 'value',
+                  key: 'value',
+                  triggers: [
+                    {
+                      name: '状态1',
+                      conditionType: 'and',
+                      conditions: [],
+                      actions: [
+                        {
+                          action: event.action,
+                          value: event.value,
+                          params: event.params,
+                        },
+                      ],
+                    },
+                  ],
+                });
+                pen.events.splice(i, 1);
+                i--;
+              }
+            }
+          } else {
+            event.conditionType = 'and';
+            event.actions = [
+              {
+                action: event.action,
+                value: event.value,
+                params: event.params,
+              },
+            ];
+
+            if (event.where && event.where.type) {
+              event.conditions = [
+                {
+                  type: event.where.type === 'custom' ? 'fn' : '',
+                  key: event.where.key,
+                  operator: event.where.comparison,
+                  //valueType target
+                  value: event.where.value,
+                  fnJs: event.where.fnJs,
+                },
+              ];
+            }
+            delete event.action;
+            delete event.value;
+            delete event.params;
+            delete event.where;
+          }
+        }
+        // });
+      }
+    }
+  })
+}

+ 8 - 0
src/views/components/Header.vue

@@ -774,8 +774,16 @@ const openJson = async (file: File) => {
     if(!data.color){
       data.color = '#bdc7db';
     }
+<<<<<<< HEAD
     if(!data.width){data.width= 1920};
     if(!data.height){data.height= 1080};
+=======
+    dealDataBeforeOpen(data);
+    if(!(data as any).oldV){
+      if(!data.width){data.width= 1920};
+      if(!data.height){data.height= 1080};
+    }
+>>>>>>> ceec9b7 (feat:2d格式转大屏格式)
     meta2d.open(data);
   } catch (e) {
     console.error(e);

+ 8 - 1
src/views/components/View.vue

@@ -1167,7 +1167,7 @@ const deal2DToV = ()=>{
       return;
     }
     let scale = meta2d.store.data.scale;
-    if(Math.abs(rect.width/scale-1920)<5&&Math.abs(rect.height/scale-1080)<5){ //1920 1080
+    if(!(meta2d.store.data as any).oldV&&Math.abs(rect.width/scale-1920)<5&&Math.abs(rect.height/scale-1080)<5){ //1920 1080
       //大致估算范围是大屏默认范围
       return;
     }
@@ -1184,7 +1184,14 @@ const deal2DToV = ()=>{
       }
     });
     let pens = meta2d.store.data.pens.filter((pen)=>!pen.parentId);
+    meta2d.canvas.opening = false;
     meta2d.translatePens(pens,origin.x - rect.x,origin.y - rect.y);
+    meta2d.store.data.pens.forEach((pen)=>{
+      if(!pen.type){
+        meta2d.canvas.updateLines(pen);
+      }
+    });
+    meta2d.render(true);
   }
 }