import { SPolylineItem, ItemOrder, SItemStatus } from '@saga-web/big/lib' import { SPainter, SColor } from '@saga-web/draw' import { SAnchorItem, SGraphItem } from '@saga-web/graph/lib' import { Relation } from '../types/Relation' import { SPoint } from '@saga-web/draw/lib' import { Point } from '@saga-web/big/lib/types/Point' /** * 管道item * * */ export class TipelineItem extends SPolylineItem { /** 起始锚点 */ startAnchor: SAnchorItem | null = null /** 结束锚点 */ endAnchor: SAnchorItem | null = null /** 对应的图例ID */ _graphElementId: string = '' get graphElementId(): string { return this._graphElementId } set graphElementId(v: string) { this._graphElementId = v if (this.data) { this.data.GraphElementId = this._graphElementId } } /** 关联节点1ID */ _node1Id: string = '' get node1Id(): string { return this._node1Id } set node1Id(v: string) { this._node1Id = v if (this.data) { this.data.Node1ID = this._node1Id } } /** 关联节点2ID */ _node2Id: string = '' get node2Id(): string { return this._node2Id } set node2Id(v: string) { this._node2Id = v if (this.data) { this.data.Node2ID = this._node2Id } } /** 关联锚点1ID */ _anchor1ID: string = '' get anchor1ID(): string { return this._anchor1ID } set anchor1ID(v: string) { this._anchor1ID = v if (this.data) { this.data.Anchor1ID = this._anchor1ID } } /** 关联锚点2ID */ _anchor2ID: string = '' get anchor2ID(): string { return this._anchor2ID } set anchor2ID(v: string) { this._anchor2ID = v if (this.data) { this.data.Anchor2ID = this._anchor2ID } } /** 是否蒙版遮罩 */ _maskFlag: boolean = false get maskFlag(): boolean { return this._maskFlag } set maskFlag(v: boolean) { if (v === this._maskFlag) { return } this._maskFlag = v this.update() } /** 数据存储 */ data: Relation | null = null /** 接收事件作出修改 */ changePos() { if (this.startAnchor) { // 判断删除equip后,不移动 if (this.startAnchor.parent && this.startAnchor.parent.parent) { this.pointList[0] = this.startAnchor.mapToScene(0, 0) } } if (this.endAnchor) { // 删除equip后 if (this.endAnchor.parent && this.endAnchor.parent.parent) { this.pointList[this.pointList.length - 1] = this.endAnchor.mapToScene(0, 0) } } } constructor(parent: SGraphItem | null, data: Relation) { super(parent, []) this.zOrder = ItemOrder.polylineOrder this.pointList = data.PointList.map((item) => { return new SPoint(item.X, item.Y) }) this.data = data this.name = data.Name this.id = data.ID if (data.GraphElementId) { this._graphElementId = data.GraphElementId } if (data.Node1ID) { this._node1Id = data.Node1ID } if (data.Node2ID) { this._node2Id = data.Node2ID } if (data.Anchor1ID) { this._anchor1ID = data.Anchor1ID } if (data.Anchor2ID) { this._anchor2ID = data.Anchor2ID } if (data.Properties && data.Properties.Color) { this.strokeColor = new SColor(data.Properties.Color) } // if(data.Properties && data.Properties.LineDash){ // this.LineDash = data.Properties.LineDash // } if (data.Properties && data.Properties.LineWidth) { this.lineWidth = data.Properties.LineWidth } } /** 获取data数据 */ toData(): Relation | null { let pointList: Point[] = this.pointList.map((item) => { return { X: item.x, Y: item.y, } }) if (this.data) { this.data.Name = this.name; this.data.PointList = pointList this.data.Properties.LineWidth = this.lineWidth // this.data.Properties.LineDash = this.LineDash; this.data.Properties.Color = this.strokeColor.value } return this.data } onDraw(painter: SPainter) { if (this.maskFlag && this.status == SItemStatus.Normal) { let color = new SColor(this.strokeColor) color.alpha = color.alpha / 2 painter.pen.color = color painter.drawPolyline(this.pointList) } else { this.selected = true super.onDraw(painter) } } }