import Arc from 'zrender/src/graphic/shape/Arc'; import Group from 'zrender/src/container/Group'; import Text from 'zrender/src/graphic/Text'; /** 单个控制灯*/ export default class ESingleControl extends Group { constructor(model) { super(); this.model = model; this.zlevel = model.zlevel; this._subType = model._subType; this.z = 20; this.onmouseover = model.mouseover; this.onmouseout = model.mouseout; this.create(model); } create(model) { var _subType = 'ControlSignal'; var _val = '0'; if (model.pop) { _subType = 'ControlButton'; _val = '1'; } var _nameType = this._subType; this.control = new Arc({ pop: model.pop, _subType: _subType, _nameType: _nameType, _val: _val, zlevel: this.zlevel, z: this.z, shape: { cx: model.point.x, cy: model.point.y, r: model.style.Station.StationControl.lamp.radiusR }, style: { lineWidth: 0, fill: model.style.Station.StationControl.lamp.grayColor, stroke: model.style.Station.StationControl.lamp.grayColor } }); this.text = new Text({ pop: model.pop, _subType: _subType, zlevel: this.zlevel, z: this.z, position: [0, 0], style: { x: model.point.x, y: model.point.y + model.style.Station.StationControl.lamp.radiusR + model.style.Station.StationControl.text.distance, fontWeight: model.style.Station.StationControl.text.fontWeight, fontSize: model.style.Station.StationControl.text.fontSize, fontFamily: model.style.fontFamily, text: model.context, textFill: model.style.Station.StationControl.text.fontColor, textAlign: model.style.Station.StationControl.text.textAlign, textVerticalAlign: model.style.Station.StationControl.text.textVerticalAlign } }); this.add(this.control); this.add(this.text); } setColor(color) { if (color) { this.control.setStyle('fill', color); } } setTextColor(color) { if (color && !this.model.style.Station.StationControl.lamp.textColorNoChange) { this.text.setStyle('textFill', color); } } getArcBoundingRect() { const rect = this.control.getBoundingRect().clone(); const scale = this.control.scale[0]; const offsetX = this.control.position[0]; const offsetY = this.control.position[1]; rect.x = rect.x * scale + offsetX - 2; rect.y = rect.y * scale + offsetY - 2; rect.width = rect.width * scale + 4; rect.height = rect.height * scale + 4; return rect; } }