91 lines
3.0 KiB
JavaScript
91 lines
3.0 KiB
JavaScript
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;
|
|
}
|
|
}
|