Explorar o código

big:feat:增加下载jsonz

haojianlong %!s(int64=4) %!d(string=hai) anos
pai
achega
1d30bac260

+ 4 - 2
persagy-web-big/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@persagy-web/big",
-    "version": "2.2.20",
+    "version": "2.2.21",
     "description": "博锐尚格建筑信息化库",
     "main": "lib/index.js",
     "types": "lib/index.d.js",
@@ -41,6 +41,8 @@
         "typescript": "^3.9.3"
     },
     "dependencies": {
-        "@persagy-web/graph": "2.2.24"
+        "@persagy-web/graph": "2.2.24",
+        "axios": "^0.18.0",
+        "pako": "^1.0.10"
     }
 }

+ 7 - 1
persagy-web-big/src/index.ts

@@ -43,6 +43,9 @@ import { SRectSelectItem } from "./items/SRectSelectItem";
 import { SBoardItem } from "./items/floor/SBoardItem";
 import { SArrowItem } from "./items/SArrowItem";
 import { SArrowPoly } from "./items/SArrowPoly";
+import getJsonz from "./utils/getJsonz";
+import unzip from "./utils/unzip";
+import unzipBase64 from "./utils/unzipBase64";
 
 export {
     SLayerItem,
@@ -63,5 +66,8 @@ export {
     SRectSelectItem,
     SBoardItem,
     SArrowItem,
-    SArrowPoly
+    SArrowPoly,
+    getJsonz,
+    unzip,
+    unzipBase64
 };

+ 52 - 0
persagy-web-big/src/utils/getJsonz.ts

@@ -0,0 +1,52 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2020.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+import Axios from "axios";
+import unzip from "./unzip";
+
+export default function getJsonz(url: string) {
+    return new Promise((resolve, reject): void => {
+        Axios({
+            method: "get",
+            url: url,
+            data: {},
+            responseType: "blob"
+        })
+            .then((res: any) => {
+                let blob = res.data;
+                unzip(blob)
+                    .then((jsonData: any) => {
+                        resolve(jsonData);
+                    })
+                    .catch((error: any) => {
+                        reject(error);
+                    });
+            })
+            .catch((res: any) => {
+                reject(res);
+            });
+    });
+}

+ 56 - 0
persagy-web-big/src/utils/unzip.ts

@@ -0,0 +1,56 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2020.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+import unzipBase64 from "./unzipBase64";
+
+/**
+ * 解压数据
+ *
+ * @param blob     文件
+ * @return 解压后的数据
+ */
+export default function unzip(blob: any): any {
+    let reader = new FileReader();
+    reader.readAsBinaryString(blob);
+    return new Promise(resolve => {
+        reader.onload = (readerEvt: any) => {
+            let binaryString = readerEvt.target.result;
+            //解压数据
+            let base64Data = btoa(binaryString);
+            let unGzipData = unzipBase64(base64Data);
+            try {
+                const data = unGzipData.entityList
+                    ? unGzipData.entityList[0].Elements
+                    : unGzipData.EntityList[0].Elements;
+                resolve(data);
+            } catch (e) {
+                console.log(e);
+                console.log(unGzipData);
+                resolve("error");
+            }
+        };
+    });
+}

+ 44 - 0
persagy-web-big/src/utils/unzipBase64.ts

@@ -0,0 +1,44 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2020.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+// @ts-ignore
+import pako from "pako";
+
+/**
+ * 将base64数据转为正常数据
+ *
+ * @param b64Data    base64数据\
+ * @return 处理后的数据
+ */
+export default function unzipBase64(b64Data: any): any {
+    let strData = atob(b64Data);
+    let charData = strData.split("").map(x => {
+        return x.charCodeAt(0);
+    });
+    let binData = new Uint8Array(charData);
+    let data = pako.inflate(binData, { to: "string" });
+    return eval("(" + data + ")");
+}