Prechádzať zdrojové kódy

feat:js线性图元

ananzhusen 1 rok pred
rodič
commit
d9f117d5f2

+ 9 - 1
index.html

@@ -30,7 +30,13 @@
     <script src="//at.alicdn.com/t/c/font_4042197_useutdj9jks.js"></script> -->
     <link href="/icon/v/iconfont.css" rel="stylesheet" />
     <script src="/icon/v/iconfont.js"></script> 
-
+    <script>
+      window.jsDiagramNum = 10; //1450
+      //电力 749
+      //物联网 613
+      //其他 88
+      //所有 1450
+    </script>
   </head>
   <body>
     <div id="app"></div>
@@ -40,11 +46,13 @@
         return this.replace(new RegExp(s1, 'gm'), s2);
       };
     </script>
+    <!-- <script defer src="/diagram/测试图形库.js"></script>  -->
     <script defer src="/js/html2canvas.js"></script>
     <script defer src="/js/canvas2svg.js"></script>
     <script defer src="/js/flv.min.js"></script>
     <script defer src="/js/marked.min.js"></script>
     <script defer src="/js/echarts.min.js"></script>
     <script defer src="/js/mycharts.js"></script>
+    <script src="/js/rg.js"></script>
   </body>
 </html>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
public/diagram/测试图形库.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
public/js/rg.js


+ 15 - 0
src/views/Preview.vue

@@ -34,6 +34,21 @@ const bgColor = ref('#1e2430');
 onMounted(() => {
   meta2d = new Meta2d(meta2dDom.value, meta2dOptions);
   registerBasicDiagram();
+  //js线性图元
+  if (globalThis.meta2dTools?.length !== globalThis.jsDiagramNum) {
+    let jsLoadInterval = setInterval(() => {
+      if (globalThis.meta2dTools?.length == globalThis.jsDiagramNum) {
+        if (globalThis.registerToolsNew) {
+            globalThis.registerToolsNew();
+        }
+        clearInterval(jsLoadInterval);
+      }
+    }, 500);
+  } else {
+    if (globalThis.registerToolsNew) {
+      globalThis.registerToolsNew();
+    }
+  }
   open();
   meta2d.on('opened', opened);
   window.addEventListener('message', dealWithMessage);

+ 62 - 9
src/views/components/Graphics.vue

@@ -508,6 +508,7 @@ const templateCaches = [];
 const componentCaches = [];
 const materials = [];
 const pngs = [];
+let jsDiagrams = [];
 
 const components = [
   {
@@ -645,6 +646,7 @@ const groupChange = async (name: string) => {
         loading.value = true;
         pngs.push(...(await getFolders('png')));
         pngs.push(...(await getFolders('svg', true)));
+        pngs.push(...jsDiagrams);
         loading.value = false;
         const _pngs: string = await localforage.getItem('le5leV-pngs');
         if (_pngs) {
@@ -1182,15 +1184,24 @@ const dragStart = async (event: DragEvent | MouseEvent|TouchEvent, item: any) =>
     }
   } else if (item.data) {
     // 普通图元
-    data = item.data;
-    if(data.name==='table'){
-      if(data.tableType === 'longlist'){
-        const _data = new Array(100).fill(0)
-        .map((_, row) => new Array(10).fill(0)
-        .map((_, column) => `${row}, ${column}`));
-        _data.splice(0, 0, new Array(10).fill(0).map((_, i) =>String.fromCharCode(65+i)));
-        data.data = _data;
-        console.log("data",data);
+    if(item.fullname || item.subClassName){
+      // data = item;
+      item.name = item.fullname;
+      item.width = item.data.rect.width*4;
+      item.height = item.data.rect.height*4;
+      delete item.rect;
+      data = item;
+    }else{
+      data = item.data;
+      if(data.name==='table'){
+        if(data.tableType === 'longlist'){
+          const _data = new Array(100).fill(0)
+          .map((_, row) => new Array(10).fill(0)
+          .map((_, column) => `${row}, ${column}`));
+          _data.splice(0, 0, new Array(10).fill(0).map((_, i) =>String.fromCharCode(65+i)));
+          data.data = _data;
+          // console.log("data",data);
+        }
       }
     }
   } else if (item.image) {
@@ -2210,6 +2221,19 @@ const manageConfirm = () => {
 };
 
 onMounted(() => {
+  //js线性图元
+  setTimeout(()=>{
+    if (globalThis.meta2dTools?.length !== globalThis.jsDiagramNum) {
+      let jsLoadInterval = setInterval(() => {
+        if (globalThis.meta2dTools?.length == globalThis.jsDiagramNum) {
+          getJsDiagram();
+          clearInterval(jsLoadInterval);
+        }
+      }, 500);
+    } else {
+      getJsDiagram();
+    }
+  },100);
   groupChange('方案');
   document.addEventListener('dragstart', dragstart, false);
   document.addEventListener('dragend', dragend, false);
@@ -2222,6 +2246,32 @@ onMounted(() => {
   }, 2000);
 });
 
+function getJsDiagram() {
+  if (globalThis.registerToolsNew) {
+    (window as any).registerToolsNew();
+    const temJSClass = [];
+    const temJSMaterial = [];
+    globalThis.meta2dTools.forEach((item: any) => {
+      if (temJSClass.indexOf(item.subClassName) === -1) {
+        temJSClass.push(item.subClassName);
+        temJSMaterial.push({
+          name: item.subClassName,
+          show: true,
+          list: [],
+        });
+      }
+      temJSMaterial.forEach((_class: any) => {
+        if (_class.name === item.subClassName) {
+          _class.list.push(item);
+        }
+      });
+    });
+    jsDiagrams.push(...temJSMaterial);
+    // 切换回页面仍需要注册,所以此处不清空
+    // window.meta2dTools = undefined;
+  }
+}
+
 const changeAssets = (e)=>{
   if(e){
     activeAssets.value = 'system';
@@ -2474,6 +2524,9 @@ onUnmounted(() => {
               stroke-dasharray: none;
               opacity: 1;
             }
+            path{
+              stroke: var(--color) !important;
+            }
           }
         }
 

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov