Ver código fonte

删除path2d 兼容ie

haojianlong 5 anos atrás
pai
commit
4c56e3b5ed

+ 1 - 1
saga-web-big/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@saga-web/big",
-    "version": "1.0.92",
+    "version": "1.0.95",
     "description": "上格云建筑信息化库",
     "main": "lib/index.js",
     "types": "lib/index.d.js",

+ 6 - 5
saga-web-big/src/items/floor/SSpaceItem.ts

@@ -21,14 +21,12 @@
 import {
     SColor,
     SPainter,
-    SPath2D,
     SPoint,
     SPolygonUtil,
     SRect,
     STextAlign
 } from "@saga-web/draw/lib";
 import { Space } from "../../types/floor/Space";
-import { SMouseEvent } from "@saga-web/base/lib";
 import { ItemOrder } from "../..";
 import { ItemColor } from "../..";
 import { SGraphItem } from "@saga-web/graph/lib";
@@ -52,7 +50,7 @@ export class SSpaceItem extends SGraphItem {
     /** Y坐标最大值  */
     maxY = Number.MIN_SAFE_INTEGER;
     /** path对象      */
-    private path = new SPath2D();
+    // private path = new SPath2D();
     /** 高亮状态    */
     private _highLightFlag: boolean = false;
     get highLightFlag(): boolean {
@@ -136,7 +134,7 @@ export class SSpaceItem extends SGraphItem {
                         return new SPoint(x, y);
                     }
                 );
-                this.path.polygon(temp);
+                // this.path.polygon(temp);
                 return temp;
             });
         }
@@ -223,7 +221,10 @@ export class SSpaceItem extends SGraphItem {
             painter.brush.color = ItemColor.spaceColor;
         }
         painter.pen.lineWidth = painter.toPx(1);
-        painter.drawPath(this.path);
+        // painter.drawPath(this.path);
+        if (this.pointArr.length) {
+            painter.drawPolygon(this.pointArr[0]);
+        }
 
         if (this.showBaseName) {
             if (this.name && this.name != "null") {

+ 246 - 0
saga-web-big/src/items/floor/SSpaceItemSS.ts

@@ -0,0 +1,246 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *                      :*$@@%$*:                         ;:                ;;    ;;
+ *                    :@@%!  :!@@%:                       %!             ;%%@@%$ =@@@@@@@%;     @%@@@%%%%@@@@@
+ *                   :@%;       :$=                       %%$$$%$$         ;$$  ;$@=   !@$
+ *                   =@!                                  %!              @ $=;%   !@@@%:      !$$$$$$$$$$$$$$=
+ *                   =@*                                  %!              @ $= % %@=   =%@!      %=
+ *              *$%%! @@=        ;=$%%%$*:                %!              @ $= % =%%%%%%@$      *%:         =%
+ *            %@@!:    !@@@%=$@@@@%!  :*@@$:              %!              @ $= % $*     ;@      @*          :%*
+ *          ;@@!          ;!!!;:         ;@%:      =======@%========*     @ $$ % $%*****$@     :@$=*********=@$
+ *          $@*   ;@@@%=!:                *@*
+ *          =@$    ;;;!=%@@@@=!           =@!
+ *           %@$:      =@%: :*@@@*       %@=                    Copyright (c) 2016-2019.  北京上格云技术有限公司
+ *            ;%@@$=$@@%*       *@@@$=%@@%;
+ *               ::;::             ::;::                                              All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+import {
+    SColor,
+    SPainter,
+    SPath2D,
+    SPoint,
+    SPolygonUtil,
+    SRect,
+    STextAlign
+} from "@saga-web/draw/lib";
+import { Space } from "../../types/floor/Space";
+import { SMouseEvent } from "@saga-web/base/lib";
+import { ItemOrder } from "../..";
+import { ItemColor } from "../..";
+import { SGraphItem } from "@saga-web/graph/lib";
+
+/**
+ * 模型空间item
+ *
+ * @author  郝建龙
+ */
+export class SSpaceItem extends SGraphItem {
+    /** 空间所有数据  */
+    data: Space;
+    /** 空间轮廓线坐标list  */
+    readonly pointArr: SPoint[][] = [];
+    /** X坐标最小值  */
+    minX = Number.MAX_SAFE_INTEGER;
+    /** X坐标最大值  */
+    maxX = Number.MIN_SAFE_INTEGER;
+    /** Y坐标最小值  */
+    minY = Number.MAX_SAFE_INTEGER;
+    /** Y坐标最大值  */
+    maxY = Number.MIN_SAFE_INTEGER;
+    /** path对象      */
+    private path = new SPath2D();
+    /** 高亮状态    */
+    private _highLightFlag: boolean = false;
+    get highLightFlag(): boolean {
+        return this._highLightFlag;
+    } // Get highLightFlag
+    set highLightFlag(value: boolean) {
+        this._highLightFlag = value;
+        this.update();
+    } // Set highLightFlag
+    /** 是否显示名字  */
+    private _showBaseName: boolean = false;
+    get showBaseName(): boolean {
+        return this._showBaseName;
+    } // Get showBaseName
+    set showBaseName(value: boolean) {
+        this._showBaseName = value;
+        this.update();
+    } // Set showBaseName
+    /** 是否名字大小  */
+    private _nameSize: number = 10;
+    get nameSize(): number {
+        return this._nameSize;
+    } // Get nameSize
+    set nameSize(value: number) {
+        this._nameSize = value;
+        this.update();
+    } // Set nameSize
+    /** 名字是否缩放  */
+    private _nameTransform: boolean = false;
+    get nameTransform(): boolean {
+        return this._nameTransform;
+    } // Get nameTransform
+    set nameTransform(value: boolean) {
+        this._nameTransform = value;
+        this.update();
+    } // Set nameTransform
+    /** 名字颜色    */
+    private _nameColor: string = "#000000";
+    get nameColor(): string {
+        return this._nameColor;
+    } // Get nameColor
+    set nameColor(value: string) {
+        this._nameColor = value;
+        this.update();
+    } // Set nameColor
+
+    /**
+     * 构造函数
+     *
+     * @param parent    指向父对象
+     * @param data      空间数据
+     */
+    constructor(parent: SGraphItem | null, data: Space) {
+        super(parent);
+        this.data = data;
+        this.zOrder = ItemOrder.spaceOrder;
+        let tempArr = this.data.OutLine;
+        this.name = data.Name || "";
+        if (tempArr && tempArr.length) {
+            this.minX = tempArr[0][0].X;
+            this.maxX = this.minX;
+            this.minY = -tempArr[0][0].Y;
+            this.maxY = this.minY;
+            this.pointArr = tempArr.map((t): SPoint[] => {
+                let temp = t.map(
+                    (it): SPoint => {
+                        let x = it.X,
+                            y = -it.Y;
+                        if (x < this.minX) {
+                            this.minX = x;
+                        }
+                        if (y < this.minY) {
+                            this.minY = y;
+                        }
+                        if (x > this.maxX) {
+                            this.maxX = x;
+                        }
+                        if (y > this.maxY) {
+                            this.maxY = y;
+                        }
+                        return new SPoint(x, y);
+                    }
+                );
+                this.path.polygon(temp);
+                return temp;
+            });
+        }
+    } // Constructor
+
+    /**
+     * Item对象边界区域
+     *
+     * @return SRect
+     */
+    boundingRect(): SRect {
+        return new SRect(
+            this.minX,
+            this.minY,
+            this.maxX - this.minX,
+            this.maxY - this.minY
+        );
+    } // Function boundingRect()
+
+    // /**
+    //  * 鼠标单击事件
+    //  *
+    //  * @param	event         事件参数
+    //  * @return	boolean
+    //  */
+    // onMouseDown(event: SMouseEvent): boolean {
+    //     console.log("spaceDown");
+    //     this.$emit("click", event);
+    //     return true;
+    // } // Function onMouseDown()
+
+    // /**
+    //  * 鼠标移动事件
+    //  *
+    //  * @param event 事件参数
+    //  */
+    // onMouseMove(event: SMouseEvent): boolean {
+    //     return false;
+    // } // Function onMouseMove()
+
+    // /**
+    //  * 鼠标抬起事件
+    //  *
+    //  * @param	event         事件参数
+    //  * @return	boolean
+    //  */
+    // onMouseUp(event: SMouseEvent): boolean {
+    //     console.log("spaceUp");
+    //     return false;
+    // } // Function onClick()
+
+    /**
+     * 判断点是否在区域内
+     *
+     * @param x
+     * @param y
+     */
+    contains(x: number, y: number): boolean {
+        let arr = this.pointArr;
+        if (arr.length < 1 || !SPolygonUtil.pointIn(x, y, arr[0])) {
+            return false;
+        }
+
+        for (let i = 1; i < arr.length; i++) {
+            if (SPolygonUtil.pointIn(x, y, arr[i])) {
+                return false;
+            }
+        }
+        return true;
+    } // Function contains()
+
+    /**
+     * Item绘制操作
+     *
+     * @param   painter       painter对象
+     */
+    onDraw(painter: SPainter): void {
+        painter.pen.color = ItemColor.spaceBorderColor;
+        if (this.selected) {
+            painter.brush.color = ItemColor.selectColor;
+        } else if (this.highLightFlag) {
+            painter.brush.color = ItemColor.spaceHighColor;
+        } else {
+            painter.brush.color = ItemColor.spaceColor;
+        }
+        painter.pen.lineWidth = painter.toPx(1);
+        painter.drawPath(this.path);
+
+        if (this.showBaseName) {
+            if (this.name && this.name != "null") {
+                painter.brush.color = new SColor(this.nameColor);
+                if (this.nameTransform) {
+                    painter.font.size = this.nameSize;
+                } else {
+                    painter.font.size = painter.toPx(this.nameSize);
+                }
+                // painter.font.size = 500;
+                painter.font.textAlign = STextAlign.Center;
+                painter.drawText(
+                    this.name,
+                    this.data.Location.Points[0].X,
+                    -this.data.Location.Points[0].Y
+                );
+            }
+        }
+    } // Function onDraw()
+} // Class SSpaceItem

+ 1 - 1
saga-web-big/tsconfig.json

@@ -1,7 +1,7 @@
 {
     "compilerOptions": {
         "target": "es2015",                         // Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'.
-        "module": "es2015",                         // Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'.
+        "module": "commonjs",                         // Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'.
         "outDir": "./lib",                          // 编译后生成的文件目录
         "strict": true,                             // 开启严格的类型检测
         "declaration": true,                        // 生成 `.d.ts` 文件

+ 11 - 0
saga-web-draw/src/types/SPoint.ts

@@ -103,4 +103,15 @@ export class SPoint {
         p.y = this.x * mat.c + this.y * mat.d + mat.f;
         return p;
     } // Function matrixTransform()
+
+    /**
+     * 平移点
+     *
+     * @param   dx      X轴位移
+     * @param   dy      Y轴位移
+     */
+    translate(dx: number, dy: number): void {
+        this.x += dx;
+        this.y += dy;
+    } // Function translate()
 } // Class SPoint

+ 3 - 2
saga-web-fengmap/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@saga-web/feng-map",
-    "version": "1.0.27",
+    "version": "1.0.29",
     "description": "上格云Web平面图。",
     "main": "lib/index.js",
     "types": "lib/index.d.js",
@@ -20,6 +20,7 @@
         "registry": "http://192.168.200.80:8081/repository/npm-hosted/"
     },
     "devDependencies": {
+        "@types/es6-promise": "^3.3.0",
         "@types/jest": "^24.0.15",
         "@typescript-eslint/eslint-plugin": "^1.12.0",
         "@typescript-eslint/parser": "^1.12.0",
@@ -32,7 +33,7 @@
         "typescript": "^3.9.3"
     },
     "dependencies": {
-        "@saga-web/big": "1.0.92",
+        "@saga-web/big": "1.0.95",
         "axios": "^0.18.0"
     }
 }