Merge remote-tracking branch 'origin/master'
# Conflicts: # src/jmap/config/defaultSkin.js # src/jmap/shape/Train/index.js # src/jmap/theme/bejing.js
This commit is contained in:
commit
0b9ca8cade
95
README-zh.md
95
README-zh.md
@ -1,96 +1,3 @@
|
||||
# vue-admin-template
|
||||
|
||||
> 这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。
|
||||
|
||||
[线上地址](http://panjiachen.github.io/vue-admin-template)
|
||||
|
||||
[国内访问](https://panjiachen.gitee.io/vue-admin-template)
|
||||
|
||||
目前版本为 `v4.0+` 基于 `vue-cli` 进行构建,若你想使用旧版本,可以切换分支到[tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0),它不依赖 `vue-cli`。
|
||||
|
||||
## Extra
|
||||
|
||||
如果你想要根据用户角色来动态生成侧边栏和 router,你可以使用该分支[permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control)
|
||||
|
||||
## 相关项目
|
||||
|
||||
[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
||||
|
||||
[electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
|
||||
|
||||
[vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template)
|
||||
|
||||
写了一个系列的教程配套文章,如何从零构建后一个完整的后台项目:
|
||||
|
||||
- [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2)
|
||||
- [手摸手,带你用 vue 撸后台 系列二(登录权限篇)](https://juejin.im/post/591aa14f570c35006961acac)
|
||||
- [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35)
|
||||
- [手摸手,带你用 vue 撸后台 系列四(vueAdmin 一个极简的后台基础模板,专门针对本项目的文章,算作是一篇文档)](https://juejin.im/post/595b4d776fb9a06bbe7dba56)
|
||||
- [手摸手,带你封装一个 vue component](https://segmentfault.com/a/1190000009090836)
|
||||
|
||||
## Build Setup
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
git clone https://github.com/PanJiaChen/vue-admin-template.git
|
||||
|
||||
# 进入项目目录
|
||||
cd vue-admin-template
|
||||
|
||||
# 安装依赖
|
||||
npm install
|
||||
|
||||
# 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
|
||||
npm install --registry=https://registry.npm.taobao.org
|
||||
|
||||
# 启动服务
|
||||
npm run dev
|
||||
```
|
||||
|
||||
浏览器访问 [http://localhost:9528](http://localhost:9528)
|
||||
|
||||
## 发布
|
||||
|
||||
```bash
|
||||
# 构建测试环境
|
||||
npm run build:stage
|
||||
|
||||
# 构建生产环境
|
||||
npm run build:prod
|
||||
```
|
||||
|
||||
## 其它
|
||||
|
||||
```bash
|
||||
# 预览发布环境效果
|
||||
npm run preview
|
||||
|
||||
# 预览发布环境效果 + 静态资源分析
|
||||
npm run preview -- --report
|
||||
|
||||
# 代码格式检查
|
||||
npm run lint
|
||||
|
||||
# 代码格式检查并自动修复
|
||||
npm run lint -- --fix
|
||||
```
|
||||
|
||||
更多信息请参考 [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/)
|
||||
|
||||
## Demo
|
||||
|
||||
![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif)
|
||||
|
||||
## Browsers support
|
||||
|
||||
Modern browsers and Internet Explorer 10+.
|
||||
|
||||
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
||||
| --------- | --------- | --------- | --------- |
|
||||
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
||||
# jl-nclient
|
||||
|
||||
Copyright (c) 2017-present PanJiaChen
|
||||
|
85
README.md
85
README.md
@ -1,89 +1,6 @@
|
||||
# vue-admin-template
|
||||
# jl-nclient
|
||||
|
||||
English | [简体中文](./README-zh.md)
|
||||
|
||||
> A minimal vue admin template with Element UI & axios & iconfont & permission control & lint
|
||||
|
||||
**Live demo:** http://panjiachen.github.io/vue-admin-template
|
||||
|
||||
|
||||
**The current version is `v4.0+` build on `vue-cli`. If you want to use the old version , you can switch branch to [tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0), it does not rely on `vue-cli`**
|
||||
|
||||
## Build Setup
|
||||
|
||||
|
||||
```bash
|
||||
# clone the project
|
||||
git clone https://github.com/PanJiaChen/vue-element-admin.git
|
||||
|
||||
# enter the project directory
|
||||
cd vue-element-admin
|
||||
|
||||
# install dependency
|
||||
npm install
|
||||
|
||||
# develop
|
||||
npm run dev
|
||||
```
|
||||
|
||||
This will automatically open http://localhost:9527
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
# build for test environment
|
||||
npm run build:stage
|
||||
|
||||
# build for production environment
|
||||
npm run build:prod
|
||||
```
|
||||
|
||||
## Advanced
|
||||
|
||||
```bash
|
||||
# preview the release environment effect
|
||||
npm run preview
|
||||
|
||||
# preview the release environment effect + static resource analysis
|
||||
npm run preview -- --report
|
||||
|
||||
# code format check
|
||||
npm run lint
|
||||
|
||||
# code format check and auto fix
|
||||
npm run lint -- --fix
|
||||
```
|
||||
|
||||
Refer to [Documentation](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) for more information
|
||||
|
||||
## Demo
|
||||
|
||||
![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif)
|
||||
|
||||
## Extra
|
||||
|
||||
If you want router permission && generate menu by user roles , you can use this branch [permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control)
|
||||
|
||||
For `typescript` version, you can use [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour))
|
||||
|
||||
## Related Project
|
||||
|
||||
[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
||||
|
||||
[electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
|
||||
|
||||
[vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template)
|
||||
|
||||
## Browsers support
|
||||
|
||||
Modern browsers and Internet Explorer 10+.
|
||||
|
||||
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
||||
| --------- | --------- | --------- | --------- |
|
||||
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
||||
|
||||
Copyright (c) 2017-present PanJiaChen
|
||||
|
@ -14,6 +14,10 @@ export default class DefaultSkin {
|
||||
|
||||
/** 默认字体 大小*/
|
||||
this.textFontSize = 10;
|
||||
|
||||
/** 默认字体 族类*/
|
||||
this.textFontFormat = 'consolas';
|
||||
|
||||
/** 默认字体颜色*/
|
||||
this.textFontColor = '#C0C0C0';
|
||||
|
||||
@ -32,9 +36,43 @@ export default class DefaultSkin {
|
||||
/** 默认名称和设备的距离*/
|
||||
this.nameDistance = 2;
|
||||
|
||||
/** 计数器字体颜色*/
|
||||
this.stationCounterTextColor = '#FFFFFF';
|
||||
/** 计数器边框颜色*/
|
||||
this.stationCounterBorderColor = '#E4EF50';
|
||||
/** 延迟解锁倒计时和设备文字之间的距离*/
|
||||
this.stationDelayUnlockDistance = 3;
|
||||
/** 延时解锁字体颜色*/
|
||||
this.stationDelayUnlockTextColor = '#FFFFFF';
|
||||
/** 延迟解锁边框颜色*/
|
||||
this.stationDelayUnlockBorderColor = '#FFFFFF';
|
||||
|
||||
/** 目的码字体颜色*/
|
||||
this.destinationTextFontColor = 'yellow';
|
||||
|
||||
/** 计数器字体颜色*/
|
||||
this.stationCounterTextColor = '#FFFFFF';
|
||||
/** 计数器边框颜色*/
|
||||
this.stationCounterBorderColor = '#E4EF50';
|
||||
/** 延迟解锁倒计时和设备文字之间的距离*/
|
||||
this.stationDelayUnlockDistance = 3;
|
||||
/** 延时解锁字体颜色*/
|
||||
this.stationDelayUnlockTextColor = '#FFFFFF';
|
||||
/** 延迟解锁边框颜色*/
|
||||
this.stationDelayUnlockBorderColor = '#FFFFFF';
|
||||
|
||||
/** 列车长度*/
|
||||
this.trainWidth = 40;
|
||||
|
||||
/** 列车高度*/
|
||||
this.trainHeight = 20;
|
||||
|
||||
/** 列车字号*/
|
||||
this.trainTextFontSize = 12;
|
||||
|
||||
/** 列车HDSA字号*/
|
||||
this.trainHSDATextFontSize = 9;
|
||||
|
||||
/** 列车信号的半径*/
|
||||
this.trainConflictR = 3;
|
||||
|
||||
@ -44,6 +82,12 @@ export default class DefaultSkin {
|
||||
/** 列车车头比车身高出的长度;上下相比车体伸出去的边框*/
|
||||
this.trainMoreLength = 0;
|
||||
|
||||
/** 列车和车头之间的间距*/
|
||||
this.trainHeadDistance = 4;
|
||||
|
||||
/** 列车竖杠的宽度*/
|
||||
this.trainConntWidth = 3;
|
||||
|
||||
/** 列车竖杠和方向之间的间隔*/
|
||||
this.trainPadding = 4;
|
||||
|
||||
@ -100,8 +144,5 @@ export default class DefaultSkin {
|
||||
|
||||
/** 车次窗颜色*/
|
||||
this.trainWindowColor = '#fff';
|
||||
|
||||
/** 列车文字颜色*/
|
||||
this.trainTextColor = '#ffffff';
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ export default class ImageControl extends Group {
|
||||
this.model = model;
|
||||
this.state = state;
|
||||
this.style = style;
|
||||
this.z = model.zIndex || 1;
|
||||
this.z = model.zIndex || 1; // 默认5
|
||||
this._create();
|
||||
}
|
||||
|
||||
|
@ -36,11 +36,13 @@ export default class LcControl extends Group {
|
||||
position: [0, 0],
|
||||
x: model.position.x,
|
||||
y: model.position.y + this.style.zcControlmodeR + this.style.nameDistance,
|
||||
fontWeight: 'normal',
|
||||
fontSize: this.style.stationControlTextSize,
|
||||
fontFamily: this.style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: '#fff',
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top',
|
||||
textFont: this.style.stationControlTextSize + 'px ' + this.style.textFontFormat
|
||||
textVerticalAlign: 'top'
|
||||
},
|
||||
style: this.style
|
||||
});
|
||||
|
@ -35,11 +35,13 @@ export default class LimitControl extends Group {
|
||||
position: [0, 0],
|
||||
x: model.position.x,
|
||||
y: model.position.y + this.style.zcControlmodeR + this.style.nameDistance,
|
||||
fontWeight: 'normal',
|
||||
fontSize: this.style.stationControlTextSize,
|
||||
fontFamily: this.style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: '#fff',
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top',
|
||||
textFont: this.style.stationControlTextSize + 'px ' + this.style.textFontFormat
|
||||
textVerticalAlign: 'top'
|
||||
},
|
||||
style: this.style
|
||||
});
|
||||
|
@ -1,56 +1,85 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Circle from 'zrender/src/graphic/shape/Circle';
|
||||
// import Group from 'zrender/src/container/Group';
|
||||
// import Line from 'zrender/src/graphic/shape/Line';
|
||||
// import Circle from 'zrender/src/graphic/shape/Circle';
|
||||
import Path from 'zrender/src/graphic/Path';
|
||||
|
||||
/** 计轴*/
|
||||
export default class EAxle extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this.zlevel = model.zlevel;
|
||||
this.z = 5;
|
||||
this._create(model);
|
||||
}
|
||||
|
||||
_create(model) {
|
||||
// 计轴
|
||||
export const EAxle = Path.extend({
|
||||
type: 'EAxle',
|
||||
shape: {
|
||||
point: null
|
||||
},
|
||||
buildPath: function (ctx, model) {
|
||||
if (model && model.style && model.traingle) {
|
||||
const axleLength = 2 * model.style.Section.sectionAxleR;
|
||||
const axleLength = 2 * model.style.Section.axle.radius;
|
||||
const positionx = model.point.x + model.drictx * (model.traingle.getCos(axleLength));
|
||||
const positiony = model.point.y + model.dricty * (model.traingle.getCos(axleLength));
|
||||
// 圆弧
|
||||
const arcX = positionx - model.dricty * model.traingle.getSin(axleLength);
|
||||
const arcY = positiony + model.drictx * model.traingle.getSin(axleLength);
|
||||
const arcR = model.style.Section.axle.radius;
|
||||
ctx.arc(arcX, arcY, arcR, 0, 2 * Math.PI, false);
|
||||
ctx.closePath();
|
||||
|
||||
this.line = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
progressive: model.progressive,
|
||||
shape: {
|
||||
x1: positionx - model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength),
|
||||
y1: positiony + model.drictx * model.traingle.getSin(axleLength) - model.traingle.getSin(axleLength),
|
||||
x2: positionx + model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength),
|
||||
y2: positiony + model.drictx * model.traingle.getSin(axleLength) + model.traingle.getSin(axleLength)
|
||||
},
|
||||
style: {
|
||||
GBaseLineWidth: 1,
|
||||
stroke: model.style.Section.sectionAxleColor
|
||||
}
|
||||
});
|
||||
this.axle = new Circle({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
progressive: model.progressive,
|
||||
shape: {
|
||||
cx: positionx - model.dricty * model.traingle.getSin(axleLength),
|
||||
cy: positiony + model.drictx * model.traingle.getSin(axleLength),
|
||||
r: model.style.Section.sectionAxleR
|
||||
},
|
||||
style: {
|
||||
GBaseLineWidth: 1,
|
||||
stroke: model.style.Section.sectionAxleColor,
|
||||
fill: model.style.transparentColor
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.line);
|
||||
this.add(this.axle);
|
||||
const x1 = positionx - model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength);
|
||||
const y1 = positiony + model.drictx * model.traingle.getSin(axleLength) - model.traingle.getSin(axleLength);
|
||||
const x2 = positionx + model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength);
|
||||
const y2 = positiony + model.drictx * model.traingle.getSin(axleLength) + model.traingle.getSin(axleLength);
|
||||
ctx.moveTo(x1, y1);
|
||||
ctx.lineTo(x2, y2);
|
||||
ctx.closePath();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// export default class EAxle extends Group {
|
||||
// constructor(model) {
|
||||
// super();
|
||||
// this.model = model;
|
||||
// this.zlevel = model.zlevel;
|
||||
// this.z = 5;
|
||||
// this._create(model);
|
||||
// }
|
||||
|
||||
// _create(model) {
|
||||
// if (model && model.style && model.traingle) {
|
||||
// const axleLength = 2 * model.style.Section.axle.radius;
|
||||
// const positionx = model.point.x + model.drictx * (model.traingle.getCos(axleLength));
|
||||
// const positiony = model.point.y + model.dricty * (model.traingle.getCos(axleLength));
|
||||
|
||||
// this.line = new Line({
|
||||
// zlevel: this.zlevel,
|
||||
// z: this.z,
|
||||
// progressive: model.progressive,
|
||||
// shape: {
|
||||
// x1: positionx - model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength),
|
||||
// y1: positiony + model.drictx * model.traingle.getSin(axleLength) - model.traingle.getSin(axleLength),
|
||||
// x2: positionx + model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength),
|
||||
// y2: positiony + model.drictx * model.traingle.getSin(axleLength) + model.traingle.getSin(axleLength)
|
||||
// },
|
||||
// style: {
|
||||
// GBaseLineWidth: 1,
|
||||
// stroke: model.style.Section.axle.color
|
||||
// }
|
||||
// });
|
||||
// this.axle = new Circle({
|
||||
// zlevel: this.zlevel,
|
||||
// z: this.z,
|
||||
// progressive: model.progressive,
|
||||
// shape: {
|
||||
// cx: positionx - model.dricty * model.traingle.getSin(axleLength),
|
||||
// cy: positiony + model.drictx * model.traingle.getSin(axleLength),
|
||||
// r: model.style.Section.axle.radius
|
||||
// },
|
||||
// style: {
|
||||
// GBaseLineWidth: 1,
|
||||
// stroke: model.style.Section.axle.color,
|
||||
// fill: model.style.transparentColor
|
||||
// }
|
||||
// });
|
||||
|
||||
// this.add(this.line);
|
||||
// this.add(this.axle);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
@ -1,8 +1,80 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import BezierCurve from 'zrender/src/graphic/shape/BezierCurve';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import JTriangle from '../../utils/JTriangle';
|
||||
// import Path from 'zrender/src/graphic/Path';
|
||||
|
||||
// 创建区段限速限集合
|
||||
// export const ELimitLines = Path.extend({
|
||||
// type: 'ELimitLines',
|
||||
// shape: {
|
||||
// points: null
|
||||
// },
|
||||
// buildPath: function (ctx, model) {
|
||||
// /** 创建区段*/
|
||||
// if (model && model.points.length > 1) {
|
||||
// if (model.isCurve) {
|
||||
// ctx.beginPath();
|
||||
// const shape = {};
|
||||
// for (let i = 1; i < (model.points.length - 1); i++) {
|
||||
// shape[`cpx${i}`] = model.points[i].x;
|
||||
// shape[`cpy${i}`] = model.points[i].y;
|
||||
// }
|
||||
// shape[`x1`] = model.points[0].x;
|
||||
// shape[`y1`] = model.points[0].y;
|
||||
// shape[`x2`] = model.points[model.points.length - 1].x;
|
||||
// shape[`y2`] = model.points[model.points.length - 1].y;
|
||||
|
||||
// ctx.moveTo(shape[`x1`], shape[`y1`]);
|
||||
// if (model.points.length <= 3) {
|
||||
// ctx.quadraticCurveTo(shape[`cpx1`], shape[`cpy1`], shape[`x2`], shape[`y2`]);
|
||||
// } else {
|
||||
// ctx.bezierCurveTo(shape[`cpx1`], shape[`cpy1`], shape[`cpx2`], shape[`cpy2`], shape[`x2`], shape[`y2`]);
|
||||
// }
|
||||
// } else {
|
||||
// const swPadding = model.style.Switch.core.switchLen; // 定位和反位时区段距离岔芯的距离
|
||||
// var switchWidth = model.style.Section.line.width + model.style.Section.line.beyondWidth; // 道岔宽度
|
||||
// const beg = Object.assign({}, model.points[0]);
|
||||
// const end = Object.assign({}, model.points[model.points.length - 1]);
|
||||
// if (model.isSwitchSection && beg.y !== end.y) {
|
||||
// const swch = model.switch;
|
||||
// if (swch) {
|
||||
// const traingle = new JTriangle(swch.intersection, swch.skew);
|
||||
// if ((swch.intersection.x === beg.x) && (swch.intersection.y === beg.y)) {
|
||||
// beg.x = beg.x + traingle.drictx * (swPadding + switchWidth) * traingle.getCotRate();
|
||||
// beg.y = beg.y + traingle.dricty * (swPadding + switchWidth);
|
||||
// }
|
||||
|
||||
// if ((swch.intersection.x === end.x) && (swch.intersection.y === end.y)) {
|
||||
// end.x = end.x + traingle.drictx * (swPadding + switchWidth) * traingle.getCotRate();
|
||||
// end.y = end.y + traingle.dricty * (swPadding + switchWidth);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (model.points.length == 2) {
|
||||
// ctx.moveTo(beg.x, beg.y);
|
||||
// ctx.lineTo(end.x, end.y);
|
||||
// ctx.closePath();
|
||||
// } else {
|
||||
// ctx.moveTo(beg.x, beg.y);
|
||||
// ctx.lineTo(model.points[1].x, model.points[1].y);
|
||||
// ctx.closePath();
|
||||
|
||||
// for (let i = 1; i < (model.points.length - 2); i++) {
|
||||
// ctx.moveTo(model.points[i].x, model.points[i].y);
|
||||
// ctx.lineTo(model.points[i + 1].x, model.points[i + 1].y);
|
||||
// ctx.closePath();
|
||||
// }
|
||||
// ctx.moveTo(model.points[model.points.length - 2].x, model.points[model.points.length - 2].y);
|
||||
// ctx.lineTo(end.x, end.y);
|
||||
// ctx.closePath();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
|
||||
/** 创建区段限速限集合*/
|
||||
export default class ELimitLines extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
@ -36,14 +108,34 @@ export default class ELimitLines extends Group {
|
||||
shape: shape,
|
||||
position: model.position,
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionSpeedLimitLinewidth,
|
||||
stroke: model.style.Section.sectionSpeedLimitColor,
|
||||
lineWidth: model.style.Section.speedLimit.width,
|
||||
stroke: model.style.Section.speedLimit.lineColor,
|
||||
fillOpacity: 0
|
||||
}
|
||||
}));
|
||||
} else {
|
||||
// const beg = Object.assign({}, model.points[0]);
|
||||
// const end = Object.assign({}, model.points[model.points.length - 1]);
|
||||
|
||||
const swPadding = model.style.Switch.core.switchLen; // 定位和反位时区段距离岔芯的距离
|
||||
var switchWidth = model.style.Section.line.width + model.style.Section.line.beyondWidth; // 道岔宽度
|
||||
const beg = Object.assign({}, model.points[0]);
|
||||
const end = Object.assign({}, model.points[model.points.length - 1]);
|
||||
if (model.isSwitchSection && beg.y !== end.y) {
|
||||
const swch = model.switch;
|
||||
if (swch) {
|
||||
const traingle = new JTriangle(swch.intersection, swch.skew);
|
||||
if ((swch.intersection.x === beg.x) && (swch.intersection.y === beg.y)) {
|
||||
beg.x = beg.x + traingle.drictx * (swPadding + switchWidth) * traingle.getCotRate();
|
||||
beg.y = beg.y + traingle.dricty * (swPadding + switchWidth);
|
||||
}
|
||||
|
||||
if ((swch.intersection.x === end.x) && (swch.intersection.y === end.y)) {
|
||||
end.x = end.x + traingle.drictx * (swPadding + switchWidth) * traingle.getCotRate();
|
||||
end.y = end.y + traingle.dricty * (swPadding + switchWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (model.points.length == 2) {
|
||||
this.add(new Line({
|
||||
@ -59,8 +151,8 @@ export default class ELimitLines extends Group {
|
||||
y2: end.y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionSpeedLimitLinewidth,
|
||||
stroke: model.style.Section.sectionSpeedLimitColor
|
||||
lineWidth: model.style.Section.speedLimit.width,
|
||||
stroke: model.style.Section.speedLimit.lineColor
|
||||
}
|
||||
}));
|
||||
} else {
|
||||
@ -77,8 +169,8 @@ export default class ELimitLines extends Group {
|
||||
y2: model.points[1].y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionSpeedLimitLinewidth,
|
||||
stroke: model.style.Section.sectionSpeedLimitColor
|
||||
lineWidth: model.style.Section.speedLimit.width,
|
||||
stroke: model.style.Section.speedLimit.lineColor
|
||||
}
|
||||
}));
|
||||
|
||||
@ -96,8 +188,8 @@ export default class ELimitLines extends Group {
|
||||
y2: model.points[i + 1].y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionSpeedLimitLinewidth,
|
||||
stroke: model.style.Section.sectionSpeedLimitColor
|
||||
lineWidth: model.style.Section.speedLimit.width,
|
||||
stroke: model.style.Section.speedLimit.lineColor
|
||||
}
|
||||
}));
|
||||
}
|
||||
@ -115,8 +207,8 @@ export default class ELimitLines extends Group {
|
||||
y2: end.y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionSpeedLimitLinewidth,
|
||||
stroke: model.style.Section.sectionSpeedLimitColor
|
||||
lineWidth: model.style.Section.speedLimit.width,
|
||||
stroke: model.style.Section.speedLimit.lineColor
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
@ -35,8 +35,8 @@ export default class ELines extends Group {
|
||||
culling: true,
|
||||
shape: shape,
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionWidth,
|
||||
stroke: model.style.Section.sectionSpareColor,
|
||||
lineWidth: model.style.Section.line.width,
|
||||
stroke: model.style.Section.line.spareColor,
|
||||
fillOpacity: 0
|
||||
}
|
||||
}));
|
||||
@ -54,8 +54,8 @@ export default class ELines extends Group {
|
||||
y2: model.points[i + 1].y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.sectionWidth,
|
||||
stroke: model.style.Section.sectionSpareColor
|
||||
lineWidth: model.style.Section.line.width,
|
||||
stroke: model.style.Section.line.spareColor
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
@ -6,43 +6,50 @@ export default class ERelease extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this.zlevel = model.zlevel;
|
||||
this.z = model.z;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
this.Lines = new Line({
|
||||
zlevel: model.zlevel,
|
||||
z: this.z,
|
||||
shape: model.shape,
|
||||
progressive: model.progressive,
|
||||
style: {
|
||||
lineWidth: model.lineWidth,
|
||||
stroke: model.stroke
|
||||
}
|
||||
});
|
||||
this.add(this.Lines);
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
|
||||
this.isNew = true;
|
||||
this.lines = new Line({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: model.shape,
|
||||
progressive: model.progressive,
|
||||
style: {
|
||||
lineWidth: model.lineWidth,
|
||||
stroke: model.stroke
|
||||
}
|
||||
});
|
||||
this.add(this.lines);
|
||||
}
|
||||
}
|
||||
|
||||
setStyle(model) {
|
||||
this.Lines.setStyle(model);
|
||||
this._create();
|
||||
this.lines.setStyle(model);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this.Lines.hide();
|
||||
this._create();
|
||||
this.lines.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this.Lines.show();
|
||||
this._create();
|
||||
this.lines.show();
|
||||
}
|
||||
|
||||
// 开始动画
|
||||
animateStyle(loop, animates) {
|
||||
this._create();
|
||||
if (animates && animates.length) {
|
||||
this.eachChild((child) => {
|
||||
if (child.animateStyle && child.isLine) {
|
||||
if (child.animateStyle) {
|
||||
let an = child.animateStyle(loop);
|
||||
animates.forEach(elem => {
|
||||
an = an.when(elem.time, elem.styles);
|
||||
@ -55,8 +62,9 @@ export default class ERelease extends Group {
|
||||
|
||||
// 结束动画
|
||||
stopAnimation(flag) {
|
||||
this._create();
|
||||
this.eachChild((child) => {
|
||||
if (child.stopAnimation && child.isLine) {
|
||||
if (child.stopAnimation) {
|
||||
child.stopAnimation(flag);
|
||||
}
|
||||
});
|
||||
|
@ -10,23 +10,29 @@ export default class ESeparator extends Group {
|
||||
this.zlevel = model.zlevel;
|
||||
this.style = model.style;
|
||||
this.z = 6;
|
||||
this._create(model);
|
||||
this.setType();
|
||||
}
|
||||
|
||||
_create(model) {
|
||||
createModel(points, lineWidth = null, stroke = null) {
|
||||
const model = this.model;
|
||||
this.partition = new Polyline({
|
||||
zlevel: this.zlevel,
|
||||
progressive: model.progressive,
|
||||
z: this.z,
|
||||
shape: {
|
||||
points: []
|
||||
points: points
|
||||
},
|
||||
style: {
|
||||
lineWidth: this.style.Section.sectionSeparatorWidth,
|
||||
stroke: this.style.Section.sectionSeparatorColor
|
||||
lineWidth: lineWidth || this.style.Section.separator.width,
|
||||
stroke: stroke || this.style.Section.separator.color
|
||||
}
|
||||
});
|
||||
this.add(this.partition);
|
||||
}
|
||||
|
||||
// 创建 侵限分隔符
|
||||
createCircle() {
|
||||
const model = this.model;
|
||||
this.circle = new Circle({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
@ -34,53 +40,46 @@ export default class ESeparator extends Group {
|
||||
shape: {
|
||||
cx: model.point.x,
|
||||
cy: model.point.y,
|
||||
r: this.style.Section.sectionWidth
|
||||
r: this.style.Section.line.width
|
||||
},
|
||||
style: {
|
||||
stroke: this.style.Section.sectionInvadeColor,
|
||||
stroke: this.style.Section.line.invadeColor,
|
||||
GBaseLineWidth: 0.5,
|
||||
fill: this.style.transparentColor
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.partition);
|
||||
this.setType();
|
||||
this.add(this.circle);
|
||||
}
|
||||
|
||||
setType() {
|
||||
const type = this.model.sepType;
|
||||
const model = this.model;
|
||||
if (model && this.style && model.traingle) {
|
||||
this.remove(this.circle);
|
||||
if (type === '00') {
|
||||
this.partition.setShape('points', [
|
||||
[model.point.x, model.point.y],
|
||||
[model.point.x, model.point.y]
|
||||
]);
|
||||
} else if (type === '01') {
|
||||
this.partition.setShape('points', [
|
||||
[model.point.x, model.point.y - (this.style.Section.sectionWidth)],
|
||||
[model.point.x, model.point.y + (this.style.Section.sectionWidth)]
|
||||
]);
|
||||
this.add(this.partition);
|
||||
} else if (type === '02') {
|
||||
this.partition.setShape('points', [
|
||||
[model.point.x + model.drict * (this.style.Section.sectionWidth), model.point.y - (this.style.Section.sectionWidth * 1.5)],
|
||||
[model.point.x, model.point.y - (this.style.Section.sectionWidth * 1.5)],
|
||||
[model.point.x, model.point.y + (this.style.Section.sectionWidth * 1.5)]
|
||||
]);
|
||||
this.add(this.partition);
|
||||
} else if (type === '03') {
|
||||
this.partition.setShape('points', [
|
||||
[model.point.x + model.drict * (this.style.Section.sectionWidth) * 1.2, model.point.y - (this.style.Section.sectionWidth * 1.2)],
|
||||
[model.point.x, model.point.y - (this.style.Section.sectionWidth * 1.2)],
|
||||
[model.point.x, model.point.y + (this.style.Section.sectionWidth * 1.2)],
|
||||
[model.point.x + model.drict * (this.style.Section.sectionWidth) * 1.2, model.point.y + (this.style.Section.sectionWidth * 1.2)]
|
||||
]);
|
||||
this.add(this.partition);
|
||||
this.partition.setStyle({'lineWidth': this.style.Section.sectionEndSeparatorWidth, 'stroke': this.style.Section.sectionEndSeparatorStroke });
|
||||
} else if (type === '04') {
|
||||
this.add(this.circle);
|
||||
if (type === '01') { // 普通分割
|
||||
const points = [
|
||||
[model.point.x, model.point.y - (this.style.Section.line.width)],
|
||||
[model.point.x, model.point.y + (this.style.Section.line.width)]
|
||||
];
|
||||
this.createModel(points);
|
||||
} else if (type === '02') { // 单侧分割符
|
||||
const points = [
|
||||
[model.point.x + model.drict * (this.style.Section.line.width), model.point.y - (this.style.Section.line.width * 1.5)],
|
||||
[model.point.x, model.point.y - (this.style.Section.line.width * 1.5)],
|
||||
[model.point.x, model.point.y + (this.style.Section.line.width * 1.5)]
|
||||
];
|
||||
this.createModel(points);
|
||||
} else if (type === '03') { // 尽头分隔符
|
||||
const points = [
|
||||
[model.point.x + model.drict * (this.style.Section.line.width) * 1.2, model.point.y - (this.style.Section.line.width * 1.2)],
|
||||
[model.point.x, model.point.y - (this.style.Section.line.width * 1.2)],
|
||||
[model.point.x, model.point.y + (this.style.Section.line.width * 1.2)],
|
||||
[model.point.x + model.drict * (this.style.Section.line.width) * 1.2, model.point.y + (this.style.Section.line.width * 1.2)]
|
||||
];
|
||||
const lineWidth = this.style.Section.separator.endWidth;
|
||||
const stroke = this.style.Section.separator.endColor;
|
||||
this.createModel(points, lineWidth, stroke);
|
||||
} else if (type === '04') { // 侵限分隔符
|
||||
this.createCircle();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ import ERelease from './ERelease'; // 线段 (共有)
|
||||
import ELimitLines from './ELimitLines'; // 区段限速 (私有)
|
||||
import ELines from './ELines'; // 创建多线条 曲线 (私有)
|
||||
import ESeparator from './ESeparator'; // 分隔符 (私有)
|
||||
import EAxle from './EAxle'; // 创建计轴 (私有)
|
||||
import { EAxle } from './EAxle'; // 创建计轴 (私有)
|
||||
import JTriangle from '../../utils/JTriangle';
|
||||
|
||||
/** 区段*/
|
||||
@ -14,7 +14,7 @@ export default class Section extends Group {
|
||||
this._code = _code;
|
||||
this._type = _type;
|
||||
this.zlevel = zlevel;
|
||||
this.z = model.layer || 5;
|
||||
this.z = 5;
|
||||
this.model = model;
|
||||
this.state = state;
|
||||
this.style = style;
|
||||
@ -32,6 +32,7 @@ export default class Section extends Group {
|
||||
model.logicSectionNum.length == 1 && model.logicSectionNum[0] == 0) ||
|
||||
model.type === '02') {
|
||||
this.createSection(); // 创建区段
|
||||
this.creatRelease(); // 创建延时释放
|
||||
this.createSeparator(); // 创建分隔符
|
||||
if (model.type === '01') {
|
||||
this.createAxles(); // 创建计轴
|
||||
@ -49,19 +50,22 @@ export default class Section extends Group {
|
||||
this.section = new ELines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
progressive: 1,
|
||||
isSwitchSection: model.isSwitchSection,
|
||||
isCurve: model.isCurve,
|
||||
points: model.points,
|
||||
style: style
|
||||
});
|
||||
|
||||
// 创建延时释放
|
||||
const traingle = new JTriangle(model.points[0], model.points[model.points.length - 1]);
|
||||
this.add(this.section);
|
||||
}
|
||||
|
||||
// 创建延时释放 (需要在创建)
|
||||
creatRelease() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
const traingle = new JTriangle(model.points[0], model.points[model.points.length - 1]);
|
||||
this.release = new ERelease({
|
||||
zlevel: model.zlevel,
|
||||
progressive: 6,
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x1: model.points[0].x + traingle.getCos(traingle.absz / 3),
|
||||
@ -69,47 +73,51 @@ export default class Section extends Group {
|
||||
x2: model.points[0].x + traingle.getCos(traingle.absz / 3 * 2),
|
||||
y2: model.points[0].y + traingle.getSin(traingle.absz / 3 * 2)
|
||||
},
|
||||
lineWidth: style.Section.sectionWidth,
|
||||
stroke: style.Section.sectionSpareColor
|
||||
lineWidth: style.Section.line.width,
|
||||
stroke: style.Section.line.spareColor
|
||||
});
|
||||
|
||||
let x = traingle.drictx * (style.Section.sectionSpeedLimitDistance) * traingle.getSinRate();
|
||||
let y = traingle.dricty * (style.Section.sectionSpeedLimitDistance) * traingle.getCosRate();
|
||||
this.add(this.release);
|
||||
}
|
||||
|
||||
// 创建限速线 (需要在创建)
|
||||
creatSpeedLimit() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
const traingle = new JTriangle(model.points[0], model.points[model.points.length - 1]);
|
||||
let x = traingle.drictx * (style.Section.speedLimit.Distance) * traingle.getSinRate();
|
||||
let y = traingle.dricty * (style.Section.speedLimit.Distance) * traingle.getCosRate();
|
||||
if (x == Infinity) { x = 0; }
|
||||
if (y == Infinity) { y = 0; }
|
||||
|
||||
// 创建限速线
|
||||
this.speedLimitLeft = new ELimitLines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
progressive: 5,
|
||||
position: [x, -y],
|
||||
isCurve: model.isCurve,
|
||||
points: model.points,
|
||||
isSwitchSection: model.isSwitchSection,
|
||||
relSwitchCode: model.relSwitchCode,
|
||||
style: style
|
||||
});
|
||||
|
||||
this.speedLimitRight = new ELimitLines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
progressive: 5,
|
||||
position: [-x, y],
|
||||
isCurve: model.isCurve,
|
||||
points: model.points,
|
||||
isSwitchSection: model.isSwitchSection,
|
||||
relSwitchCode: model.relSwitchCode,
|
||||
style: style
|
||||
});
|
||||
|
||||
this.add(this.section);
|
||||
this.add(this.release);
|
||||
if (!this.speedLimitLeft && !this.speedLimitRight) {
|
||||
this.speedLimitLeft = new ELimitLines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
position: [x, -y],
|
||||
style: style,
|
||||
switch: model.switch,
|
||||
isSwitchSection: model.isSwitchSection,
|
||||
relSwitchCode: model.relSwitchCode,
|
||||
isCurve: model.isCurve, // 是否曲线
|
||||
points: model.points
|
||||
});
|
||||
this.speedLimitRight = new ELimitLines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
position: [-x, y],
|
||||
style: style,
|
||||
switch: model.switch,
|
||||
isSwitchSection: model.isSwitchSection,
|
||||
relSwitchCode: model.relSwitchCode,
|
||||
isCurve: model.isCurve, // 是否曲线
|
||||
points: model.points
|
||||
});
|
||||
}
|
||||
this.add(this.speedLimitLeft);
|
||||
this.add(this.speedLimitRight);
|
||||
}
|
||||
|
||||
/** 创建区段名称*/
|
||||
// 创建区段名称
|
||||
createSectionText() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
@ -123,22 +131,22 @@ export default class Section extends Group {
|
||||
let tempx = x;
|
||||
let tempy = y;
|
||||
|
||||
if (style.Section.sectionTextPosition == 1) {
|
||||
tempy = tempy - style.textFontSize;
|
||||
} else if (style.Section.sectionTextPosition == -1) {
|
||||
tempy = tempy + style.textFontSize;
|
||||
} else if (style.Section.sectionTextPosition == 0) {
|
||||
if (style.Section.text.position == 1) {
|
||||
tempy = tempy - style.Section.text.fontSize;
|
||||
} else if (style.Section.text.position == -1) {
|
||||
tempy = tempy + style.Section.text.fontSize;
|
||||
} else if (style.Section.text.position == 0) {
|
||||
// 根据列车上下行进行坐标偏移
|
||||
const traingle = new JTriangle(model.points[0], model.points[model.points.length - 1]);
|
||||
if (model.trainPosType === '01') {
|
||||
tempy -= (style.Section.sectionWidth * 1.5);
|
||||
tempy -= (style.Section.line.width * 1.5);
|
||||
if (model.type === '01') {
|
||||
tempy += traingle.getCos(style.textFontSize * 0.8 + style.nameDistance) - style.textFontSize * 2;
|
||||
tempy += traingle.getCos(style.Section.text.fontSize * 0.8 + style.nameDistance) - style.Section.text.fontSize * 2;
|
||||
}
|
||||
} else {
|
||||
tempy += (style.Section.sectionWidth * 1.5);
|
||||
tempy += (style.Section.line.width * 1.5);
|
||||
if (model.type === '01') {
|
||||
tempy -= traingle.getCos(style.textFontSize * 0.8 + style.nameDistance) - style.textFontSize * 2;
|
||||
tempy -= traingle.getCos(style.Section.text.fontSize * 0.8 + style.nameDistance) - style.Section.text.fontSize * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -148,25 +156,27 @@ export default class Section extends Group {
|
||||
// 如果不是逻辑区段,让名称和区段保持点距离
|
||||
const traingle = new JTriangle(model.points[0], model.points[model.points.length - 1]);
|
||||
if (model.type === '01') {
|
||||
tempx += traingle.getSin(style.textFontSize * 0.8 + style.nameDistance);
|
||||
tempx += traingle.getSin(style.Section.text.fontSize * 0.8 + style.nameDistance);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建区段名称
|
||||
const fontSize = style.type == '02' ? style.textFontSize + 2 : style.textFontSize;
|
||||
const fontSize = model.type == '02' ? style.Section.text.fontSize + 2: style.Section.text.fontSize;
|
||||
this.sectionText = new ETextName({
|
||||
_subType: 'Text',
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 6,
|
||||
style: this.style,
|
||||
silent: false,
|
||||
x: tempx,
|
||||
y: tempy,
|
||||
fontWeight: 'bold',
|
||||
fontSize: fontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textFont: fontSize + 'px ' + style.textFontFormat,
|
||||
textFill: style.textFontColor,
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textVerticalAlign: 'middle',
|
||||
style: this.style
|
||||
textFill: style.Section.text.fontColor,
|
||||
textAlign: style.Section.text.textAlign,
|
||||
textPosition: style.Section.text.textPosition,
|
||||
textVerticalAlign: style.Section.text.textVerticalAlign
|
||||
});
|
||||
this.add(this.sectionText);
|
||||
}
|
||||
@ -187,11 +197,13 @@ export default class Section extends Group {
|
||||
z: 6,
|
||||
x: tempx + model.standTrackNamePosition.x,
|
||||
y: tempy + model.standTrackNamePosition.y,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.Section.text.fontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.standTrackName,
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat,
|
||||
textFill: style.textFontColor,
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textFill: style.Section.text.fontColor,
|
||||
textAlign: style.Section.text.textAlign,
|
||||
textPosition: style.Section.text.textPosition,
|
||||
style: this.style
|
||||
});
|
||||
// 添加视图
|
||||
@ -205,12 +217,14 @@ export default class Section extends Group {
|
||||
zlevel: this.zlevel,
|
||||
z: 6,
|
||||
x: x + model.reentryTrackNamePosition.x,
|
||||
y: y + model.reentryTrackNamePosition.y + style.nameDistance + style.textFontSize,
|
||||
y: y + model.reentryTrackNamePosition.y + style.nameDistance + style.Section.text.fontSize,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.Section.text.fontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.reentryTrackName,
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat,
|
||||
textFill: style.textFontColor,
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textFill: style.Section.text.fontColor,
|
||||
textAlign: style.Section.text.textAlign,
|
||||
textPosition: style.Section.text.textPosition,
|
||||
style: this.style
|
||||
});
|
||||
// 添加视图
|
||||
@ -224,12 +238,14 @@ export default class Section extends Group {
|
||||
zlevel: this.zlevel,
|
||||
z: 6,
|
||||
x: x + model.transferTrackNamePosition.x,
|
||||
y: y + model.transferTrackNamePosition.y + style.nameDistance + style.textFontSize * 2,
|
||||
y: y + model.transferTrackNamePosition.y + style.nameDistance + style.Section.text.fontSize * 2,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.Section.text.fontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.transferTrackName,
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat,
|
||||
textFill: style.textFontColor,
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textFill: style.Section.text.fontColor,
|
||||
textAlign: style.Section.text.textAlign,
|
||||
textPosition: style.Section.text.textPosition,
|
||||
style: this.style
|
||||
});
|
||||
// 添加视图
|
||||
@ -244,11 +260,13 @@ export default class Section extends Group {
|
||||
z: 6,
|
||||
x: x + model.destinationCodePoint.x,
|
||||
y: y + model.destinationCodePoint.y,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.Section.text.fontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.destinationCode,
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat,
|
||||
textFill: style.destinationTextFontColor,
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textAlign: style.Section.text.textAlign,
|
||||
textPosition: style.Section.text.textPosition,
|
||||
style: this.style
|
||||
});
|
||||
// 添加视图
|
||||
@ -257,7 +275,7 @@ export default class Section extends Group {
|
||||
}
|
||||
}
|
||||
|
||||
/** 创建计轴*/
|
||||
// 创建计轴 (需要在创建)
|
||||
createAxles() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
@ -267,54 +285,78 @@ export default class Section extends Group {
|
||||
if (model && style && model.axleShow && model.points && model.points.length > 1) {
|
||||
traingle = new JTriangle(model.points[0], model.points[1]);
|
||||
this.lUpAxle = new EAxle({
|
||||
style: style,
|
||||
progressive: 4,
|
||||
zlevel: this.zlevel,
|
||||
point: {
|
||||
x: model.points[0].x,
|
||||
y: model.points[0].y
|
||||
z: this.z + 5, // 层级大于道岔z 否则会压住显示完整
|
||||
shape: {
|
||||
point: {
|
||||
x: model.points[0].x,
|
||||
y: model.points[0].y
|
||||
},
|
||||
drictx: 1,
|
||||
dricty: -1,
|
||||
traingle: traingle,
|
||||
style: style
|
||||
},
|
||||
drictx: 1,
|
||||
dricty: -1,
|
||||
traingle: traingle
|
||||
style: {
|
||||
GBaseLineWidth: 1,
|
||||
stroke: style.Section.axle.color
|
||||
}
|
||||
});
|
||||
this.lBottomAxle = new EAxle({
|
||||
style: style,
|
||||
progressive: 4,
|
||||
zlevel: this.zlevel,
|
||||
point: {
|
||||
x: model.points[0].x,
|
||||
y: model.points[0].y
|
||||
z: this.z + 5, // 层级大于道岔z 否则会压住显示完整
|
||||
shape: {
|
||||
point: {
|
||||
x: model.points[0].x,
|
||||
y: model.points[0].y
|
||||
},
|
||||
drictx: 1,
|
||||
dricty: 1,
|
||||
traingle: traingle,
|
||||
style: style
|
||||
},
|
||||
drictx: 1,
|
||||
dricty: 1,
|
||||
traingle: traingle
|
||||
style: {
|
||||
GBaseLineWidth: 1,
|
||||
stroke: style.Section.axle.color
|
||||
}
|
||||
});
|
||||
|
||||
traingle = new JTriangle(model.points[model.points.length - 2], model.points[model.points.length - 1]);
|
||||
this.rUpAxle = new EAxle({
|
||||
style: style,
|
||||
progressive: 4,
|
||||
zlevel: this.zlevel,
|
||||
point: {
|
||||
x: model.points[model.points.length - 1].x,
|
||||
y: model.points[model.points.length - 1].y
|
||||
z: this.z + 5, // 层级大于道岔z 否则会压住显示完整
|
||||
shape: {
|
||||
point: {
|
||||
x: model.points[model.points.length - 1].x,
|
||||
y: model.points[model.points.length - 1].y
|
||||
},
|
||||
drictx: -1,
|
||||
dricty: -1,
|
||||
traingle: traingle,
|
||||
style: style
|
||||
},
|
||||
drictx: -1,
|
||||
dricty: -1,
|
||||
traingle: traingle
|
||||
style: {
|
||||
GBaseLineWidth: 1,
|
||||
stroke: style.Section.axle.color
|
||||
}
|
||||
});
|
||||
this.rBottomAxle = new EAxle({
|
||||
style: style,
|
||||
progressive: 4,
|
||||
zlevel: this.zlevel,
|
||||
point: {
|
||||
x: model.points[model.points.length - 1].x,
|
||||
y: model.points[model.points.length - 1].y
|
||||
z: this.z + 5, // 层级大于道岔z 否则会压住显示完整
|
||||
shape: {
|
||||
point: {
|
||||
x: model.points[model.points.length - 1].x,
|
||||
y: model.points[model.points.length - 1].y
|
||||
},
|
||||
drictx: -1,
|
||||
dricty: 1,
|
||||
traingle: traingle,
|
||||
style: style
|
||||
},
|
||||
drictx: -1,
|
||||
dricty: 1,
|
||||
traingle: traingle
|
||||
style: {
|
||||
GBaseLineWidth: 1,
|
||||
stroke: style.Section.axle.color
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.lUpAxle);
|
||||
@ -324,7 +366,7 @@ export default class Section extends Group {
|
||||
}
|
||||
}
|
||||
|
||||
/** 创建分隔符*/
|
||||
// 创建分隔符 (内层需要在创建)
|
||||
createSeparator() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
@ -335,7 +377,6 @@ export default class Section extends Group {
|
||||
traingle = new JTriangle(model.points[0], model.points[1]);
|
||||
this.lPartition = new ESeparator({
|
||||
style: style,
|
||||
progressive: 2,
|
||||
zlevel: this.zlevel,
|
||||
traingle: traingle,
|
||||
point: {
|
||||
@ -350,7 +391,6 @@ export default class Section extends Group {
|
||||
traingle = new JTriangle(model.points[model.points.length - 2], model.points[model.points.length - 1]);
|
||||
this.rPartition = new ESeparator({
|
||||
style: style,
|
||||
progressive: 2,
|
||||
zlevel: this.zlevel,
|
||||
traingle: traingle,
|
||||
point: {
|
||||
@ -381,13 +421,17 @@ export default class Section extends Group {
|
||||
this.section.stopAnimation(true);
|
||||
this.section.setStyle({
|
||||
fill: this.style.backgroundColor,
|
||||
stroke: this.style.Section.sectionSpareColor,
|
||||
lineWidth: this.style.Section.sectionWidth
|
||||
stroke: this.style.Section.line.spareColor,
|
||||
lineWidth: this.style.Section.line.width
|
||||
});
|
||||
|
||||
this.release.hide();
|
||||
this.speedLimitLeft.hide();
|
||||
this.speedLimitRight.hide();
|
||||
if (this.release) {
|
||||
this.release.hide();
|
||||
}
|
||||
if (this.speedLimitLeft && this.speedLimitRight) {
|
||||
this.remove(this.speedLimitLeft);
|
||||
this.remove(this.speedLimitRight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -395,8 +439,8 @@ export default class Section extends Group {
|
||||
undefine() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionUndefinedColor,
|
||||
lineWidth: this.style.Section.sectionWidth
|
||||
stroke: this.style.Section.line.undefinedColor,
|
||||
lineWidth: this.style.Section.line.width
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -405,8 +449,8 @@ export default class Section extends Group {
|
||||
spare() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionSpareColor,
|
||||
lineWidth: this.style.Section.sectionWidth
|
||||
stroke: this.style.Section.line.spareColor,
|
||||
lineWidth: this.style.Section.line.width
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -415,8 +459,8 @@ export default class Section extends Group {
|
||||
communicationOccupied() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionCommunicationOccupiedColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.communicationOccupiedColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -425,8 +469,8 @@ export default class Section extends Group {
|
||||
unCommunicationOccupied() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionUnCommunicationOccupiedColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.unCommunicationOccupiedColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -435,8 +479,8 @@ export default class Section extends Group {
|
||||
routeLock() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionRouteLockColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.routeLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -445,8 +489,8 @@ export default class Section extends Group {
|
||||
block() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionBlockColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.blockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -455,8 +499,8 @@ export default class Section extends Group {
|
||||
faultLock() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionFaultLockColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.faultLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -465,8 +509,8 @@ export default class Section extends Group {
|
||||
atcExcision() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionAtcExcisionColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.atcExcisionColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -477,7 +521,7 @@ export default class Section extends Group {
|
||||
this.atcExcision();
|
||||
this.section.animateStyle(true, [
|
||||
{ time: 1000, styles: { stroke: this.style.backgroundColor } },
|
||||
{ time: 2000, styles: { stroke: this.style.Section.sectionAtsExcisionColor, lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth } }
|
||||
{ time: 2000, styles: { stroke: this.style.Section.line.atsExcisionColor, lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth } }
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -486,63 +530,63 @@ export default class Section extends Group {
|
||||
protectiveLock() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionProtectiveLockColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.line.protectiveLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/** 延时释放 10*/
|
||||
timeRelease() {
|
||||
async timeRelease() {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.line.routeLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
|
||||
if (this.release) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionRouteLockColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
});
|
||||
this.release.show();
|
||||
this.release.setStyle('lineWidth', this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth);
|
||||
this.release.setStyle('stroke', this.style.Section.sectionRouteLockColor);
|
||||
this.release.animateStyle(true)
|
||||
.when(1000, { stroke: this.style.Section.sectionRouteLockColor })
|
||||
.when(2000, { stroke: this.style.Section.sectionTimeReleaseColor })
|
||||
.start();
|
||||
this.release.setStyle({
|
||||
stroke: this.style.Section.line.routeLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
this.release.animateStyle(true, [
|
||||
{ time: 1000, styles: { stroke: this.style.Section.line.routeLockColor } },
|
||||
{ time: 2000, styles: { stroke: this.style.Section.line.timeReleaseColor } }
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/** 保护区段延时解锁 11*/
|
||||
protectiveTimeRelease() {
|
||||
if (this.release) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionProtectiveLockColor,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
});
|
||||
this.release.show();
|
||||
this.release.setStyle('lineWidth', this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth);
|
||||
this.release.setStyle('stroke', this.style.Section.sectionProtectiveLockColor);
|
||||
this.release.animateStyle(true)
|
||||
.when(1000, { stroke: this.style.Section.sectionProtectiveLockColor })
|
||||
.when(2000, { stroke: this.style.Section.sectionProtectiveTimeReleaseColor })
|
||||
.start();
|
||||
}
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.line.protectiveLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
this.release && this.release.show();
|
||||
this.release && this.release.setStyle({
|
||||
stroke: this.style.Section.line.protectiveLockColor,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
this.release && this.release.animateStyle(true, [
|
||||
{ time: 1000, styles: { stroke: this.style.Section.line.protectiveLockColor } },
|
||||
{ time: 2000, styles: { stroke: this.style.Section.line.protectiveTimeReleaseColor } }
|
||||
]);
|
||||
}
|
||||
|
||||
/** 区段切除*/
|
||||
sectionCutOff() {
|
||||
if (this.release) {
|
||||
const lineWidth = this.style.Section.sectionWidth + (this.model.status != '01' ? this.style.Section.sectionBeyondWidth : 0);
|
||||
this.section.animateStyle(true, [
|
||||
{ time: 0, styles: { lineWidth: lineWidth } },
|
||||
{ time: 1000, styles: { stroke: this.style.backgroundColor } },
|
||||
{ time: 2000, styles: { lineWidth: lineWidth } }
|
||||
]);
|
||||
}
|
||||
const lineWidth = this.style.Section.line.width + (this.model.status != '01' ? this.style.Section.line.beyondWidth : 0);
|
||||
this.section.animateStyle(true, [
|
||||
{ time: 0, styles: { lineWidth: lineWidth } },
|
||||
{ time: 1000, styles: { stroke: this.style.backgroundColor } },
|
||||
{ time: 2000, styles: { lineWidth: lineWidth } }
|
||||
]);
|
||||
}
|
||||
|
||||
/** 设置限速*/
|
||||
setSpeedUpperLimit() {
|
||||
if (this.section) {
|
||||
this.speedLimitLeft.show();
|
||||
this.speedLimitRight.show();
|
||||
this.creatSpeedLimit();
|
||||
}
|
||||
}
|
||||
|
||||
@ -550,8 +594,9 @@ export default class Section extends Group {
|
||||
axleReset() {
|
||||
if (this.release) {
|
||||
this.release.show();
|
||||
this.release.setStyle({
|
||||
stroke: this.style.Section.sectionAxleResetColor
|
||||
this.release && this.release.setStyle({
|
||||
stroke: this.style.Section.axle.resetColor,
|
||||
fill: 'green'
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -560,8 +605,8 @@ export default class Section extends Group {
|
||||
alxeFailure() {
|
||||
if (this.section) {
|
||||
this.section.setStyle({
|
||||
stroke: this.style.Section.sectionAxleFailure,
|
||||
lineWidth: this.style.Section.sectionWidth + this.style.Section.sectionBeyondWidth
|
||||
stroke: this.style.Section.axle.Failure,
|
||||
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -569,7 +614,6 @@ export default class Section extends Group {
|
||||
/** 设置状态*/
|
||||
setState(state) {
|
||||
this.recover();
|
||||
// state.status = '02';
|
||||
switch (state.status) {
|
||||
case '00': /** 未定义*/
|
||||
this.undefine();
|
||||
@ -621,7 +665,6 @@ export default class Section extends Group {
|
||||
if (state.cutOff) {
|
||||
this.sectionCutOff();
|
||||
}
|
||||
|
||||
/** 是否限速*/
|
||||
if (state.speedUpperLimit >= 0) {
|
||||
this.setSpeedUpperLimit();
|
||||
@ -631,12 +674,12 @@ export default class Section extends Group {
|
||||
/** 计算提示位置*/
|
||||
getShapeTipPoint() {
|
||||
let rect = this.getBoundingRect();
|
||||
let distance = this.style.Section.sectionWidth / 2;
|
||||
let distance = this.style.Section.line.width / 2;
|
||||
if (this.section) {
|
||||
rect = this.section.getBoundingRect();
|
||||
if (this.model.type !== '02' && this.model.nameShow) {
|
||||
if (this.model.trainPosType == '01') {
|
||||
distance = distance + this.style.nameDistance + this.style.textFontSize;
|
||||
distance = distance + this.style.nameDistance + this.style.Section.text.fontSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,44 +6,53 @@ class ESigPass extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const rotation = model.drict != 1? 0 : Math.PI;
|
||||
const point = arrows(model.x, model.y, style.Signal.signalSigPassWidth, style.Signal.signalR * 0.8);
|
||||
this.arrows = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
rotation: rotation,
|
||||
shape: {
|
||||
points: point
|
||||
},
|
||||
style: {
|
||||
stroke: model.stroke,
|
||||
lineWidth: model.lineWidth,
|
||||
fill: model.fill
|
||||
}
|
||||
});
|
||||
this.add(this.arrows);
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const rotation = model.drict != 1? 0 : Math.PI;
|
||||
const point = arrows(model.x, model.y, style.Signal.signalAutoWidth, style.Signal.lamp.signalR * 0.8);
|
||||
|
||||
this.isNew = true;
|
||||
this.arrows = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
rotation: rotation,
|
||||
shape: {
|
||||
points: point
|
||||
},
|
||||
style: {
|
||||
stroke: model.stroke,
|
||||
lineWidth: model.lineWidth,
|
||||
fill: model.fill
|
||||
}
|
||||
});
|
||||
this.add(this.arrows);
|
||||
}
|
||||
}
|
||||
|
||||
// 停止动画
|
||||
animationRecover() {
|
||||
this._create();
|
||||
this.arrows.stopAnimation(false);
|
||||
}
|
||||
|
||||
// 箭头颜色
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.arrows.setStyle('fill', color);
|
||||
}
|
||||
|
||||
// 箭头闪烁
|
||||
arrowsAnimation() {
|
||||
this._create();
|
||||
|
||||
const style = this.model.style;
|
||||
const fill = this.arrows.style.Signal.fill;
|
||||
|
||||
this.arrows.animate(true)
|
||||
.when(1000, { fill: style.backgroundColor, stroke: style.style.backgroundColor })
|
||||
.when(2000, { fill: fill, stroke: style.style.Signal.sidelineColor })
|
||||
@ -54,11 +63,13 @@ class ESigPass extends Group {
|
||||
|
||||
// 隐藏
|
||||
hide() {
|
||||
this._create();
|
||||
this.arrows.hide();
|
||||
}
|
||||
|
||||
// 显示
|
||||
show() {
|
||||
this._create();
|
||||
this.arrows.show();
|
||||
}
|
||||
}
|
@ -8,97 +8,99 @@ class ESigButton extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const padding = 1;
|
||||
const r = style.Signal.signalR * 0.8;
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const padding = 1;
|
||||
const r = style.Signal.lamp.signalR * 0.8;
|
||||
|
||||
this.style = style;
|
||||
this._subType = 'SignalButton';
|
||||
this.isNew = true;
|
||||
this.sigNormalButtom = new Rect({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
_subType: 'SignalButton',
|
||||
_val: '1',
|
||||
shape: {
|
||||
x: model.x - style.Signal.lamp.signalR,
|
||||
y: model.y - r + r * model.posit,
|
||||
width: style.Signal.lamp.signalR * 2,
|
||||
height: style.Signal.lamp.signalR * 2
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.2,
|
||||
stroke: style.Signal.button.signalButtonDashColor,
|
||||
fill: style.Signal.button.signalButtonColor
|
||||
}
|
||||
});
|
||||
|
||||
this.sigNormalButtom = new Rect({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
_subType: this._subType,
|
||||
_val: '1',
|
||||
shape: {
|
||||
x: model.x - style.Signal.signalR,
|
||||
y: model.y - r + r * model.posit,
|
||||
width: style.Signal.signalR * 2,
|
||||
height: style.Signal.signalR * 2
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.2,
|
||||
stroke: style.Signal.signalButtonDashColor,
|
||||
fill: style.Signal.signalButtonColor
|
||||
}
|
||||
});
|
||||
this.sigReentryButton = new Circle({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
_subType: 'SignalButton',
|
||||
_val: '2', // 折返按钮
|
||||
shape: {
|
||||
cx: model.x,
|
||||
cy: model.y - 5 / 2 * r * model.posit,
|
||||
r: style.Signal.lamp.signalR
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.2,
|
||||
stroke: style.Signal.button.signalButtonDashColor,
|
||||
fill: style.Signal.button.signalButtonColor
|
||||
}
|
||||
});
|
||||
|
||||
this.sigReentryButton = new Circle({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
_subType: this._subType,
|
||||
_val: '2', // 折返按钮
|
||||
shape: {
|
||||
cx: model.x,
|
||||
cy: model.y - 5 / 2 * r * model.posit,
|
||||
r: style.Signal.signalR
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.2,
|
||||
stroke: style.Signal.signalButtonDashColor,
|
||||
fill: style.Signal.signalButtonColor
|
||||
}
|
||||
});
|
||||
this.sigNormalButtomDown = new Polyline({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: true,
|
||||
shape: { points: [
|
||||
[model.x - padding + r, this.sigNormalButtom.shape.y + padding],
|
||||
[model.x + padding - r, this.sigNormalButtom.shape.y + padding],
|
||||
[model.x + padding - r, this.sigNormalButtom.shape.y + padding * 2 + r]
|
||||
] },
|
||||
style: {
|
||||
lineWidth: 0.8,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
this.sigNormalButtomDown = new Polyline({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: true,
|
||||
shape: { points: [
|
||||
[model.x - padding + r, this.sigNormalButtom.shape.y + padding],
|
||||
[model.x + padding - r, this.sigNormalButtom.shape.y + padding],
|
||||
[model.x + padding - r, this.sigNormalButtom.shape.y + padding * 2 + r]
|
||||
] },
|
||||
style: {
|
||||
lineWidth: 0.8,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
this.sigReentryButtonDown = new Arc({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: true,
|
||||
shape: {
|
||||
cx: this.sigReentryButton.shape.cx,
|
||||
cy: this.sigReentryButton.shape.cy,
|
||||
r: this.sigReentryButton.shape.r - padding,
|
||||
startAngle: Math.PI * 8 / 5,
|
||||
endAngle: Math.PI * 4 / 5,
|
||||
clockwise: false
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.8,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
this.sigReentryButtonDown = new Arc({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: true,
|
||||
shape: {
|
||||
cx: this.sigReentryButton.shape.cx,
|
||||
cy: this.sigReentryButton.shape.cy,
|
||||
r: this.sigReentryButton.shape.r - padding,
|
||||
startAngle: Math.PI * 8 / 5,
|
||||
endAngle: Math.PI * 4 / 5,
|
||||
clockwise: false
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.8,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.sigNormalButtom);
|
||||
this.add(this.sigReentryButton);
|
||||
this.hide();
|
||||
this.add(this.sigNormalButtom);
|
||||
this.add(this.sigReentryButton);
|
||||
this.hide();
|
||||
}
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.sigNormalButtom.hide();
|
||||
this.sigReentryButton.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.sigNormalButtom.show();
|
||||
this.sigReentryButton.show();
|
||||
}
|
||||
|
@ -5,43 +5,53 @@ class ESigDelay extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
this.name = new Text({
|
||||
_subType: model._subType,
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: model.silent || false,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
text: model.text,
|
||||
textFont: model.textFont,
|
||||
textFill: model.textFill,
|
||||
textAlign: model.textAlign,
|
||||
textPosition: model.textPosition || 'inside',
|
||||
textVerticalAlign: model.textVerticalAlign || null
|
||||
}
|
||||
});
|
||||
this.add(this.name);
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
|
||||
this.isNew = true;
|
||||
this.name = new Text({
|
||||
_subType: model._subType,
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: model.silent || false,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
fontWeight: model.fontWeight,
|
||||
fontSize: model.fontSize,
|
||||
fontFamily: model.fontFamily,
|
||||
text: model.text,
|
||||
textFill: model.textFill,
|
||||
textAlign: model.textAlign,
|
||||
textPosition: model.textPosition || 'inside',
|
||||
textVerticalAlign: model.textVerticalAlign || null
|
||||
}
|
||||
});
|
||||
this.add(this.name);
|
||||
}
|
||||
}
|
||||
|
||||
setStyle(model) {
|
||||
this._create();
|
||||
this.name.setStyle(model);
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.name.setStyle('textFill', color);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.name.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.name.show();
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Arc from 'zrender/src/graphic/shape/Arc';
|
||||
import Group from 'zrender/src/container/Group';
|
||||
|
||||
class ESigLmap extends Group {
|
||||
class ESigLamp extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
@ -20,12 +20,12 @@ class ESigLmap extends Group {
|
||||
shape: {
|
||||
cx: model.x,
|
||||
cy: model.y,
|
||||
r: style.Signal.signalR
|
||||
r: style.Signal.lamp.signalR
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.4,
|
||||
lineWidth: style.Signal.lamp.signalBorderWidth,
|
||||
fill: style.backgroundColor,
|
||||
stroke: style.Signal.signalLampStandardColor
|
||||
stroke: style.Signal.post.signalLampStandardColor
|
||||
}
|
||||
});
|
||||
|
||||
@ -37,13 +37,13 @@ class ESigLmap extends Group {
|
||||
y: model.originY
|
||||
},
|
||||
shape: {
|
||||
x1: model.x + (style.Signal.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.signalR + 1) * Math.sin(Math.PI / 4),
|
||||
x2: model.x - (style.Signal.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.signalR + 1) * Math.sin(Math.PI / 4)
|
||||
x1: model.x + (style.Signal.lamp.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.lamp.signalR + 1) * Math.sin(Math.PI / 4),
|
||||
x2: model.x - (style.Signal.lamp.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.lamp.signalR + 1) * Math.sin(Math.PI / 4)
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1.5,
|
||||
lineWidth: style.Signal.lamp.signalStopWidth,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
@ -56,13 +56,13 @@ class ESigLmap extends Group {
|
||||
y: model.originY
|
||||
},
|
||||
shape: {
|
||||
x1: model.x + (style.Signal.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.signalR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2)),
|
||||
x2: model.x - (style.Signal.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.signalR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2))
|
||||
x1: model.x + (style.Signal.lamp.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.lamp.signalR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2)),
|
||||
x2: model.x - (style.Signal.lamp.signalR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.lamp.signalR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2))
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1.5,
|
||||
lineWidth: style.Signal.lamp.signalStopWidth,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
@ -86,4 +86,4 @@ class ESigLmap extends Group {
|
||||
}
|
||||
}
|
||||
|
||||
export default ESigLmap;
|
||||
export default ESigLamp;
|
@ -11,15 +11,16 @@ class ESigName extends Group {
|
||||
_create() {
|
||||
const model = this.model;
|
||||
this.name = new Text({
|
||||
_subType: model._subType,
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: model.silent,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
fontWeight: model.fontWeight,
|
||||
fontSize: model.fontSize,
|
||||
fontFamily: model.fontFamily,
|
||||
text: model.text,
|
||||
textFont: model.textFont,
|
||||
textFill: model.textFill,
|
||||
textAlign: model.textAlign,
|
||||
textPosition: model.textPosition || 'inside',
|
||||
|
@ -17,13 +17,13 @@ class ESigPost extends Group {
|
||||
z: model.z,
|
||||
shape: {
|
||||
points: [
|
||||
[model.x, model.y + style.Signal.signalR * 1.2],
|
||||
[model.x, model.y - style.Signal.signalR * 1.2]
|
||||
[model.x, model.y + style.Signal.lamp.signalR * 1.2],
|
||||
[model.x, model.y - style.Signal.lamp.signalR * 1.2]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.signalLampStandardWidth,
|
||||
stroke: style.Signal.signalLampStandardColor
|
||||
lineWidth: style.Signal.post.signalLampStandardWidth,
|
||||
stroke: style.Signal.post.signalLampStandardColor
|
||||
}
|
||||
});
|
||||
|
||||
@ -33,12 +33,12 @@ class ESigPost extends Group {
|
||||
shape: {
|
||||
points: [
|
||||
[model.x, model.y],
|
||||
[model.x + model.drict * style.Signal.signalR * 1.2, model.y]
|
||||
[model.x + model.drict * style.Signal.lamp.signalR * 1.2, model.y]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.signalLampStandardWidth,
|
||||
stroke: style.Signal.signalLampStandardColor
|
||||
lineWidth: style.Signal.post.signalLampStandardWidth,
|
||||
stroke: style.Signal.post.signalLampStandardColor
|
||||
}
|
||||
});
|
||||
|
||||
@ -53,12 +53,12 @@ class ESigPost extends Group {
|
||||
const style = this.model.style;
|
||||
if (type === '01') {
|
||||
return {
|
||||
x: model.x + model.drict * style.Signal.signalR * 3 / 2,
|
||||
x: model.x + model.drict * style.Signal.lamp.signalR * 3 / 2,
|
||||
y: model.y
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
x: this.hor.shape.points[1][0] + model.drict * style.Signal.signalR,
|
||||
x: this.hor.shape.points[1][0] + model.drict * style.Signal.lamp.signalR,
|
||||
y: this.hor.shape.points[1][1]
|
||||
};
|
||||
}
|
||||
|
@ -6,34 +6,41 @@ class ESigDrict extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
this.sigDrict = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
points: triangular(model.x, model.y, model.drict, style.Signal.signalR)
|
||||
},
|
||||
style: {
|
||||
stroke: style.backgroundColor,
|
||||
lineWidth: 0.5,
|
||||
fill: style.Signal.signalLampYellowColor
|
||||
}
|
||||
});
|
||||
this.add(this.sigDrict);
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
|
||||
this.isNew = true;
|
||||
this.sigDrict = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
points: triangular(model.x, model.y, model.drict, style.Signal.lamp.signalR)
|
||||
},
|
||||
style: {
|
||||
stroke: style.backgroundColor,
|
||||
lineWidth: 0.5,
|
||||
fill: style.Signal.route.signalRouteColor
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.sigDrict);
|
||||
}
|
||||
}
|
||||
|
||||
// 隐藏
|
||||
hide() {
|
||||
this._create();
|
||||
this.sigDrict.hide();
|
||||
}
|
||||
|
||||
// 显示
|
||||
show() {
|
||||
this._create();
|
||||
this.sigDrict.show();
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,8 @@
|
||||
*/
|
||||
|
||||
import ESigPost from './ESigPost';
|
||||
import ESigLmap from './ESigLmap';
|
||||
import ESigPass from './ESigPass';
|
||||
import ESigLamp from './ESigLamp';
|
||||
import ESigAuto from './ESigAuto';
|
||||
import ESigRoute from './ESigRoute';
|
||||
import ESigButton from './ESigButton';
|
||||
import ESigDelay from './ESigDelay';
|
||||
@ -42,20 +42,20 @@ class Signal extends Group {
|
||||
drict: drict,
|
||||
type: model.lampPostType,
|
||||
x: model.position.x,
|
||||
y: model.position.y + posit * (style.Signal.signalDistance + style.Section.sectionWidth + style.Signal.signalR)
|
||||
y: model.position.y + posit * (style.Signal.signalDistance + style.Section.line.width + style.Signal.lamp.signalR)
|
||||
});
|
||||
|
||||
// 信号灯
|
||||
const endPoint = this.sigPost.getLampPosition(model.lampPostType);
|
||||
this.lamps = [];
|
||||
for (let i = 0; i < this.count; i++) {
|
||||
const lamp = new ESigLmap({
|
||||
const lamp = new ESigLamp({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: style,
|
||||
index: i + 1,
|
||||
drict: drict,
|
||||
x: endPoint.x + i * drict * style.Signal.signalR * 2,
|
||||
x: endPoint.x + i * drict * style.Signal.lamp.signalR * 2,
|
||||
y: endPoint.y,
|
||||
originX: model.position.x,
|
||||
originY: model.position.y
|
||||
@ -66,25 +66,28 @@ class Signal extends Group {
|
||||
|
||||
// 信号机名称
|
||||
const sigNameX = model.position.x + model.namePosition.x;
|
||||
const sigNameY = model.position.y + posit * (style.Signal.signalDistance + style.Section.sectionWidth + style.Signal.signalR * 2 + model.namePosition.y);
|
||||
const sigNameY = model.position.y + posit * (style.Signal.signalDistance + style.Section.line.width + style.Signal.lamp.signalR * 2 + model.namePosition.y);
|
||||
this.sigName = new ESigName({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
silent: false,
|
||||
isNoRotation: style.Signal.text.isNoRotation,
|
||||
style: style,
|
||||
x: sigNameX,
|
||||
y: sigNameY,
|
||||
text: model.name,
|
||||
textFont: `bold ${style.Signal.signalTextFontSize} px ${style.textFontFormat}`,
|
||||
textFill: style.Signal.signalTextGreen,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.Signal.text.signalTextFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
textFill: style.Signal.text.signalDefaultTextColor,
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: posit == 1 ? 'top' : 'bottom'
|
||||
});
|
||||
|
||||
// 自动进路
|
||||
const sigRouteH = style.Signal.signalSigRouteDirection ? this.count * style.Signal.signalR * 2 : -style.Signal.signalR * 2;
|
||||
const sigRouteX = endPoint.x + (style.Signal.signalSigRouteOffset.x + sigRouteH) * drict;
|
||||
const sigRouteY = endPoint.y + (style.Signal.signalSigRouteOffset.y);
|
||||
const sigRouteH = style.Signal.route.signalRouteDirection ? this.count * style.Signal.lamp.signalR * 2 : -style.Signal.lamp.signalR * 2;
|
||||
const sigRouteX = endPoint.x + (style.Signal.route.signalRouteOffset.x + sigRouteH) * drict;
|
||||
const sigRouteY = endPoint.y + (style.Signal.route.signalRouteOffset.y);
|
||||
this.sigRoute = new ESigRoute({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
@ -95,36 +98,38 @@ class Signal extends Group {
|
||||
});
|
||||
|
||||
// 自动通过
|
||||
const sigPassH = style.Signal.signalSigPassDirection ? this.count * style.Signal.signalR * 2 : -style.Signal.signalR * 2;
|
||||
const sigPassX = endPoint.x + (style.Signal.signalSigPassOffset.x + sigPassH) * drict;
|
||||
const sigPassY = endPoint.y + (style.Signal.signalSigPassOffset.y);
|
||||
this.sigPass = new ESigPass({
|
||||
const sigAutoH = style.Signal.auto.signalAutoDirection ? this.count * style.Signal.lamp.signalR * 2 : -style.Signal.lamp.signalR * 2;
|
||||
const sigAutoX = endPoint.x + (style.Signal.auto.signalAutoOffset.x + sigAutoH) * drict;
|
||||
const sigAutoY = endPoint.y + (style.Signal.auto.signalAutoOffset.y);
|
||||
this.sigAuto = new ESigAuto({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: style,
|
||||
count: this.count,
|
||||
drict: drict,
|
||||
x: sigPassX,
|
||||
y: sigPassY,
|
||||
width: style.Signal.signalSigPassWidth,
|
||||
fill: style.Signal.signalLampGreenColor,
|
||||
x: sigAutoX,
|
||||
y: sigAutoY,
|
||||
width: style.Signal.signalAutoWidth,
|
||||
fill: style.Signal.lamp.signalAutoRoute,
|
||||
lineWidth: 0.6,
|
||||
stroke: style.sidelineColor
|
||||
});
|
||||
|
||||
// 延迟解锁
|
||||
const sigDelayH = style.Signal.signalSigDelayDirection ? this.count * style.Signal.signalR * 2 : -style.Signal.signalR * 2;
|
||||
const sigDelayX = endPoint.x + (style.Signal.signalSigDelayOffset.x + sigDelayH) * drict;
|
||||
const sigDelayY = endPoint.y - (style.Signal.signalSigDelayOffset.y) * posit;
|
||||
const sigDelayH = style.Signal.delay.signalDelayDirection ? this.count * style.Signal.lamp.signalR * 2 : -style.Signal.lamp.signalR * 2;
|
||||
const sigDelayX = endPoint.x + (style.Signal.delay.signalDelayOffset.x + sigDelayH) * drict;
|
||||
const sigDelayY = endPoint.y - (style.Signal.delay.signalDelayOffset.y) * posit;
|
||||
this.sigDelay = new ESigDelay({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: style,
|
||||
x: sigDelayX,
|
||||
y: sigDelayY,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.Signal.delay.signalDelayTextFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: this.state.delayCount || '0',
|
||||
textFont: `bold ${style.Signal.signalDelayTextFontSize} px ${style.textFontFormat}`,
|
||||
textFill: style.Signal.signalTextRed,
|
||||
textFill: style.Signal.delay.signalDelayTextColor,
|
||||
textAlign: drict > 0 ? 'right' : 'left',
|
||||
textVerticalAlign: 'middle'
|
||||
});
|
||||
@ -137,13 +142,13 @@ class Signal extends Group {
|
||||
posit: posit,
|
||||
show: model.buttonShow,
|
||||
x: model.buttonPosition.x,
|
||||
y: model.buttonPosition.y - posit * (style.Signal.signalButtonDistance + style.Signal.signalR * 2)
|
||||
y: model.buttonPosition.y - posit * (style.Signal.button.signalButtonDistance + style.Signal.lamp.signalR * 2)
|
||||
});
|
||||
|
||||
this.add(this.sigPost);
|
||||
this.lamps.forEach(lamp => { this.add(lamp); });
|
||||
this.add(this.sigName);
|
||||
this.add(this.sigPass);
|
||||
this.add(this.sigAuto);
|
||||
this.add(this.sigRoute);
|
||||
this.add(this.sigDelay);
|
||||
// this.add(this.sigButton);
|
||||
@ -155,7 +160,7 @@ class Signal extends Group {
|
||||
device.eachChild(item => {
|
||||
if (item instanceof Group) {
|
||||
this.transformRotation(item);
|
||||
} else {
|
||||
} else if (item && item.model && item.model.isNoRotation) {
|
||||
item.origin = [this.model.position.x, this.model.position.y];
|
||||
item.rotation = -Math.PI / 180 * Number(this.model.rotate);
|
||||
item.dirty();
|
||||
@ -169,13 +174,13 @@ class Signal extends Group {
|
||||
if (this.count === 1) {
|
||||
if (this.model.useType === '05') {
|
||||
/** 单灯 调车信号机*/
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.signalLampBlueColor);
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.signalLampBlueColor);
|
||||
} else {
|
||||
/** 单灯 出站信号机 */
|
||||
/** 单灯 阻挡信号机*/
|
||||
/** 单灯 阻挡兼调车信号 */
|
||||
/** 单灯 列兼调信号机 */
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.signalLampRedColor);
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.signalLampRedColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -185,7 +190,7 @@ class Signal extends Group {
|
||||
if (this.count === 1) {
|
||||
/** 单灯 出站信号机*/
|
||||
/** 单灯 阻隔信号机*/
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.signalLampGreenColor);
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.signalLampGreenColor);
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,7 +198,7 @@ class Signal extends Group {
|
||||
trainRoute() {
|
||||
if (this.count === 1) {
|
||||
/** 单灯 列兼调信号*/
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.signalLampYellowColor);
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.signalLampYellowColor);
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,7 +207,7 @@ class Signal extends Group {
|
||||
if (this.count === 1) {
|
||||
/** 单灯 列兼调信号*/
|
||||
/** 单灯 阻挡兼调车信号*/
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.signalLampWhiteColor);
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.signalLampWhiteColor);
|
||||
}
|
||||
}
|
||||
|
||||
@ -213,8 +218,8 @@ class Signal extends Group {
|
||||
|
||||
// 封锁
|
||||
block() {
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.signalLampRedColor);
|
||||
this.sigName.setColor(this.style.Signal.sectionBlockTextColor);
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.signalLampRedColor);
|
||||
this.sigName.setColor(this.style.Signal.signalTextBlockColor);
|
||||
}
|
||||
|
||||
// 功能封锁
|
||||
@ -243,25 +248,25 @@ class Signal extends Group {
|
||||
// 设置自动进路模式状态类型
|
||||
setAutoRouteOpen() {
|
||||
if (this.model.linkageAutoRouteShow) {
|
||||
this.sigPass.show();
|
||||
this.sigAuto.show();
|
||||
} else {
|
||||
this.sigPass.hide();
|
||||
this.sigAuto.hide();
|
||||
}
|
||||
|
||||
this.recover();
|
||||
this.sigPass.setColor(this.style.Signal.signalLampGreenColor);
|
||||
this.sigAuto.setColor(this.style.Signal.auto.signalAutoRoute);
|
||||
}
|
||||
|
||||
// 信号机进路自动触发模式状态类型
|
||||
setAutoAccessOpen() {
|
||||
if (this.model.atsAutoTriggerShow) {
|
||||
this.sigPass.show();
|
||||
this.sigAuto.show();
|
||||
} else {
|
||||
this.sigPass.hide();
|
||||
this.sigAuto.hide();
|
||||
}
|
||||
|
||||
this.recover();
|
||||
this.sigPass.setColor(this.style.Signal.signalLampYellowColor);
|
||||
this.sigAuto.setColor(this.style.Signal.auto.signalAutoTrigger);
|
||||
}
|
||||
|
||||
// 设置自动信号模式状态类型
|
||||
@ -271,14 +276,14 @@ class Signal extends Group {
|
||||
|
||||
// 隐藏自动信号和自动进路
|
||||
setAutoClose() {
|
||||
this.sigPass.hide();
|
||||
this.sigPass.setColor(this.style.backgroundColor);
|
||||
this.sigAuto.hide();
|
||||
this.sigAuto.setColor(this.style.backgroundColor);
|
||||
this.sigRoute.hide();
|
||||
}
|
||||
|
||||
// 自动信号和自动进路开始动画
|
||||
setAutoFlicker() {
|
||||
this.sigPass.arrowsAnimation();
|
||||
this.sigAuto.arrowsAnimation();
|
||||
}
|
||||
|
||||
// 设置延时解锁
|
||||
@ -289,8 +294,8 @@ class Signal extends Group {
|
||||
// 恢复状态
|
||||
recover() {
|
||||
this.sigDelay.hide();
|
||||
this.sigPass.animationRecover();
|
||||
this.sigName.setColor(this.style.Signal.signalTextGreen);
|
||||
this.sigAuto.animationRecover();
|
||||
this.sigName.setColor(this.style.Signal.text.signalDefaultTextColor);
|
||||
}
|
||||
|
||||
setState(state) {
|
||||
|
@ -29,10 +29,12 @@ export default class Station extends Group {
|
||||
position: [0, 0],
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
fontWeight: 'bold',
|
||||
fontSize: model.nameFont || 18,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top',
|
||||
textFont: model.nameFont || '18px ' + style.textFontFormat,
|
||||
textFill: model.nameFontColor
|
||||
});
|
||||
let direction = 1;
|
||||
@ -45,10 +47,12 @@ export default class Station extends Group {
|
||||
position: [0, 0],
|
||||
x: model.position.x,
|
||||
y: model.position.y + ((parseInt(model.nameFont) + 2) * direction),
|
||||
fontWeight: 'bold',
|
||||
fontSize: model.kmPostFont || 18,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.kmPost,
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top',
|
||||
textFont: model.kmPostFont || '18px ' + style.textFontFormat,
|
||||
textFill: model.kmPostFontColor
|
||||
});
|
||||
|
||||
|
@ -13,8 +13,8 @@ class ESigAuto extends Group {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const rotation = model.drict != 1? 0 : Math.PI;
|
||||
const x = model.x + model.drict * (model.count * style.Signal.signalR + style.Signal.signalLampStandardWidth) * 2;
|
||||
const y = model.y - style.Signal.signalLampStandardWidth;
|
||||
const x = model.x + model.drict * (model.count * style.Signal.lamp.signalR + style.Signal.post.signalLampStandardWidth) * 2;
|
||||
const y = model.y - style.Signal.post.signalLampStandardWidth;
|
||||
|
||||
this.arrows = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
|
@ -48,9 +48,11 @@ export default class ESingleControl extends Group {
|
||||
style: {
|
||||
x: model.point.x,
|
||||
y: model.point.y + model.style.StationControl.stationControlmodeR + model.style.nameDistance,
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.style.textFontSize,
|
||||
fontFamily: model.style.textFontFormat,
|
||||
text: model.context,
|
||||
textFill: model.style.textFontColor,
|
||||
textFont: model.style.textFontSize + 'px ' + model.style.textFontFormat,
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top'
|
||||
}
|
||||
|
@ -29,11 +29,13 @@ export default class StationCounter extends Group {
|
||||
style: {
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.textFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.val,
|
||||
textFill: style.stationCounterTextColor,
|
||||
textAlign: 'middle',
|
||||
textStrokeWidth: 1,
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat
|
||||
textStrokeWidth: 1
|
||||
}
|
||||
});
|
||||
|
||||
@ -64,12 +66,14 @@ export default class StationCounter extends Group {
|
||||
style: {
|
||||
x: model.position.x,
|
||||
y: model.position.y + this.rect.width + this.vPadding + style.textFontSize + style.nameDistance,
|
||||
fontWeight: 'bold',
|
||||
fontSize: style.textFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: style.stationCounterTextColor,
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top',
|
||||
textStrokeWidth: 1,
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat
|
||||
textStrokeWidth: 1
|
||||
}
|
||||
});
|
||||
this.add(this.counterName);
|
||||
|
@ -29,10 +29,12 @@ export default class StationDelayUnlock extends Group {
|
||||
style: {
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.textFont,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.deviceName + ' ',
|
||||
textFill: style.stationDelayUnlockTextColor,
|
||||
textStrokeWidth: 1,
|
||||
textFont: model.textFont + 'px ' + style.textFontFormat,
|
||||
textAlign: 'left'
|
||||
}
|
||||
});
|
||||
@ -45,10 +47,12 @@ export default class StationDelayUnlock extends Group {
|
||||
style: {
|
||||
x: model.position.x,
|
||||
y: model.position.y + fontSize + style.stationDelayUnlockDistance,
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.textFont,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.remainTime || '',
|
||||
textFill: style.stationDelayUnlockTextColor,
|
||||
textStrokeWidth: 1,
|
||||
textFont: model.textFont + 'px ' + style.textFontFormat,
|
||||
textAlign: 'left'
|
||||
}
|
||||
});
|
||||
|
@ -5,40 +5,47 @@ class EDetain extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
this.detain = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
position: [0, 0],
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
text: style.StationStand.standDetainText,
|
||||
textAlign: model.textAlign,
|
||||
textVerticalAlign: model.textVerticalAlign,
|
||||
fontSize: `${style.StationStand.standHeadFontSize} px ${style.textFontFormat}`,
|
||||
textFill: style.StationStand.standCenterDetainTrainColor,
|
||||
textStroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
|
||||
this.add(this.detain);
|
||||
this.isNew = true;
|
||||
this.detain = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
position: [0, 0],
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
text: style.StationStand.detainCar.text,
|
||||
textAlign: model.textAlign,
|
||||
textVerticalAlign: model.textVerticalAlign,
|
||||
fontSize: `${style.StationStand.stand.headFontSize} px ${style.textFontFormat}`,
|
||||
textFill: style.StationStand.detainCar.centerTrainColor,
|
||||
textStroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.detain);
|
||||
}
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.detain.setStyle('textFill', color);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.detain.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.detain.show();
|
||||
}
|
||||
}
|
||||
|
@ -5,46 +5,51 @@ class EJump extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
|
||||
this.jump = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
text: model.name,
|
||||
textFill: style.StationStand.standLevelTextColor,
|
||||
textAlign: 'middle',
|
||||
textFont: `${style.StationStand.standTextFontSize} px ${style.textFontFormat}`
|
||||
}
|
||||
});
|
||||
this.isNew = true;
|
||||
this.jump = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.StationStand.common.textFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: style.StationStand.level.textColor,
|
||||
textAlign: 'middle'
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.jump);
|
||||
this.add(this.jump);
|
||||
}
|
||||
}
|
||||
|
||||
setName(val) {
|
||||
this.jump.attr({
|
||||
style: {
|
||||
text: val
|
||||
}
|
||||
});
|
||||
this._create();
|
||||
this.jump.setStyle('text', val);
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.jump.setStyle('textFill', color);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.jump.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.jump.show();
|
||||
}
|
||||
}
|
||||
|
@ -5,46 +5,51 @@ class ELevel extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
|
||||
this.level = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
text: model.name,
|
||||
textFill: style.StationStand.standLevelTextColor,
|
||||
textAlign: 'middle',
|
||||
textFont: `${style.StationStand.standTextFontSize} px ${style.textFontFormat}`
|
||||
}
|
||||
});
|
||||
this.isNew = true;
|
||||
this.level = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.StationStand.common.textFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: style.StationStand.level.textColor,
|
||||
textAlign: 'middle'
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.level);
|
||||
this.add(this.level);
|
||||
}
|
||||
}
|
||||
|
||||
setName(val) {
|
||||
this.level.attr({
|
||||
style: {
|
||||
text: val
|
||||
}
|
||||
});
|
||||
this._create();
|
||||
this.level.setStyle('text', val);
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.level.setStyle('textFill', color);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.level.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.level.show();
|
||||
}
|
||||
}
|
||||
|
@ -6,36 +6,42 @@ class EReentry extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
|
||||
this.reentry = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
points: flashlight(model.x, model.y, model.drict, 10, 5, 0, 0, 4)
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.lineWidth,
|
||||
fill: model.fill
|
||||
}
|
||||
});
|
||||
this.isNew = true;
|
||||
this.reentry = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
points: flashlight(model.x, model.y, model.drict, 10, 5, 0, 0, 4)
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.lineWidth,
|
||||
fill: model.fill
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.reentry);
|
||||
this.add(this.reentry);
|
||||
}
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.reentry.setStyle('textFill', color);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.reentry.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.reentry.show();
|
||||
}
|
||||
}
|
||||
|
@ -24,8 +24,8 @@ class ESafeDoor extends Group {
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
stroke: style.StationStand.standDoorDefaultColor,
|
||||
fill: style.StationStand.standDoorDefaultColor
|
||||
stroke: style.StationStand.safetyDoor.defaultColor,
|
||||
fill: style.StationStand.safetyDoor.defaultColor
|
||||
}
|
||||
});
|
||||
|
||||
@ -40,8 +40,8 @@ class ESafeDoor extends Group {
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
stroke: style.StationStand.standDoorDefaultColor,
|
||||
fill: style.StationStand.standDoorDefaultColor
|
||||
stroke: style.StationStand.safetyDoor.defaultColor,
|
||||
fill: style.StationStand.safetyDoor.defaultColor
|
||||
}
|
||||
});
|
||||
|
||||
@ -56,8 +56,8 @@ class ESafeDoor extends Group {
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
stroke: style.StationStand.standDoorDefaultColor,
|
||||
fill: style.StationStand.standDoorDefaultColor
|
||||
stroke: style.StationStand.safetyDoor.defaultColor,
|
||||
fill: style.StationStand.safetyDoor.defaultColor
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -5,37 +5,42 @@ class ESafeEmergent extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
|
||||
this.emergent = new Isogon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
r: model.r,
|
||||
n: model.n
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
stroke: style.StationStand.standEmergentCloseColor,
|
||||
fill: style.StationStand.standEmergentCloseColor
|
||||
}
|
||||
});
|
||||
this.isNew = true;
|
||||
this.emergent = new Isogon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
r: model.r,
|
||||
n: model.n
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
stroke: style.StationStand.standEmergent.closeColor,
|
||||
fill: style.StationStand.standEmergent.closeColor
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.emergent);
|
||||
this.add(this.emergent);
|
||||
}
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.emergent.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.emergent.show();
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ class ESafeStand extends Group {
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
stroke: style.sidelineColor,
|
||||
fill: style.StationStand.standSpareColor
|
||||
fill: style.StationStand.stand.spareColor
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -5,46 +5,51 @@ class ETime extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this._create();
|
||||
this.isNew = false;
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
if (!this.isNew) {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
|
||||
this.time = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
text: model.name,
|
||||
textFill: style.StationStand.standTimeTextColor,
|
||||
textAlign: 'middle',
|
||||
textFont: `${style.StationStand.standTextFontSize} px ${style.textFontFormat}`
|
||||
}
|
||||
});
|
||||
this.isNew = true;
|
||||
this.time = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.StationStand.common.textFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: style.StationStand.stopTime.textColor,
|
||||
textAlign: 'middle'
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.time);
|
||||
this.add(this.time);
|
||||
}
|
||||
}
|
||||
|
||||
setName(val) {
|
||||
this.time.attr({
|
||||
style: {
|
||||
text: val
|
||||
}
|
||||
});
|
||||
this._create();
|
||||
this.time.setStyle('text', val);
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this._create();
|
||||
this.time.setStyle('textFill', color);
|
||||
}
|
||||
|
||||
hide() {
|
||||
this._create();
|
||||
this.time.hide();
|
||||
}
|
||||
|
||||
show() {
|
||||
this._create();
|
||||
this.time.show();
|
||||
}
|
||||
}
|
||||
|
@ -36,14 +36,14 @@ class StationStand extends Group {
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
width: model.width,
|
||||
height: style.StationStand.standSafeHeight,
|
||||
height: style.StationStand.safetyDoor.height,
|
||||
show: model.hasDoor
|
||||
});
|
||||
|
||||
/** 列车站台*/
|
||||
const standH = drict > 0 ? style.StationStand.standSafeHeight : model.height;
|
||||
const standH = drict > 0 ? style.StationStand.safetyDoor.height : model.height;
|
||||
const standX = model.position.x - model.width / 2;
|
||||
const standY = model.position.y + drict * (style.StationStand.standDistance + standH);
|
||||
const standY = model.position.y + drict * (style.StationStand.safetyDoor.distance + standH);
|
||||
this.safeStand = new ESafeStand({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
@ -55,24 +55,24 @@ class StationStand extends Group {
|
||||
});
|
||||
|
||||
/** 站台紧急关闭*/
|
||||
const emergentH = drict > 0 ? style.StationStand.standEmergentR + style.StationStand.standSafeHeight: style.StationStand.standEmergentR;
|
||||
const emergentX = model.position.x + drict * (style.StationStand.standEmergentOffset.x);
|
||||
const emergentY = model.position.y + drict * (style.StationStand.standEmergentOffset.y + emergentH);
|
||||
const emergentH = drict > 0 ? style.StationStand.standEmergent.mergentR + style.StationStand.safetyDoor.height: style.StationStand.standEmergent.mergentR;
|
||||
const emergentX = model.position.x + drict * (style.StationStand.standEmergent.offset.x);
|
||||
const emergentY = model.position.y + drict * (style.StationStand.standEmergent.offset.y + emergentH);
|
||||
this.emergent = new ESafeEmergent({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
style: style,
|
||||
x: emergentX,
|
||||
y: emergentY,
|
||||
r: style.StationStand.standEmergentR,
|
||||
r: style.StationStand.standEmergent.mergentR,
|
||||
n: 4
|
||||
});
|
||||
|
||||
/** 站台折返策略*/
|
||||
const reentryD = style.StationStand.standReentryDirection ? model.height + 6: -style.StationStand.standDistance - style.StationStand.standSafeHeight;
|
||||
const reentryH = drict > 0 ? style.StationStand.standEmergentR : style.StationStand.standEmergentR + style.StationStand.standDistance + reentryD;
|
||||
const reentryX = model.position.x - (style.StationStand.standReentryDirection || drict) * (style.StationStand.standReentryOffset.x - model.width / 2);
|
||||
const reentryY = model.position.y + (style.StationStand.standReentryDirection || drict) * (style.StationStand.standReentryOffset.y) + drict * reentryH;
|
||||
const reentryD = style.StationStand.reentry.direction ? model.height + 6: -style.StationStand.safetyDoor.distance - style.StationStand.safetyDoor.height;
|
||||
const reentryH = drict > 0 ? style.StationStand.standEmergent.mergentR : style.StationStand.standEmergent.mergentR + style.StationStand.safetyDoor.distance + reentryD;
|
||||
const reentryX = model.position.x - (style.StationStand.reentry.direction || drict) * (style.StationStand.reentry.offset.x - model.width / 2);
|
||||
const reentryY = model.position.y + (style.StationStand.reentry.direction || drict) * (style.StationStand.reentry.offset.y) + drict * reentryH;
|
||||
this.reentry = new EReentry({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
@ -81,16 +81,16 @@ class StationStand extends Group {
|
||||
x: reentryX,
|
||||
y: reentryY,
|
||||
lineWidth: 0,
|
||||
fill: style.StationStand.standNoHumanReentryColor
|
||||
fill: style.StationStand.reentry.noHumanColor
|
||||
});
|
||||
|
||||
const distance = style.StationStand.standSafeHeight*2 - style.StationStand.standHeadFontSize/2 - 2;
|
||||
const distance = style.StationStand.safetyDoor.height*2 - style.StationStand.stand.headFontSize/2 - 2;
|
||||
|
||||
/** 站台扣车*/
|
||||
const detainD = style.StationStand.standDetainDirection ? model.height - distance: -style.StationStand.standSafeHeight;
|
||||
const detainH = drict > 0 ? style.StationStand.standEmergentR : style.StationStand.standEmergentR + style.StationStand.standDistance + detainD;
|
||||
const detainX = model.position.x - (style.StationStand.standDetainDirection || drict) * (style.StationStand.standDetainOffset.x - model.width / 2);
|
||||
const detainY = model.position.y + (style.StationStand.standDetainDirection || drict) * (style.StationStand.standDetainOffset.y) + drict * detainH;
|
||||
const detainD = style.StationStand.detainCar.direction ? model.height - distance: -style.StationStand.safetyDoor.height;
|
||||
const detainH = drict > 0 ? style.StationStand.standEmergent.mergentR : style.StationStand.standEmergent.mergentR + style.StationStand.safetyDoor.distance + detainD;
|
||||
const detainX = model.position.x - (style.StationStand.detainCar.direction || drict) * (style.StationStand.detainCar.offset.x - model.width / 2);
|
||||
const detainY = model.position.y + (style.StationStand.detainCar.direction || drict) * (style.StationStand.detainCar.offset.y) + drict * detainH;
|
||||
this.detain = new EDetain({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
@ -102,10 +102,10 @@ class StationStand extends Group {
|
||||
});
|
||||
|
||||
/** 停站时间*/
|
||||
const timeD = style.StationStand.standTimeDirection ? model.height - distance: -style.StationStand.standSafeHeight;
|
||||
const timeH = drict > 0 ? style.StationStand.standEmergentR : style.StationStand.standEmergentR + style.StationStand.standDistance + timeD;
|
||||
const timeX = model.position.x - (style.StationStand.standTimeDirection || drict) * (style.StationStand.standTimeOffset.x - model.width / 2);
|
||||
const timeY = model.position.y + (style.StationStand.standTimeDirection || drict) * (style.StationStand.standTimeOffset.y) + drict * timeH;
|
||||
const timeD = style.StationStand.stopTime.direction ? model.height - distance: -style.StationStand.safetyDoor.height;
|
||||
const timeH = drict > 0 ? style.StationStand.standEmergent.mergentR : style.StationStand.standEmergent.mergentR + style.StationStand.safetyDoor.distance + timeD;
|
||||
const timeX = model.position.x - (style.StationStand.stopTime.direction || drict) * (style.StationStand.stopTime.offset.x - model.width / 2);
|
||||
const timeY = model.position.y + (style.StationStand.stopTime.direction || drict) * (style.StationStand.stopTime.offset.y) + drict * timeH;
|
||||
this.time = new ETime({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
@ -116,10 +116,10 @@ class StationStand extends Group {
|
||||
});
|
||||
|
||||
/** 运行等级*/
|
||||
const levelD = style.StationStand.standLevelDirection ? model.height - distance: -style.StationStand.standSafeHeight;
|
||||
const levelH = drict > 0 ? style.StationStand.standEmergentR : style.StationStand.standEmergentR + style.StationStand.standDistance + levelD;
|
||||
const levelX = model.position.x - (style.StationStand.standLevelDirection || drict) * (style.StationStand.standLevelOffset.x - model.width / 2);
|
||||
const levelY = model.position.y + (style.StationStand.standLevelDirection || drict) * (style.StationStand.standLevelOffset.y) + drict * levelH;
|
||||
const levelD = style.StationStand.level.direction ? model.height - distance: -style.StationStand.safetyDoor.height;
|
||||
const levelH = drict > 0 ? style.StationStand.standEmergent.mergentR : style.StationStand.standEmergent.mergentR + style.StationStand.safetyDoor.distance + levelD;
|
||||
const levelX = model.position.x - (style.StationStand.level.direction || drict) * (style.StationStand.level.offset.x - model.width / 2);
|
||||
const levelY = model.position.y + (style.StationStand.level.direction || drict) * (style.StationStand.level.offset.y) + drict * levelH;
|
||||
this.level = new ELevel({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
@ -154,27 +154,27 @@ class StationStand extends Group {
|
||||
this.reentry.hide();
|
||||
this.emergent.hide();
|
||||
if (this.model.visible) { this.safeDoor.hasDoor(true); }
|
||||
this.safeDoor.setColor(this.style.StationStand.standDoorDefaultColor);
|
||||
this.safeDoor.setColor(this.style.StationStand.safetyDoor.defaultColor);
|
||||
}
|
||||
|
||||
/** 空闲*/
|
||||
spare() {
|
||||
this.safeStand.setColor(this.style.StationStand.standSpareColor);
|
||||
this.safeStand.setColor(this.style.StationStand.stand.spareColor);
|
||||
}
|
||||
|
||||
/** 列车停站*/
|
||||
stop() {
|
||||
this.safeStand.setColor(this.style.StationStand.standStopColor);
|
||||
this.safeStand.setColor(this.style.StationStand.stand.stopColor);
|
||||
}
|
||||
|
||||
/** 指定列车跳站*/
|
||||
designatedJumpStop() {
|
||||
this.safeStand.setColor(this.style.StationStand.standDesignatedJumpStopColor);
|
||||
this.safeStand.setColor(this.style.StationStand.stand.designatedJumpStopColor);
|
||||
}
|
||||
|
||||
/** 站台紧急关闭*/
|
||||
emergentClose() {
|
||||
this.safeStand.setColor(this.style.StationStand.standSpareColor);
|
||||
this.safeStand.setColor(this.style.StationStand.stand.spareColor);
|
||||
this.emergent.show();
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ class StationStand extends Group {
|
||||
|
||||
/** 站台跳停*/
|
||||
jumpStop() {
|
||||
this.safeStand.setColor(this.style.StationStand.standJumpStopColor);
|
||||
this.safeStand.setColor(this.style.StationStand.stand.jumpStopColor);
|
||||
}
|
||||
|
||||
/** 未设置扣车*/
|
||||
@ -195,13 +195,13 @@ class StationStand extends Group {
|
||||
/** 车站扣车*/
|
||||
standDetainTrain() {
|
||||
this.detain.show();
|
||||
this.detain.setColor(this.style.StationStand.standDetainTrainTextColor);
|
||||
this.detain.setColor(this.style.StationStand.detainCar.detainTrainTextColor);
|
||||
}
|
||||
|
||||
/** 中心扣车*/
|
||||
centerDetainTrain() {
|
||||
this.detain.show();
|
||||
this.detain.setColor(this.style.StationStand.standCenterDetainTrainColor);
|
||||
this.detain.setColor(this.style.StationStand.detainCar.centerTrainColor);
|
||||
}
|
||||
|
||||
/** 中心+车站扣车*/
|
||||
@ -233,17 +233,17 @@ class StationStand extends Group {
|
||||
|
||||
/** 屏蔽门正常*/
|
||||
doorNormal() {
|
||||
this.safeDoor.setColor(this.style.StationStand.standDoorDefaultColor);
|
||||
this.safeDoor.setColor(this.style.StationStand.safetyDoor.defaultColor);
|
||||
}
|
||||
|
||||
/** 屏蔽门故障*/
|
||||
doorFault() {
|
||||
this.safeDoor.setColor(this.style.StationStand.standSplitDoorColor);
|
||||
this.safeDoor.setColor(this.style.StationStand.safetyDoor.splitDoorColor);
|
||||
}
|
||||
|
||||
/** 屏蔽门切除*/
|
||||
doorSplit() {
|
||||
this.safeDoor.setColor(this.style.StationStand.standSplitDoorColor);
|
||||
this.safeDoor.setColor(this.style.StationStand.safetyDoor.splitDoorColor);
|
||||
}
|
||||
|
||||
/** 无折返(默认)*/
|
||||
@ -254,12 +254,12 @@ class StationStand extends Group {
|
||||
/** 无人折返*/
|
||||
noHumanReentry() {
|
||||
this.reentry.show();
|
||||
this.reentry.setColor(this.style.StationStand.standNoHumanReentryColor);
|
||||
this.reentry.setColor(this.style.StationStand.reentry.noHumanColor);
|
||||
}
|
||||
/** 自动换端*/
|
||||
autoChangeEnds() {
|
||||
this.reentry.show();
|
||||
this.reentry.setColor(this.style.StationStand.standAutoChangeEndsColor);
|
||||
this.reentry.setColor(this.style.StationStand.reentry.AutoChangeEndsColor);
|
||||
}
|
||||
|
||||
setState(state) {
|
||||
|
@ -34,7 +34,7 @@ class ESwLnversion extends Group {
|
||||
points: model.sectionPoints
|
||||
},
|
||||
style: {
|
||||
fill: style.Section.sectionSpareColor
|
||||
fill: style.Section.line.spareColor
|
||||
},
|
||||
cursor: model.cursor,
|
||||
onmouseover: model.onmouseover,
|
||||
|
@ -19,11 +19,13 @@ class ESwName extends Group {
|
||||
style: {
|
||||
x: model.nameTextX,
|
||||
y: model.nameTextY,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.textFontSize,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: model.name,
|
||||
textAlign: model.triangle.drictx === 1 ? 'left' : 'right',
|
||||
textVerticalAlign: model.triangle.dricty === 1 ? 'top' : 'bottom',
|
||||
textFont: style.textFontSize + 'px ' + style.textFontFormat,
|
||||
textFill: style.Switch.switchTextLossColor
|
||||
textFill: style.Switch.text.switchTextLossColor
|
||||
}
|
||||
});
|
||||
|
||||
@ -47,7 +49,7 @@ class ESwName extends Group {
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
lineDash: [3, 3],
|
||||
stroke: style.Switch.switchTextBorderColor,
|
||||
stroke: style.Switch.text.switchTextBorderColor,
|
||||
fill: style.transparentColor
|
||||
}
|
||||
});
|
||||
@ -58,10 +60,12 @@ class ESwName extends Group {
|
||||
style: {
|
||||
x: model.arrowTextX,
|
||||
y: model.arrowTextY,
|
||||
fontWeight: 'normal',
|
||||
fontSize: 10,
|
||||
fontFamily: style.textFontFormat,
|
||||
text: `道岔区段名称: ${model.sectionName}`,
|
||||
textFill: '#000',
|
||||
textAlign: 'letf',
|
||||
textFont: 10 + 'px consolas',
|
||||
textPadding: 3,
|
||||
textBackgroundColor: style.tipBackgroundColor
|
||||
}
|
||||
|
@ -1,398 +0,0 @@
|
||||
/*
|
||||
* 道岔
|
||||
*/
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
import JTriangle from '../../utils/JTriangle';
|
||||
import ESwName from './ESwName.js';
|
||||
import ESwCore from './ESwCore.js';
|
||||
|
||||
export default class Switch extends Group {
|
||||
constructor({ _code, _type, zlevel, model, state }, style, jmap) {
|
||||
super();
|
||||
this._code = _code;
|
||||
this._type = _type;
|
||||
this.model = model;
|
||||
this.state = state;
|
||||
this.style = style;
|
||||
this.jmap = jmap;
|
||||
this.selected = false;
|
||||
this.zlevel = zlevel;
|
||||
this.z = 8;
|
||||
|
||||
this._create();
|
||||
this.setState(state);
|
||||
}
|
||||
|
||||
_create() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
|
||||
this.triangle = new JTriangle(model.intersection, model.skew);
|
||||
|
||||
let halfWidth = style.Section.sectionWidth / 2;
|
||||
const switchWidth = style.Section.sectionWidth + style.Section.sectionBeyondWidth*2 + 0.8;
|
||||
const swPadding = style.Switch.switchLen;
|
||||
const directx = this.triangle.drictx;
|
||||
const directy = this.triangle.dricty;
|
||||
const direct = -this.triangle.drictx * this.triangle.dricty;
|
||||
const coverLength = switchWidth * 1.5;
|
||||
|
||||
this.swCore = new ESwCore({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: style,
|
||||
intersectionX: model.intersection.x,
|
||||
intersectionY: model.intersection.y,
|
||||
coverLength: coverLength,
|
||||
lineWidth: switchWidth,
|
||||
triangle: this.triangle
|
||||
});
|
||||
|
||||
halfWidth += 0.3;
|
||||
const point1 = [model.intersection.x - directx * halfWidth, model.intersection.y + directy * halfWidth];
|
||||
const point2 = [point1[0] + directx * switchWidth / this.triangle.getSinRate(), point1[1]];
|
||||
const point3 = [point2[0] + directx * this.triangle.getCotRate() * swPadding, point2[1] + directy * swPadding];
|
||||
const point4 = [point3[0] + direct * this.triangle.getSin(switchWidth), point3[1] - direct * this.triangle.getCos(switchWidth)];
|
||||
this.locShelter = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
points: [
|
||||
point1, point2, point3, point4
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style.backgroundColor
|
||||
},
|
||||
cursor: 'pointer',
|
||||
onmouseover: () => { this.name.getArrowText().show(); },
|
||||
onmouseout: () => { this.name.getArrowText().hide(); }
|
||||
});
|
||||
const lpx = Math.abs(this.triangle.getCos(1));
|
||||
this.locShelter.position = [directx * lpx, -directy * 0.2];
|
||||
this.locShelter.show();
|
||||
|
||||
const slen = switchWidth / this.triangle.getSinRate();
|
||||
const rpoint1 = [model.intersection.x + directx * halfWidth, model.intersection.y - directy * halfWidth];
|
||||
const rpoint2 = [rpoint1[0] + directx * (swPadding + switchWidth * this.triangle.getCotRate()), rpoint1[1]];
|
||||
const rpoint3 = [rpoint2[0], rpoint2[1] + directy * switchWidth];
|
||||
const rpoint4 = [rpoint1[0] + this.triangle.getCos(slen), rpoint1[1] + this.triangle.getSin(slen)];
|
||||
this.relocShelter = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
points: [
|
||||
rpoint1, rpoint2, rpoint3, rpoint4
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style.backgroundColor
|
||||
},
|
||||
cursor: 'pointer',
|
||||
onmouseover: () => { this.name.getArrowText().show(); },
|
||||
onmouseout: () => { this.name.getArrowText().hide(); }
|
||||
});
|
||||
const rpx = Math.abs(this.triangle.getCos(halfWidth)) + 0.2;
|
||||
this.relocShelter.position = [-directx * rpx, -directy * 0.2];
|
||||
this.relocShelter.hide();
|
||||
|
||||
const sinX = style.Section.sectionWidth / this.triangle.getSinRate();
|
||||
const switchWidth1 = style.Section.sectionWidth / 2;
|
||||
const width1 = switchWidth1 * this.triangle.getSinRate();
|
||||
const height1 = switchWidth1 * this.triangle.getCosRate();
|
||||
const width2 = (height1 + switchWidth1) / this.triangle.getTanRate();
|
||||
const width3 = sinX - width2 - width1;
|
||||
const switchPoint1 = [model.intersection.x + directx * width3, model.intersection.y - directy * switchWidth1];
|
||||
const switchPoint2 = [switchPoint1[0] - directx * (width2 + width1) - directx * width3, switchPoint1[1]];
|
||||
const switchPoint3 = [model.intersection.x - directx * width3, model.intersection.y + directy * switchWidth1];
|
||||
const switchPoint4 = [switchPoint1[0] + directx * (width2 + width1) - directx * width3, switchPoint3[1]];
|
||||
this.reserveSection = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
shape: {
|
||||
points: [
|
||||
switchPoint1, switchPoint2, switchPoint3, switchPoint4
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style.Section.sectionSpareColor
|
||||
},
|
||||
cursor: 'pointer',
|
||||
onmouseover: () => { this.name.getArrowText().show(); },
|
||||
onmouseout: () => { this.name.getArrowText().hide(); }
|
||||
});
|
||||
this.reserveSection.hide();
|
||||
|
||||
this.releaseBackground = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x1: model.intersection.x - (coverLength * this.triangle.getCotRate()),
|
||||
y1: model.intersection.y,
|
||||
x2: model.intersection.x + (coverLength * this.triangle.getCotRate()),
|
||||
y2: model.intersection.y
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Section.sectionWidth + style.Section.sectionBeyondWidth + 1,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
const arrowTextX = model.intersection.x + 10;
|
||||
const arrowTextY = model.intersection.y + 15;
|
||||
const nameTextX = model.namePosition.x + model.intersection.x + this.triangle.drictx * (style.Section.sectionWidth * 3 + style.Switch.switchNameDistance) * this.triangle.getCotRate();
|
||||
const nameTextY = model.namePosition.y + model.intersection.y + this.triangle.dricty * (style.Switch.switchNameDistance);
|
||||
this.name = new ESwName({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: style,
|
||||
arrowTextX: arrowTextX,
|
||||
arrowTextY: arrowTextY,
|
||||
nameTextX: nameTextX,
|
||||
nameTextY: nameTextY,
|
||||
sectionName: model.sectionName,
|
||||
name: model.name,
|
||||
nameShow: model.nameShow,
|
||||
triangle: this.triangle
|
||||
});
|
||||
|
||||
this.add(this.swCore);
|
||||
this.add(this.locShelter);
|
||||
this.add(this.relocShelter);
|
||||
this.add(this.reserveSection);
|
||||
this.add(this.releaseBackground);
|
||||
this.add(this.name);
|
||||
}
|
||||
|
||||
/** 名称动画*/
|
||||
nameTextAnimation() {
|
||||
this.name.getNameText().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Switch.switchTextLossColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
|
||||
this.name.getTextRect().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Switch.switchTextBorderColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
}
|
||||
|
||||
/** 设置岔芯是否隐藏*/
|
||||
setSwitchCoreInvisible(invisible) {
|
||||
if (invisible) {
|
||||
this.swCore.hide();
|
||||
} else {
|
||||
this.swCore.show();
|
||||
}
|
||||
}
|
||||
|
||||
/** 设置岔芯颜色*/
|
||||
setSwitchCoreColor(color) {
|
||||
this.swCore.setColor(color);
|
||||
}
|
||||
|
||||
/** 设置道岔文字颜色*/
|
||||
setTextColor(color) {
|
||||
this.name.getNameText().setStyle('textFill', color);
|
||||
}
|
||||
|
||||
/** 设置道岔文字边框颜色 */
|
||||
setHasTextBorder(width) {
|
||||
this.name.getTextRect().setStyle('lineWidth', width);
|
||||
}
|
||||
|
||||
/** 恢复状态*/
|
||||
recover() {
|
||||
this.setSwitchCoreColor(this.style.backgroundColor);
|
||||
this.name.getNameText().stopAnimation(false);
|
||||
this.reserveSection.stopAnimation(false);
|
||||
this.swCore.stopAnimation(false);
|
||||
|
||||
this.relocShelter.hide();
|
||||
this.releaseBackground.hide();
|
||||
|
||||
this.setHasTextBorder(0);
|
||||
switch (this.state.locateType) {
|
||||
case '01':
|
||||
this.setTextColor(this.style.Switch.switchLocateTextColor);
|
||||
break;
|
||||
case '02':
|
||||
this.setTextColor(this.style.Switch.switchInversionColor);
|
||||
break;
|
||||
default:
|
||||
this.setTextColor(this.style.Switch.switchTextLossColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** 定位*/
|
||||
setLocationAction() {
|
||||
this.recover();
|
||||
this.setSwitchCoreInvisible(true);
|
||||
this.locShelter.show();
|
||||
this.relocShelter.hide();
|
||||
this.reserveSection.hide();
|
||||
}
|
||||
|
||||
/** 反位*/
|
||||
setInversionAction() {
|
||||
this.recover();
|
||||
this.setSwitchCoreInvisible(true);
|
||||
this.locShelter.hide();
|
||||
this.relocShelter.show();
|
||||
this.reserveSection.show();
|
||||
}
|
||||
|
||||
/** 失去*/
|
||||
setLossAction(nameFlicker) {
|
||||
this.recover();
|
||||
this.locShelter.hide();
|
||||
this.relocShelter.hide();
|
||||
this.reserveSection.hide();
|
||||
this.setSwitchCoreInvisible(false);
|
||||
nameFlicker && this.nameTextAnimation();
|
||||
}
|
||||
|
||||
/** 挤叉*/
|
||||
setForkAction() {
|
||||
this.setLossAction(true);
|
||||
this.swCore.animateStyle(item => {
|
||||
item.animateStyle(true)
|
||||
.when(0, { stroke: this.style.backgroundColor })
|
||||
.when(1000, { stroke: 'red' })
|
||||
.when(2000, { stroke: this.style.backgroundColor })
|
||||
.start();
|
||||
});
|
||||
}
|
||||
|
||||
/** 空闲*/
|
||||
spare() {
|
||||
}
|
||||
|
||||
/** 单锁*/
|
||||
setMonolock() {
|
||||
this.setTextColor(this.style.Switch.switchMonolockColor);
|
||||
}
|
||||
|
||||
/** 封锁 */
|
||||
block() {
|
||||
this.setHasTextBorder(1);
|
||||
}
|
||||
|
||||
/** 延时释放*/
|
||||
timeRelease() {
|
||||
this.setSwitchCoreInvisible(true);
|
||||
this.releaseBackground.show();
|
||||
}
|
||||
|
||||
/** 设置道岔切除*/
|
||||
setSwitchCutOff() {
|
||||
this.setSwitchCoreInvisible(true);
|
||||
switch (this.model.locateType) {
|
||||
case '01':
|
||||
this.releaseBackground.hide();
|
||||
this.setSectionState(this.release, 'stroke', this.model.sectionAstatus);
|
||||
break;
|
||||
case '02':
|
||||
this.reserveSection.animateStyle(true)
|
||||
.when(1000, { fill: this.style.backgroundColor })
|
||||
.start();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setSectionState(section, style, state) {
|
||||
if (section) {
|
||||
switch (state) {
|
||||
case '00': break;
|
||||
case '01': /** 空闲*/
|
||||
section.setStyle(style, this.style.Section.sectionSpareColor);
|
||||
break;
|
||||
case '02': /** 通信车占用*/
|
||||
section.setStyle(style, this.style.Section.sectionCommunicationOccupiedColor);
|
||||
break;
|
||||
case '03': /** 非通信车占用*/
|
||||
section.setStyle(style, this.style.Section.sectionUnCommunicationOccupiedColor);
|
||||
break;
|
||||
case '04': /** 进路锁闭*/
|
||||
section.setStyle(style, this.style.Section.sectionRouteLockColor);
|
||||
break;
|
||||
case '05': /** 故障锁闭*/
|
||||
section.setStyle(style, this.style.Section.sectionFaultLockColor);
|
||||
break;
|
||||
case '06': /** 封锁*/
|
||||
section.setStyle(style, this.style.Section.sectionBlockColor);
|
||||
break;
|
||||
case '07': /** ATC切除*/
|
||||
section.setStyle(style, this.style.Section.sectionAtcExcisionColor);
|
||||
break;
|
||||
case '08': /** ATS切除*/
|
||||
section.setStyle(style, this.style.Section.sectionAtsExcisionColor);
|
||||
section.animateStyle(true)
|
||||
.when(1000, { fill: this.style.backgroundColor })
|
||||
.when(2000, { fill: this.style.Section.sectionAtsExcisionColor })
|
||||
.start();
|
||||
break;
|
||||
case '09': /** 进路延续保护 */
|
||||
section.setStyle(style, this.style.Section.sectionProtectiveLockColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setLocateType(state) {
|
||||
this.setSectionState(this.reserveSection, 'fill', this.model.sectionCstatus);
|
||||
switch (state.locateType) {
|
||||
case '01':
|
||||
this.setLocationAction(); /** 定位*/
|
||||
break;
|
||||
case '02':
|
||||
this.setInversionAction(); /** 反位*/
|
||||
break;
|
||||
case '03':
|
||||
this.setLossAction(true); /** 失去*/
|
||||
break;
|
||||
case '04':
|
||||
this.setForkAction(); /** 挤岔*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setState(state) {
|
||||
this.setLocateType(state);
|
||||
switch (state.status) {
|
||||
case '01':
|
||||
this.spare(); /** 空闲*/
|
||||
break;
|
||||
case '10':
|
||||
this.setMonolock(); /** 单锁*/
|
||||
break;
|
||||
case '13':
|
||||
this.timeRelease(); /** 延时释放*/
|
||||
break;
|
||||
case '14':
|
||||
this.block(); /** 封锁*/
|
||||
break;
|
||||
}
|
||||
|
||||
/** 区段切除*/
|
||||
if (state.cutOff) {
|
||||
this.setSwitchCutOff();
|
||||
}
|
||||
}
|
||||
|
||||
getShapeTipPoint() {
|
||||
let rect = null;
|
||||
rect = this.name.getNameText().getBoundingRect();
|
||||
if (rect) {
|
||||
return {
|
||||
x: rect.x + rect.width / 2,
|
||||
y: rect.y
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ export default class Switch extends Group {
|
||||
this.jmap = jmap;
|
||||
this.selected = false;
|
||||
this.zlevel = zlevel;
|
||||
this.z = 8;
|
||||
this.z = 6;
|
||||
|
||||
this._create();
|
||||
this.setState(state);
|
||||
@ -32,9 +32,9 @@ export default class Switch extends Group {
|
||||
|
||||
this.triangle = new JTriangle(model.intersection, model.skew);
|
||||
|
||||
let halfWidth = style.Section.sectionWidth / 2;
|
||||
const switchWidth = style.Section.sectionWidth + style.Section.sectionBeyondWidth*2 + 0.8;
|
||||
const swPadding = style.Switch.switchLen;
|
||||
let halfWidth = style.Section.line.width / 2;
|
||||
const switchWidth = style.Section.line.width + style.Section.line.beyondWidth*2 + 0.8;
|
||||
const swPadding = style.Switch.core.switchLen;
|
||||
const directx = this.triangle.drictx;
|
||||
const directy = this.triangle.dricty;
|
||||
const direct = -this.triangle.drictx * this.triangle.dricty;
|
||||
@ -73,11 +73,11 @@ export default class Switch extends Group {
|
||||
const rpoint3 = [rpoint2[0], rpoint2[1] + directy * switchWidth];
|
||||
const rpoint4 = [rpoint1[0] + this.triangle.getCos(slen), rpoint1[1] + this.triangle.getSin(slen)];
|
||||
|
||||
const switchWidth1 = style.Section.sectionWidth / 2;
|
||||
const switchWidth1 = style.Section.line.width / 2;
|
||||
const width1 = switchWidth1 * this.triangle.getSinRate();
|
||||
const height1 = switchWidth1 * this.triangle.getCosRate();
|
||||
const width2 = (height1 + switchWidth1) / this.triangle.getTanRate();
|
||||
const width3 = (style.Section.sectionWidth / this.triangle.getSinRate()) - width2 - width1;
|
||||
const width3 = (style.Section.line.width / this.triangle.getSinRate()) - width2 - width1;
|
||||
const spoint1 = [model.intersection.x + directx * width3, model.intersection.y - directy * switchWidth1];
|
||||
const spoint2 = [spoint1[0] - directx * (width2 + width1) - directx * width3, spoint1[1]];
|
||||
const spoint3 = [model.intersection.x - directx * width3, model.intersection.y + directy * switchWidth1];
|
||||
@ -106,15 +106,15 @@ export default class Switch extends Group {
|
||||
y2: model.intersection.y
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Section.sectionWidth + style.Section.sectionBeyondWidth + 1,
|
||||
lineWidth: style.Section.line.width + style.Section.line.beyondWidth + 1,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
const arrowTextX = model.intersection.x + 10;
|
||||
const arrowTextY = model.intersection.y + 15;
|
||||
const nameTextX = model.namePosition.x + model.intersection.x + this.triangle.drictx * (style.Section.sectionWidth * 3 + style.Switch.switchNameDistance) * this.triangle.getCotRate();
|
||||
const nameTextY = model.namePosition.y + model.intersection.y + this.triangle.dricty * (style.Switch.switchNameDistance);
|
||||
const nameTextX = model.namePosition.x + model.intersection.x + this.triangle.drictx * (style.Section.line.width * 3 + style.Switch.text.switchNameDistance) * this.triangle.getCotRate();
|
||||
const nameTextY = model.namePosition.y + model.intersection.y + this.triangle.dricty * (style.Switch.text.switchNameDistance);
|
||||
this.name = new ESwName({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
@ -140,13 +140,13 @@ export default class Switch extends Group {
|
||||
nameTextAnimation() {
|
||||
this.name.getNameText().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Switch.switchTextLossColor })
|
||||
.when(1000, { textFill: this.style.Switch.text.switchTextLossColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
|
||||
this.name.getTextRect().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Switch.switchTextBorderColor })
|
||||
.when(1000, { textFill: this.style.Switch.text.switchTextBorderColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
}
|
||||
@ -187,13 +187,13 @@ export default class Switch extends Group {
|
||||
this.setHasTextBorder(0);
|
||||
switch (this.state.locateType) {
|
||||
case '01':
|
||||
this.setTextColor(this.style.Switch.switchLocateTextColor);
|
||||
this.setTextColor(this.style.Switch.text.switchTextLocateColor);
|
||||
break;
|
||||
case '02':
|
||||
this.setTextColor(this.style.Switch.switchInversionColor);
|
||||
this.setTextColor(this.style.Switch.text.switchTextInversionColor);
|
||||
break;
|
||||
default:
|
||||
this.setTextColor(this.style.Switch.switchTextLossColor);
|
||||
this.setTextColor(this.style.Switch.text.switchTextLossColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -276,35 +276,35 @@ export default class Switch extends Group {
|
||||
switch (state) {
|
||||
case '00': break;
|
||||
case '01': /** 空闲*/
|
||||
section.setStyle(style, this.style.Section.sectionSpareColor);
|
||||
section.setStyle(style, this.style.Section.line.spareColor);
|
||||
break;
|
||||
case '02': /** 通信车占用*/
|
||||
section.setStyle(style, this.style.Section.sectionCommunicationOccupiedColor);
|
||||
section.setStyle(style, this.style.Section.line.communicationOccupiedColor);
|
||||
break;
|
||||
case '03': /** 非通信车占用*/
|
||||
section.setStyle(style, this.style.Section.sectionUnCommunicationOccupiedColor);
|
||||
section.setStyle(style, this.style.Section.line.unCommunicationOccupiedColor);
|
||||
break;
|
||||
case '04': /** 进路锁闭*/
|
||||
section.setStyle(style, this.style.Section.sectionRouteLockColor);
|
||||
section.setStyle(style, this.style.Section.line.routeLockColor);
|
||||
break;
|
||||
case '05': /** 故障锁闭*/
|
||||
section.setStyle(style, this.style.Section.sectionFaultLockColor);
|
||||
section.setStyle(style, this.style.Section.line.faultLockColor);
|
||||
break;
|
||||
case '06': /** 封锁*/
|
||||
section.setStyle(style, this.style.Section.sectionBlockColor);
|
||||
section.setStyle(style, this.style.Section.line.blockColor);
|
||||
break;
|
||||
case '07': /** ATC切除*/
|
||||
section.setStyle(style, this.style.Section.sectionAtcExcisionColor);
|
||||
section.setStyle(style, this.style.Section.line.atcExcisionColor);
|
||||
break;
|
||||
case '08': /** ATS切除*/
|
||||
section.setStyle(style, this.style.Section.sectionAtsExcisionColor);
|
||||
section.setStyle(style, this.style.Section.line.atsExcisionColor);
|
||||
section.animateStyle(true)
|
||||
.when(1000, { fill: this.style.backgroundColor })
|
||||
.when(2000, { fill: this.style.Section.sectionAtsExcisionColor })
|
||||
.when(2000, { fill: this.style.Section.line.atsExcisionColor })
|
||||
.start();
|
||||
break;
|
||||
case '09': /** 进路延续保护 */
|
||||
section.setStyle(style, this.style.Section.sectionProtectiveLockColor);
|
||||
section.setStyle(style, this.style.Section.line.protectiveLockColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -34,11 +34,13 @@ export default class ZcControl extends Group {
|
||||
position: [0, 0],
|
||||
x: model.position.x,
|
||||
y: model.position.y + this.style.zcControlmodeR + this.style.nameDistance,
|
||||
fontWeight: 'normal',
|
||||
fontSize: this.style.stationControlTextSize,
|
||||
fontFamily: this.style.textFontFormat,
|
||||
text: model.name,
|
||||
textFill: '#fff',
|
||||
textAlign: 'middle',
|
||||
textVerticalAlign: 'top',
|
||||
textFont: this.style.stationControlTextSize + 'px ' + this.style.textFontFormat
|
||||
textVerticalAlign: 'top'
|
||||
},
|
||||
style: this.style
|
||||
});
|
||||
|
@ -35,11 +35,13 @@ export default class EControl extends Group {
|
||||
style: {
|
||||
x: this.textStyle.x,
|
||||
y: this.textStyle.y,
|
||||
fontWeight: this.textStyle.fontWeight,
|
||||
fontSize: this.textStyle.fontSize,
|
||||
fontFamily: this.textStyle.fontFamily,
|
||||
text: this.textStyle.text,
|
||||
textFill: this.textStyle.textFill,
|
||||
textAlign: this.textStyle.textAlign,
|
||||
textVerticalAlign: this.textStyle.textVerticalAlign,
|
||||
textFont: this.textStyle.textFont
|
||||
textVerticalAlign: this.textStyle.textVerticalAlign
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -4,15 +4,16 @@ import Text from 'zrender/src/graphic/Text';
|
||||
/** 名称元素*/
|
||||
export default function ETextName(model) {
|
||||
const TextName = new Text({
|
||||
_subType: model._subType,
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
silent: model.silent || false,
|
||||
style: {
|
||||
x: model.x,
|
||||
y: model.y,
|
||||
fontWeight: model.fontWeight,
|
||||
fontSize: model.fontSize,
|
||||
fontFamily: model.fontFamily,
|
||||
text: model.text,
|
||||
textFont: model.textFont,
|
||||
textFill: model.textFill,
|
||||
textAlign: model.textAlign,
|
||||
textPosition: model.textPosition || 'inside',
|
||||
|
@ -79,7 +79,7 @@ class Batong extends defaultSkin {
|
||||
/** 信号机宽度 */
|
||||
signalR: 5,
|
||||
/** 自动信号宽度*/
|
||||
signalSigPassWidth: 6,
|
||||
signalAutoWidth: 6,
|
||||
/** 延迟解锁字体大小*/
|
||||
signalDelayTextFontSize: 10,
|
||||
/** 信号机名称字体大小*/
|
||||
@ -235,7 +235,7 @@ class Batong extends defaultSkin {
|
||||
/** 道岔失去颜色*/
|
||||
switchTextLossColor: '#FFFFFF',
|
||||
/** 道岔定位颜色*/
|
||||
switchLocateTextColor: '#00FF00',
|
||||
switchTextLocateColor: '#00FF00',
|
||||
/** 道岔反位颜色*/
|
||||
switchInversionColor: '#9C9D09',
|
||||
/** 道岔单锁颜色*/
|
||||
|
@ -7,211 +7,201 @@ class Beijing extends defaultSkin {
|
||||
this[deviceType.Link] = {
|
||||
/** line 颜色*/
|
||||
lineWidthColor: '#FFFFFF',
|
||||
|
||||
/** link 宽度*/
|
||||
linkWidth: 4.4,
|
||||
|
||||
/** link 线条颜色*/
|
||||
linkColor: '#3F3F3F',
|
||||
|
||||
/** link 字体颜色*/
|
||||
linkTextColor: '#FFFFFF'
|
||||
};
|
||||
this[deviceType.Section] = {
|
||||
sectionTextPosition: 1, // 区段名称位置 1 上行 -1 下面 0 默认
|
||||
/** 区段 宽度*/
|
||||
sectionWidth: 5,
|
||||
/** 区段宽超出宽度*/
|
||||
sectionBeyondWidth: 0,
|
||||
/** 计轴 半径*/
|
||||
sectionAxleR: 3,
|
||||
/** 计轴和区段之间的距离*/
|
||||
sectionAxleDistance: 5,
|
||||
/** 限速线的宽度*/
|
||||
sectionSpeedLimitLinewidth: 1,
|
||||
/** 限速线距离区段距离*/
|
||||
sectionSpeedLimitDistance: 5,
|
||||
/** 分隔符宽度*/
|
||||
sectionSeparatorWidth: 1.2,
|
||||
sectionEndSeparatorWidth: 1.2, // 尽头分隔符宽度
|
||||
sectionEndSeparatorStroke: '#7F7F7F', // 尽头分隔符颜色
|
||||
/** 区段侵入颜色*/
|
||||
sectionInvadeColor: '#EF0C08',
|
||||
/** 限速线颜色*/
|
||||
sectionSpeedLimitColor: '#FFFF00',
|
||||
/** 逻辑区段颜色*/
|
||||
sectionLogicalBackgroundColor: '#FFFF00',
|
||||
/** 区段计轴颜色*/
|
||||
sectionAxleColor: '#C0C0C0',
|
||||
/** 区段边界符颜色*/
|
||||
sectionSeparatorColor: '#7F7F7F',
|
||||
/** 区段空闲颜色*/
|
||||
sectionSpareColor: '#606060',
|
||||
/** 逻辑区段名称颜色*/
|
||||
sectionLogicalTextColor: '#C0C0C0',
|
||||
/** 区段通信车占用颜色**/
|
||||
sectionCommunicationOccupiedColor: '#FF0000',
|
||||
/** 区段非通讯车占用颜色*/
|
||||
sectionUnCommunicationOccupiedColor: '#800080',
|
||||
/** 区段路由锁定颜色*/
|
||||
sectionRouteLockColor: '#FFFFFF',
|
||||
/** 区段故障锁定颜色*/
|
||||
sectionFaultLockColor: '#006400',
|
||||
/** 区段未定义颜色*/
|
||||
sectionUndefinedColor: '#0071C1',
|
||||
/** 保护区段锁闭*/
|
||||
sectionProtectionSectionLockedColor: '#FEFF00',
|
||||
/** 区段计轴预复位*/
|
||||
sectionAxleResetColor: '#00FFFF',
|
||||
/** 区段封锁颜色*/
|
||||
sectionBlockColor: '#800080',
|
||||
/** 区段atc切除颜色*/
|
||||
sectionAtcExcisionColor: '#A0522D',
|
||||
/** 区段ats切除颜色*/
|
||||
sectionAtsExcisionColor: '#A0522D',
|
||||
/** 区段延时释放颜色*/
|
||||
sectionTimeReleaseColor: '#3F3F3F',
|
||||
/** 区段保护锁闭*/
|
||||
sectionProtectiveLockColor: '#FFFF00',
|
||||
/** 区段保护延时解锁*/
|
||||
sectionProtectiveTimeReleaseColor: '#0071C1',
|
||||
/** 计轴失效*/
|
||||
sectionAxleFailure: '#E6A23C' // #FFFF00
|
||||
text: { // 区段文字属性
|
||||
fontSize: 10, // 字体大小
|
||||
fontFormat: 'consolas', // 字体族类
|
||||
fontColor: '#C0C0C0', // 字体颜色
|
||||
textAlign: 'center', // 水平对齐方式
|
||||
textPosition: 'inside', // 文字位置
|
||||
textVerticalAlign: 'middle', // 文字垂直对齐方式
|
||||
position: 1 // 区段名称位置 1 上面 -1 下面 0 默认
|
||||
},
|
||||
line: {
|
||||
width: 5, // 区段宽度
|
||||
beyondWidth: 0, // 区段宽超出宽度
|
||||
invadeColor: '#EF0C08', // 区段侵入颜色
|
||||
spareColor: '#606060', // 区段空闲颜色
|
||||
communicationOccupiedColor: '#FF0000', // 区段通信车占用颜色
|
||||
unCommunicationOccupiedColor: '#800080', // 区段非通讯车占用颜色
|
||||
routeLockColor: '#FFFFFF', // 区段路由锁定颜色
|
||||
faultLockColor: '#006400', // 区段故障锁定颜色
|
||||
undefinedColor: '#0071C1', // 区段未定义颜色
|
||||
protectionLockedColor: '#FEFF00', // 保护区段锁闭(未用)
|
||||
blockColor: '#800080', // 区段封锁颜色
|
||||
atcExcisionColor: '#A0522D', // 区段atc切除颜色
|
||||
atsExcisionColor: '#A0522D', // 区段ats切除颜色
|
||||
timeReleaseColor: '#3F3F3F', // 区段延时释放颜色
|
||||
protectiveLockColor: '#FFFF00', // 区段保护锁闭
|
||||
protectiveTimeReleaseColor: '#0071C1', // 区段保护延时解锁
|
||||
logicalColor: '#FFFF00', // 逻辑区段颜色 (未用)
|
||||
logicalTextColor: '#C0C0C0' // 逻辑区段名称颜色 (未用)
|
||||
},
|
||||
axle: {
|
||||
radius: 3, // 计轴 半径
|
||||
distance: 5, // 计轴和区段之间的距离 (未用)
|
||||
color: '#C0C0C0', // 区段计轴颜色
|
||||
resetColor: '#00FFFF', // 区段计轴预复位颜色
|
||||
Failure: '#E6A23C' // #FFFF00 计轴失效
|
||||
},
|
||||
speedLimit: { // 限速元素
|
||||
width: 1, // 限速线的宽度
|
||||
Distance: 5, // 限速线距离区段距离
|
||||
lineColor: '#FFFF00' // 限速线颜色
|
||||
},
|
||||
separator: {
|
||||
width: 1.5, // 分隔符宽度
|
||||
endWidth: 1.5, // 尽头分隔符宽度
|
||||
endColor: '#7F7F7F', // 尽头分隔符颜色
|
||||
color: '#7F7F7F' // 区段边界符颜色
|
||||
}
|
||||
};
|
||||
this[deviceType.Signal] = {
|
||||
/** 信号机宽度 */
|
||||
signalR: 7,
|
||||
/** 自动信号宽度*/
|
||||
signalSigPassWidth: 5,
|
||||
/** 延迟解锁字体大小*/
|
||||
signalDelayTextFontSize: 10,
|
||||
/** 信号机名称字体大小*/
|
||||
signalTextFontSize: 12,
|
||||
/** 灯柱宽度*/
|
||||
signalLampStandardWidth: 1.2,
|
||||
/** 设备距离区段的距离*/
|
||||
signalDistance: 0,
|
||||
/** 信号灯按钮距离区段的距离*/
|
||||
signalButtonDistance: 5,
|
||||
/** 自动进路方向*/
|
||||
signalSigRouteDirection: false,
|
||||
/** 自动进路偏移量*/
|
||||
signalSigRouteOffset: { x: 4, y: -2 },
|
||||
/** 自动通过方向*/
|
||||
signalSigPassDirection: true,
|
||||
/** 自动通过偏移量*/
|
||||
signalSigPassOffset: { x: 4, y: 0},
|
||||
/** 延时解锁方向*/
|
||||
signalSigDelayDirection: false,
|
||||
/** 延时解锁偏移量*/
|
||||
signalSigDelayOffset: { x: 0, y: -5},
|
||||
/** 信号灯按钮边线*/
|
||||
signalButtonDashColor: '#FFFFFF',
|
||||
/** 信号灯按钮颜色*/
|
||||
signalButtonColor: 'darkgreen',
|
||||
/** 信号灯按钮闪烁颜色*/
|
||||
signalButtonLightenColor: '#E4EF50',
|
||||
/** 信号灯字体颜色*/
|
||||
signalTextRed: '#EF0C08',
|
||||
/** 信号机字体绿色*/
|
||||
signalTextGreen: '#4DD43F',
|
||||
/** 信号灯灯柱颜色*/
|
||||
signalLampStandardColor: '#5578B6',
|
||||
/** 信号灯锁闭*/
|
||||
signalBlockColor: '#EF0C08',
|
||||
/** 信号灯灰色*/
|
||||
signalLampGrayColor: '#7F7F7F',
|
||||
/** 信号灯红色*/
|
||||
signalLampRedColor: '#FF0000',
|
||||
/** 信号灯绿色*/
|
||||
signalLampGreenColor: '#00FF00',
|
||||
/** 信号灯黄色*/
|
||||
signalLampYellowColor: '#FFFF00',
|
||||
/** 信号灯白色*/
|
||||
signalLampWhiteColor: '#FFFFFF',
|
||||
/** 信号灯蓝色*/
|
||||
signalLampBlueColor: '#0070C0'
|
||||
post: {
|
||||
/** 信号灯灯柱颜色*/
|
||||
signalLampStandardColor: '#5578B6',
|
||||
signalLampStandardWidth: 1.5
|
||||
},
|
||||
text: {
|
||||
/** 是否禁止旋转*/
|
||||
isNoRotation: true,
|
||||
/** 信号机名称字体大小*/
|
||||
signalTextFontSize: 10,
|
||||
/** 信号灯字体默认色*/
|
||||
signalDefaultTextColor: '#C0C0C0',
|
||||
/** 信号灯字体锁定颜色*/
|
||||
signalTextBlockColor: '#EF0C08'
|
||||
},
|
||||
lamp: {
|
||||
/** 禁止线宽度*/
|
||||
signalStopWidth: 2,
|
||||
/** 信号灯边框线宽度*/
|
||||
signalBorderWidth: 0.5,
|
||||
/** 信号灯边框线颜色*/
|
||||
signalBorderColor: '#3149C3',
|
||||
/** 信号机宽度 */
|
||||
signalR: 6,
|
||||
/** 信号灯锁闭*/
|
||||
signalBlockColor: '#EF0C08',
|
||||
/** 信号灯灰色*/
|
||||
signalLampGrayColor: '#7F7F7F',
|
||||
/** 信号灯红色*/
|
||||
signalLampRedColor: '#FF0000',
|
||||
/** 信号灯绿色*/
|
||||
signalLampGreenColor: '#00FF00',
|
||||
/** 信号灯黄色*/
|
||||
signalLampYellowColor: '#FFFF00',
|
||||
/** 信号灯白色*/
|
||||
signalLampWhiteColor: '#FFFFFF',
|
||||
/** 信号灯蓝色*/
|
||||
signalLampBlueColor: '#0070C0'
|
||||
},
|
||||
route: {
|
||||
/** 自动进路方向*/
|
||||
signalRouteDirection: false,
|
||||
/** 自动进路偏移量*/
|
||||
signalRouteOffset: { x: 4, y: -2 },
|
||||
/** 自动进路*/
|
||||
signalRouteColor: '#00FF00'
|
||||
},
|
||||
auto: {
|
||||
/** 自动通过方向*/
|
||||
signalAutoDirection: true,
|
||||
/** 自动通过偏移量*/
|
||||
signalAutoOffset: { x: 4, y: 0},
|
||||
/** 自动进路*/
|
||||
signalAutoRoute: '#00FF00',
|
||||
/** 自动触发*/
|
||||
signalAutoTrigger: '#FFFF00'
|
||||
},
|
||||
delay: {
|
||||
/** 延迟解锁字体大小*/
|
||||
signalDelayTextFontSize: 9,
|
||||
/** 延时解锁方向*/
|
||||
signalDelayDirection: false,
|
||||
/** 延时解锁偏移量*/
|
||||
signalDelayOffset: { x: 0, y: -5},
|
||||
/** 延迟解锁颜色*/
|
||||
signalDelayTextColor: '#FF0000'
|
||||
},
|
||||
button: {
|
||||
/** 信号灯按钮距离区段的距离*/
|
||||
signalButtonDistance: 5,
|
||||
/** 信号灯按钮边线*/
|
||||
signalButtonDashColor: '#FFFFFF',
|
||||
/** 信号灯按钮颜色*/
|
||||
signalButtonColor: 'darkgreen',
|
||||
/** 信号灯按钮闪烁颜色*/
|
||||
signalButtonLightenColor: '#E4EF50'
|
||||
}
|
||||
};
|
||||
|
||||
this[deviceType.StationStand] = {
|
||||
/** 站台和屏蔽门之间的距离*/
|
||||
standDistance: 9,
|
||||
/** 站台屏蔽门高度*/
|
||||
standSafeHeight: 1.6,
|
||||
/** 站台首端字体大小*/
|
||||
standHeadFontSize: 8,
|
||||
/** 站台默认字体大小*/
|
||||
standTextFontSize: 8,
|
||||
/** 站台紧急关闭半径*/
|
||||
standEmergentR: 4,
|
||||
/** 站台紧急关闭偏移量*/
|
||||
standEmergentOffset: {x: 0, y: 0},
|
||||
/** 扣车方向*/
|
||||
standDetainDirection: 1,
|
||||
/** 扣车偏移量*/
|
||||
standDetainOffset: {x: -8, y: 13},
|
||||
/** 运行时间方向*/
|
||||
standTimeDirection: 1,
|
||||
/** 运行时间偏移量*/
|
||||
standTimeOffset: {x: -8, y: 3},
|
||||
/** 运行等级方向*/
|
||||
standLevelDirection: 1,
|
||||
/** 运行等级偏移量*/
|
||||
standLevelOffset: {x: -8, y: 22},
|
||||
/** 折返方向*/
|
||||
standReentryDirection: 0,
|
||||
/** 折返偏移量*/
|
||||
standReentryOffset: {x: -16, y: 18},
|
||||
/** 扣车显示内容*/
|
||||
standDetainText: 'H',
|
||||
/** 站台无人折返*/
|
||||
standNoHumanReentryColor: '#0F16DA',
|
||||
/** 站台自动换端*/
|
||||
standAutoChangeEndsColor: '#0BF400',
|
||||
/** 站台空闲颜色*/
|
||||
standSpareColor: '#606060',
|
||||
/** 站台列车停站颜色*/
|
||||
standStopColor: '#FEFE00',
|
||||
/** 站台跳停颜色*/
|
||||
standJumpStopColor: '#9A99FF',
|
||||
/** 站台指定列车跳停颜色*/
|
||||
standDesignatedJumpStopColor: 'lightSkyBlue',
|
||||
/** 站台紧急关闭颜色*/
|
||||
standEmergentCloseColor: '#F61107',
|
||||
/** 停站时间字体颜色*/
|
||||
standTimeTextColor: '#FFFFFF',
|
||||
/** 停站等级字体颜色*/
|
||||
standLevelTextColor: '#FFFFFF',
|
||||
/** 车站扣车颜色*/
|
||||
standDetainTrainColor: '#E4EF50',
|
||||
/** 中心扣车颜色*/
|
||||
standCenterDetainTrainColor: '#FFFFFF',
|
||||
/** 车站+中心扣车颜色*/
|
||||
standAndCenterDetainTrainColor: '#F61107',
|
||||
/** 屏蔽门默认颜色*/
|
||||
standDoorDefaultColor: '#00FF00',
|
||||
/** 屏蔽门切除颜色*/
|
||||
standSplitDoorColor: '#F61107',
|
||||
/** 车站扣除文字颜色*/
|
||||
standDetainTrainTextColor: '#E4EF50',
|
||||
/** 计数器字体颜色*/
|
||||
stationCounterTextColor: '#FFFFFF',
|
||||
/** 计数器边框颜色*/
|
||||
stationCounterBorderColor: '#E4EF50',
|
||||
/** 延迟解锁倒计时和设备文字之间的距离*/
|
||||
stationDelayUnlockDistance: 3,
|
||||
/** 延时解锁字体颜色*/
|
||||
stationDelayUnlockTextColor: '#FFFFFF',
|
||||
/** 延迟解锁边框颜色*/
|
||||
stationDelayUnlockBorderColor: '#FFFFFF'
|
||||
common: { // 通用属性
|
||||
textFontSize: 8 // 站台默认字体大小
|
||||
},
|
||||
safetyDoor: { // 屏蔽门
|
||||
height: 1.6, // 站台屏蔽门高度
|
||||
distance: 9, // 站台和屏蔽门之间的距离
|
||||
defaultColor: '#00FF00', // 屏蔽门默认颜色
|
||||
splitDoorColor: '#F61107' // 屏蔽门切除颜色
|
||||
},
|
||||
stand: { // 站台
|
||||
headFontSize: 8, // 站台首端字体大小
|
||||
spareColor: '#606060', // 站台空闲颜色
|
||||
stopColor: '#FEFE00', // 站台列车停站颜色
|
||||
jumpStopColor: '#9A99FF', // 站台跳停颜色
|
||||
designatedJumpStopColor: 'lightSkyBlue' // 站台指定列车跳停颜色
|
||||
},
|
||||
standEmergent: { // 紧急关闭
|
||||
mergentR: 4, // 站台紧急关闭半径
|
||||
offset: {x: 0, y: 0}, // 站台紧急关闭偏移量
|
||||
closeColor: '#F61107' // 站台紧急关闭颜色
|
||||
},
|
||||
reentry: { // 站台折返策略
|
||||
direction: 0, // 折返方向
|
||||
offset: {x: -16, y: 18}, // 折返偏移量
|
||||
noHumanColor: '#0F16DA', // 站台无人折返
|
||||
AutoChangeEndsColor: '#0BF400' // 站台自动换端
|
||||
},
|
||||
detainCar: { // 扣车
|
||||
text: 'H', // 扣车显示内容
|
||||
direction: 1, // 扣车方向
|
||||
offset: {x: -8, y: 13}, // 扣车偏移量
|
||||
trainColor: '#E4EF50', // 车站扣车颜色
|
||||
centerTrainColor: '#FFFFFF', // 中心扣车颜色
|
||||
andCenterTrainColor: '#F61107', // 车站+中心扣车颜色
|
||||
detainTrainTextColor: '#E4EF50' // 车站扣除文字颜色
|
||||
},
|
||||
stopTime: { // 停站时间
|
||||
direction: 1, // 运行时间方向
|
||||
offset: {x: -8, y: 3}, // 运行时间偏移量
|
||||
textColor: '#FFFFFF' // 停站时间字体颜色
|
||||
},
|
||||
level: { // 运行等级
|
||||
direction: 1, // 运行等级方向
|
||||
offset: {x: -8, y: 22}, // 运行等级偏移量
|
||||
textColor: '#FFFFFF' // 停站等级字体颜色
|
||||
}
|
||||
};
|
||||
|
||||
this[deviceType.StationControl] = {
|
||||
singleControlNum: 3,
|
||||
stationOffset: {x: 20, y: 0},
|
||||
stationOffset: { x: 20, y: 0 },
|
||||
arrowsShow: false, // 控制模式箭头显隐
|
||||
/** 控制模式字体大小*/
|
||||
stationControlTextSize: 10,
|
||||
/** 控制模式灯的半径 */
|
||||
stationControlmodeR: 4,
|
||||
stationControlmodeR: 6,
|
||||
/** 控制模式之间灯之间的距离*/
|
||||
stationControlDistance: 36,
|
||||
/** 控制模式灰色*/
|
||||
@ -223,155 +213,31 @@ class Beijing extends defaultSkin {
|
||||
/** 控制模式黄色*/
|
||||
stationControlYellowColor: '#FFFF00'
|
||||
};
|
||||
|
||||
this[deviceType.Station] = {
|
||||
kilometerPosition: 'down' // 公里标位置
|
||||
};
|
||||
|
||||
this[deviceType.Switch] = {
|
||||
/** 道岔单边长度 */
|
||||
switchLen: 6,
|
||||
/** 道岔名称与区段距离*/
|
||||
switchNameDistance: 2,
|
||||
/** 道岔边框颜色*/
|
||||
switchTextBorderColor: '#FE0000',
|
||||
/** 道岔失去颜色*/
|
||||
switchTextLossColor: '#FFFFFF',
|
||||
/** 道岔定位颜色*/
|
||||
switchLocateTextColor: '#00FF00',
|
||||
/** 道岔反位颜色*/
|
||||
switchInversionColor: '#9C9D09',
|
||||
/** 道岔单锁颜色*/
|
||||
switchMonolockColor: '#870E10',
|
||||
text: {
|
||||
/** 道岔名称与区段距离*/
|
||||
switchNameDistance: 2,
|
||||
/** 道岔边框颜色*/
|
||||
switchTextBorderColor: '#FE0000',
|
||||
/** 道岔失去颜色*/
|
||||
switchTextLossColor: '#FFFFFF',
|
||||
/** 道岔定位颜色*/
|
||||
switchTextLocateColor: '#00FF00',
|
||||
/** 道岔反位颜色*/
|
||||
switchInversionColor: '#9C9D09',
|
||||
/** 道岔单锁颜色*/
|
||||
switchMonolockColor: '#870E10'
|
||||
},
|
||||
core: {
|
||||
/** 道岔单边长度 */
|
||||
switchLen: 6
|
||||
}
|
||||
};
|
||||
this[deviceType.Train] = {
|
||||
/** 车身line宽 */
|
||||
trainBodyLineWidth: 0.1,
|
||||
/** 车身鼠标悬浮事件 */
|
||||
trainBodyOnMouseOver: {train: true, textTrainNumber: false, textTrainServer: false, textTrainTarget: false, textTrainTargetNumber: false},
|
||||
/** 车身鼠标移出事件 */
|
||||
trainBodyOnMouseOut: {train: true, textTrainNumber: false, textTrainServer: false, textTrainTarget: false, textTrainTargetNumber: false},
|
||||
/** 服务号(表号)前缀 */
|
||||
serviceNumberPrefix: '00',
|
||||
/** 默认服务号(表号) */
|
||||
defaultServiceNumber: 'AA',
|
||||
/** 车次号前缀 */
|
||||
tripNumberPrefix: '000',
|
||||
/** 默认车次号2 */
|
||||
defaultTripNumber: 'DDD',
|
||||
/** 列车车头比车身高出的长度,上下相比车体伸出去的边框*/
|
||||
trainMoreLength: 0,
|
||||
/** 列车车头三角坐标1偏移量 */
|
||||
trainHeadTriangleFirst: { x: 7, y: 1},
|
||||
/** 列车车头三角坐标2偏移量 */
|
||||
trainHeadTriangleSecond: { x: 13, y: 10},
|
||||
/** 列车车头三角坐标3偏移量 */
|
||||
trainHeadTriangleThird: { x: 7, y: 19},
|
||||
/** 列车高度*/
|
||||
trainHeight: 20,
|
||||
/** 列车和车头之间的间距*/
|
||||
trainHeadDistance: 4,
|
||||
/** 列车车头矩形高度 */
|
||||
trainHeadRectHeight: 20,
|
||||
/** 列车长度*/
|
||||
trainWidth: 40,
|
||||
/** 列车竖杠的宽度*/
|
||||
trainConntWidth: 3,
|
||||
/** 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度 */
|
||||
changeTrainWidth: false,
|
||||
/** 是否根据nameFormat去动态加载车组号、服务号、车次号、目的地码 */
|
||||
dynamicLoadingDisplay: false,
|
||||
/** 特殊列车类型需设置显示格式 */
|
||||
specialTrainType: [],
|
||||
/** 两边间隔 */
|
||||
lrPadding: 4,
|
||||
/** 上边距离 */
|
||||
upPadding: 4,
|
||||
/** HSDA两边间隔 */
|
||||
lrPaddingHSDA: 3,
|
||||
/** HSDA上边距离 */
|
||||
upPaddingHSDA: 4,
|
||||
/** 列车字号*/
|
||||
trainTextFontSize: 12,
|
||||
/** 目的地状态 01准点 02早点 03晚点 04头码车 */
|
||||
destinationStatus: [
|
||||
{status: '01',showColor: '#FFFFFF'},
|
||||
{status: '02',showColor: '#00FF00'},
|
||||
{status: '03',showColor: '#A0522D'},
|
||||
{status: '04',showColor: '#FFFF00'},
|
||||
],
|
||||
/** 默认目的地状态显示颜色 */
|
||||
defaultDestinationColor: '#000000',
|
||||
/** 默认字体 族类*/
|
||||
textFontFormat: 'consolas',
|
||||
/** 列车HDSA字号*/
|
||||
trainHSDATextFontSize: 9,
|
||||
/** 服务号状态类型 01显示服务号 计划车 02显示车组号: 头码车与人工车 */
|
||||
serverNoType: [
|
||||
{type: '01', showColor: '#FFFFFF'},
|
||||
{type: '01', showColor: '#FFFFFF'},
|
||||
],
|
||||
/** 默认服务号状态显示颜色 */
|
||||
defaultServerNoColor: '#000000',
|
||||
/** 列车运行方向状态类型对应车头显示状态 01未知方向 02从左往右 上行 03从右往左 下行*/
|
||||
directionType: [
|
||||
{type: '01', lineLShow: true, lineRShow: true, arrowLShow: false, arrowRShow: false },
|
||||
{type: '02', lineLShow: false, lineRShow: true, arrowLShow: false, arrowRShow: true },
|
||||
{type: '03', lineLShow: true, lineRShow: false, arrowLShow: true, arrowRShow: false }
|
||||
],
|
||||
/** 列车停止方向类型对应车头显示状态 01未知方向 02从左往右 上行 03从右往左 下行 */
|
||||
directionStopType: [
|
||||
{type: '01', lineLShow: false, lineRShow: false},
|
||||
{type: '02', lineLShow: false, lineRShow: true},
|
||||
{type: '03', lineLShow: true, lineRShow: false}
|
||||
],
|
||||
/** 列车运行模式对应车头颜色 01未知 02 ATO自动驾驶模式AM 03 ATP监控下的人工驾驶模式CM
|
||||
* 04 限制人工驾驶模式RM 05 非限制人工驾驶模式RM*/
|
||||
runModeStatus: [
|
||||
{status: '01', trainLColor: '#FFFFFF', trainRColor: '#FFFFFF'},
|
||||
{status: '01', trainLColor: '#00FF00', trainRColor: '#00FF00'},
|
||||
{status: '01', trainLColor: '#FFFF00', trainRColor: '#FFFF00'},
|
||||
{status: '01', trainLColor: '#A0522D', trainRColor: '#A0522D'},
|
||||
{status: '01', trainLColor: '#A0522D', trainRColor: '#A0522D'}
|
||||
],
|
||||
/** 设置运行控制状态类型 01正常 02扣车 03停跳 */
|
||||
runControlStatus: [
|
||||
{status: '01', hShow: false, sShow: false},
|
||||
{status: '02', hShow: true, sShow: false},
|
||||
{status: '03', hShow: false, sShow: true}
|
||||
],
|
||||
/** 设置车门状态类型 01关门 02开门 */
|
||||
doorStatus: [
|
||||
{status: '01', dShow: false},
|
||||
{status: '02', dShow: true}
|
||||
],
|
||||
/** 设置通信状态 01正常 02故障 */
|
||||
communicationStatus: [
|
||||
{status: '01', trainColor:'#725A64'},
|
||||
{status: '02', trainColor:'#C0C0C0'}
|
||||
],
|
||||
/** 设置报警状态 01不报警 02报警 */
|
||||
alarmStatus: [
|
||||
{status: '01', aShow: false},
|
||||
{status: '02', aShow: true}
|
||||
],
|
||||
/** 列车车头矩形填充颜色 */
|
||||
trainHeadFillColor: '#000000',
|
||||
/** 列车车身填充颜色 */
|
||||
trainBodyFillColor: '#725A64',
|
||||
/** textH文本 */
|
||||
textHContent: 'H',
|
||||
/** textS文本 */
|
||||
textSContent: 'S',
|
||||
/** textD文本 */
|
||||
textDContent: 'D',
|
||||
/** textA文本 */
|
||||
textAContent: 'A',
|
||||
/** 是否需创建textHSDA对象 */
|
||||
haveTextHSDA: true,
|
||||
/** 是否需创建arrowText对象 */
|
||||
haveArrowText: true,
|
||||
/** 是否需创建trainBorder对象 */
|
||||
haveTrainBorder: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -82,7 +82,7 @@ class Beijing extends defaultSkin {
|
||||
/** 信号机宽度 */
|
||||
signalR: 6.5,
|
||||
/** 自动信号宽度*/
|
||||
signalSigPassWidth: 5,
|
||||
signalAutoWidth: 5,
|
||||
/** 延迟解锁字体大小*/
|
||||
signalDelayTextFontSize: 10,
|
||||
/** 信号机名称字体大小*/
|
||||
@ -238,7 +238,7 @@ class Beijing extends defaultSkin {
|
||||
/** 道岔失去颜色*/
|
||||
switchTextLossColor: '#C00808',
|
||||
/** 道岔定位颜色*/
|
||||
switchLocateTextColor: '#08C008',
|
||||
switchTextLocateColor: '#08C008',
|
||||
/** 道岔反位颜色*/
|
||||
switchInversionColor: '#C0C000',
|
||||
/** 道岔单锁颜色*/
|
||||
|
@ -7,199 +7,188 @@ class Fuzhou extends defaultSkin {
|
||||
this[deviceType.Link] = {
|
||||
/** line 颜色*/
|
||||
lineWidthColor: '#FFFFFF',
|
||||
|
||||
/** link 宽度*/
|
||||
linkWidth: 4.4,
|
||||
|
||||
/** link 线条颜色*/
|
||||
linkColor: '#3F3F3F',
|
||||
|
||||
/** link 字体颜色*/
|
||||
linkTextColor: '#FFFFFF'
|
||||
};
|
||||
this[deviceType.Section] = {
|
||||
sectionTextPosition: 0, // 区段名称位置 1 上行 -1 下面 0 默认
|
||||
/** 区段 宽度*/
|
||||
sectionWidth: 5,
|
||||
/** 区段宽超出宽度*/
|
||||
sectionBeyondWidth: 1,
|
||||
/** 计轴 半径*/
|
||||
sectionAxleR: 3,
|
||||
/** 计轴和区段之间的距离*/ /** 需要添加*/
|
||||
sectionAxleDistance: 5,
|
||||
/** 限速线的宽短*/
|
||||
sectionSpeedLimitLinewidth: 1,
|
||||
/** 限速线距离区段距离*/
|
||||
sectionSpeedLimitDistance: 5,
|
||||
sectionSeparatorWidth: 1.2, // 分隔符宽度
|
||||
sectionEndSeparatorWidth: 3.5, // 尽头分隔符宽度
|
||||
sectionEndSeparatorStroke: '#3F3F3F', // 尽头分隔符颜色
|
||||
/** 区段侵入颜色*/
|
||||
sectionInvadeColor: '#EF0C08',
|
||||
/** 限速线颜色*/
|
||||
sectionSpeedLimitColor: '#FFFF00',
|
||||
sectionLogicalBackgroundColor: '#FFFF00', // 逻辑区段颜色
|
||||
/** 区段计轴颜色*/
|
||||
sectionAxleColor: '#FFFFFF',
|
||||
/** 区段边界符颜色*/
|
||||
sectionSeparatorColor: '#3149C3',
|
||||
/** 区段空闲颜色*/
|
||||
sectionSpareColor: '#3F3F3F',
|
||||
/** 逻辑区段名称颜色*/
|
||||
sectionLogicalTextColor: '#FFFFFF',
|
||||
/** 区段通信车占用颜色**/
|
||||
sectionCommunicationOccupiedColor: '#FF329A',
|
||||
/** 区段非通讯车占用颜色*/
|
||||
sectionUnCommunicationOccupiedColor: '#FE0000',
|
||||
/** 区段路由锁定颜色*/
|
||||
sectionRouteLockColor: '#FFFFFF',
|
||||
/** 区段故障锁定颜色*/
|
||||
sectionFaultLockColor: '#9B4A0A',
|
||||
/** 区段未定义颜色*/
|
||||
sectionUndefinedColor: '#0071C1',
|
||||
/** 保护区段锁闭*/
|
||||
sectionProtectionSectionLockedColor: '#FEFF00',
|
||||
/** 区段计轴预复位*/
|
||||
sectionAxleResetColor: '#00FFFF',
|
||||
/** 区段封锁颜色*/
|
||||
sectionBlockColor: '#800080',
|
||||
/** 区段atc切除颜色*/
|
||||
sectionAtcExcisionColor: '#A0522D',
|
||||
/** 区段ats切除颜色*/
|
||||
sectionAtsExcisionColor: '#A0522D',
|
||||
/** 区段延时释放颜色*/
|
||||
sectionTimeReleaseColor: '#3F3F3F',
|
||||
/** 区段保护锁闭*/
|
||||
sectionProtectiveLockColor: '#FFFF00',
|
||||
/** 区段保护延时解锁*/
|
||||
sectionProtectiveTimeReleaseColor: '#0071C1',
|
||||
sectionAxleFailure: '#E6A23C' // #FFFF00 计轴失效
|
||||
text: { // 区段文字属性
|
||||
fontSize: 10, // 字体大小
|
||||
fontColor: '#FFFFFF', // 字体颜色
|
||||
textAlign: 'center', // 水平对齐方式
|
||||
textPosition: 'inside', // 文字位置
|
||||
textVerticalAlign: 'middle', // 文字垂直对齐方式
|
||||
position: 0 // 区段名称位置 1 上行 -1 下面 0 默认
|
||||
},
|
||||
line: {
|
||||
width: 5, // 区段宽度
|
||||
beyondWidth: 1, // 区段宽超出宽度
|
||||
invadeColor: '#EF0C08', // 区段侵入颜色
|
||||
spareColor: '#3F3F3F', // 区段空闲颜色
|
||||
communicationOccupiedColor: '#FF329A', // 区段通信车占用颜色
|
||||
unCommunicationOccupiedColor: '#FE0000', // 区段非通讯车占用颜色
|
||||
routeLockColor: '#FFFFFF', // 区段路由锁定颜色
|
||||
faultLockColor: '#9B4A0A', // 区段故障锁定颜色
|
||||
undefinedColor: '#0071C1', // 区段未定义颜色
|
||||
protectionLockedColor: '#FEFF00', // 保护区段锁闭(未用)
|
||||
blockColor: '#800080', // 区段封锁颜色
|
||||
atcExcisionColor: '#A0522D', // 区段atc切除颜色
|
||||
atsExcisionColor: '#A0522D', // 区段ats切除颜色
|
||||
timeReleaseColor: '#3F3F3F', // 区段延时释放颜色
|
||||
protectiveLockColor: '#FFFF00', // 区段保护锁闭
|
||||
protectiveTimeReleaseColor: '#0071C1', // 区段保护延时解锁
|
||||
logicalColor: '#FFFF00', // 逻辑区段颜色 (未用)
|
||||
logicalTextColor: '#FFFFFF' // 逻辑区段名称颜色 (未用)
|
||||
},
|
||||
axle: {
|
||||
radius: 3, // 计轴 半径
|
||||
distance: 5, // 计轴和区段之间的距离 (未用)
|
||||
color: '#FFFFFF', // 区段计轴颜色
|
||||
resetColor: '#00FFFF', // 区段计轴预复位颜色
|
||||
Failure: '#E6A23C' // #FFFF00 计轴失效
|
||||
},
|
||||
speedLimit: { // 限速元素
|
||||
width: 1, // 限速线的宽短
|
||||
Distance: 5, // 限速线距离区段距离
|
||||
lineColor: '#FFFF00' // 限速线颜色
|
||||
},
|
||||
separator: {
|
||||
width: 1.2, // 分隔符宽度
|
||||
endWidth: 3.5, // 尽头分隔符宽度
|
||||
endColor: '#3F3F3F', // 尽头分隔符颜色
|
||||
color: '#3149C3' // 区段边界符颜色
|
||||
}
|
||||
};
|
||||
this[deviceType.Signal] = {
|
||||
/** 信号机宽度 */
|
||||
signalR: 5,
|
||||
/** 自动信号宽度*/
|
||||
signalSigPassWidth: 6,
|
||||
/** 延迟解锁字体大小*/
|
||||
signalDelayTextFontSize: 9,
|
||||
/** 信号机名称字体大小*/
|
||||
signalTextFontSize: 12,
|
||||
/** 灯柱宽度*/
|
||||
signalLampStandardWidth: 1.2,
|
||||
/** 设备距离区段的距离*/
|
||||
signalDistance: 3,
|
||||
/** 信号灯按钮距离区段的距离*/
|
||||
signalButtonDistance: 5,
|
||||
/** 自动进路方向*/
|
||||
signalSigRouteDirection: false,
|
||||
/** 自动进路偏移量*/
|
||||
signalSigRouteOffset: { x: -4, y: -2 },
|
||||
/** 自动通过方向*/
|
||||
signalSigPassDirection: false,
|
||||
/** 自动通过偏移量*/
|
||||
signalSigPassOffset: { x: -12, y: 0},
|
||||
/** 延时解锁方向*/
|
||||
signalSigDelayDirection: true,
|
||||
/** 延时解锁偏移量*/
|
||||
signalSigDelayOffset: { x: 15, y: -10},
|
||||
/** 信号灯按钮边线*/
|
||||
signalButtonDashColor: '#FFFFFF',
|
||||
/** 信号灯按钮颜色*/
|
||||
signalButtonColor: 'darkgreen',
|
||||
/** 信号灯按钮闪烁颜色*/
|
||||
signalButtonLightenColor: '#E4EF50',
|
||||
/** 信号灯字体颜色*/
|
||||
signalTextRed: '#EF0C08',
|
||||
/** 信号机字体绿色*/
|
||||
signalTextGreen: '#4DD43F',
|
||||
/** 信号灯灯柱颜色*/
|
||||
signalLampStandardColor: '#3149C3',
|
||||
/** 信号灯锁闭*/
|
||||
signalBlockColor: '#EF0C08',
|
||||
/** 信号灯灰色*/
|
||||
signalLampGrayColor: '#7F7F7F',
|
||||
/** 信号灯红色*/
|
||||
signalLampRedColor: '#FF0000',
|
||||
/** 信号灯绿色*/
|
||||
signalLampGreenColor: '#00FF00',
|
||||
/** 信号灯黄色*/
|
||||
signalLampYellowColor: '#FFFF00',
|
||||
/** 信号灯白色*/
|
||||
signalLampWhiteColor: '#FFFFFF',
|
||||
/** 信号灯蓝色*/
|
||||
signalLampBlueColor: '#0070C0'
|
||||
signalDistance: 10,
|
||||
post: {
|
||||
signalLampStandardColor: '#3149C3',
|
||||
signalLampStandardWidth: 2
|
||||
},
|
||||
text: {
|
||||
/** 是否禁止旋转*/
|
||||
isNoRotation: true,
|
||||
/** 信号机名称字体大小*/
|
||||
signalTextFontSize: 10,
|
||||
/** 信号灯字体默认色*/
|
||||
signalDefaultTextColor: '#FFFFFF',
|
||||
/** 信号灯字体锁定颜色*/
|
||||
signalTextBlockColor: '#EF0C08'
|
||||
},
|
||||
lamp: {
|
||||
/** 禁止线宽度*/
|
||||
signalStopWidth: 2,
|
||||
/** 信号灯边框线宽度*/
|
||||
signalBorderWidth: 0.5,
|
||||
/** 信号灯边框线颜色*/
|
||||
signalBorderColor: '#3149C3',
|
||||
/** 信号灯半径*/
|
||||
signalR: 6,
|
||||
/** 信号灯锁闭*/
|
||||
signalBlockColor: '#EF0C08',
|
||||
/** 信号灯灰色*/
|
||||
signalLampGrayColor: '#7F7F7F',
|
||||
/** 信号灯红色*/
|
||||
signalLampRedColor: '#FF0000',
|
||||
/** 信号灯绿色*/
|
||||
signalLampGreenColor: '#00FF00',
|
||||
/** 信号灯黄色*/
|
||||
signalLampYellowColor: '#FFFF00',
|
||||
/** 信号灯白色*/
|
||||
signalLampWhiteColor: '#FFFFFF',
|
||||
/** 信号灯蓝色*/
|
||||
signalLampBlueColor: '#0070C0'
|
||||
},
|
||||
route: {
|
||||
/** 自动进路方向*/
|
||||
signalRouteDirection: false,
|
||||
/** 自动进路偏移量*/
|
||||
signalRouteOffset: { x: -4, y: 0 },
|
||||
/** 自动进路*/
|
||||
signalRouteColor: '#00FF00'
|
||||
},
|
||||
auto: {
|
||||
/** 自动通过方向*/
|
||||
signalAutoDirection: false,
|
||||
/** 自动通过偏移量*/
|
||||
signalAutoOffset: { x: -4, y: 0},
|
||||
/** 自动进路*/
|
||||
signalAutoRoute: '#00FF00',
|
||||
/** 自动触发*/
|
||||
signalAutoTrigger: '#FFFF00'
|
||||
},
|
||||
delay: {
|
||||
/** 延迟解锁字体大小*/
|
||||
signalDelayTextFontSize: 9,
|
||||
/** 延时解锁方向*/
|
||||
signalDelayDirection: true,
|
||||
/** 延时解锁偏移量*/
|
||||
signalDelayOffset: { x: 15, y: -10},
|
||||
/** 延迟解锁颜色*/
|
||||
signalDelayTextColor: '#FF0000'
|
||||
},
|
||||
button: {
|
||||
/** 信号灯按钮距离区段的距离*/
|
||||
signalButtonDistance: 5,
|
||||
/** 信号灯按钮边线*/
|
||||
signalButtonDashColor: '#FFFFFF',
|
||||
/** 信号灯按钮颜色*/
|
||||
signalButtonColor: 'darkgreen',
|
||||
/** 信号灯按钮闪烁颜色*/
|
||||
signalButtonLightenColor: '#E4EF50'
|
||||
}
|
||||
};
|
||||
this[deviceType.StationStand] = {
|
||||
/** 站台和屏蔽门之间的距离*/
|
||||
standDistance: 8,
|
||||
/** 站台屏蔽门高度*/
|
||||
standSafeHeight: 3,
|
||||
/** 站台首端字体大小*/
|
||||
standHeadFontSize: 10,
|
||||
/** 站台默认字体大小*/
|
||||
standTextFontSize: 10,
|
||||
/** 站台紧急关闭半径*/
|
||||
standEmergentR: 4,
|
||||
/** 站台紧急关闭偏移量*/
|
||||
standEmergentOffset: {x: 0, y: 40},
|
||||
/** 扣车方向*/
|
||||
standDetainDirection: -1,
|
||||
/** 扣车偏移量*/
|
||||
standDetainOffset: {x: -8, y: -6},
|
||||
/** 运行时间方向*/
|
||||
standTimeDirection: 1,
|
||||
/** 运行时间偏移量*/
|
||||
standTimeOffset: {x: -8, y: 26},
|
||||
/** 运行等级方向*/
|
||||
standLevelDirection: 1,
|
||||
/** 运行等级偏移量*/
|
||||
standLevelOffset: {x: -8, y: 6},
|
||||
/** 折返方向*/
|
||||
standReentryDirection: 0,
|
||||
/** 折返偏移量*/
|
||||
standReentryOffset: {x: -16, y: 20},
|
||||
/** 扣车显示内容*/
|
||||
standDetainText: 'H',
|
||||
/** 站台无人折返*/
|
||||
standNoHumanReentryColor: '#0F16DA',
|
||||
/** 站台自动换端*/
|
||||
standAutoChangeEndsColor: '#0BF400',
|
||||
/** 站台空闲颜色*/
|
||||
standSpareColor: '#606060',
|
||||
/** 站台列车停站颜色*/
|
||||
standStopColor: '#FEFE00',
|
||||
/** 站台跳停颜色*/
|
||||
standJumpStopColor: '#9A99FF',
|
||||
/** 站台指定列车跳停颜色*/
|
||||
standDesignatedJumpStopColor: 'lightSkyBlue',
|
||||
/** 站台紧急关闭颜色*/
|
||||
standEmergentCloseColor: '#F61107',
|
||||
/** 停站时间字体颜色*/
|
||||
standTimeTextColor: '#FFFFFF',
|
||||
/** 停站等级字体颜色*/
|
||||
standLevelTextColor: '#FFFFFF',
|
||||
/** 车站扣车颜色*/
|
||||
standDetainTrainColor: '#E4EF50',
|
||||
/** 中心扣车颜色*/
|
||||
standCenterDetainTrainColor: '#FFFFFF',
|
||||
/** 车站+中心扣车颜色*/
|
||||
standAndCenterDetainTrainColor: '#F61107',
|
||||
/** 屏蔽门默认颜色*/
|
||||
standDoorDefaultColor: '#00FF00',
|
||||
/** 屏蔽门切除颜色*/
|
||||
standSplitDoorColor: '#F61107',
|
||||
/** 车站扣除文字颜色*/
|
||||
standDetainTrainTextColor: '#E4EF50',
|
||||
/** 计数器字体颜色*/
|
||||
stationCounterTextColor: '#FFFFFF',
|
||||
/** 计数器边框颜色*/
|
||||
stationCounterBorderColor: '#E4EF50',
|
||||
/** 延迟解锁倒计时和设备文字之间的距离*/
|
||||
stationDelayUnlockDistance: 3,
|
||||
/** 延时解锁字体颜色*/
|
||||
stationDelayUnlockTextColor: '#FFFFFF',
|
||||
/** 延迟解锁边框颜色*/
|
||||
stationDelayUnlockBorderColor: '#FFFFFF'
|
||||
common: { // 通用属性
|
||||
textFontSize: 10 // 站台默认字体大小
|
||||
},
|
||||
safetyDoor: { // 屏蔽门
|
||||
height: 3, // 站台屏蔽门高度
|
||||
distance: 8, // 站台和屏蔽门之间的距离
|
||||
defaultColor: '#00FF00', // 屏蔽门默认颜色
|
||||
splitDoorColor: '#F61107' // 屏蔽门切除颜色
|
||||
},
|
||||
stand: { // 站台
|
||||
headFontSize: 10, // 站台首端字体大小
|
||||
spareColor: '#606060', // 站台空闲颜色
|
||||
stopColor: '#FEFE00', // 站台列车停站颜色
|
||||
jumpStopColor: '#9A99FF', // 站台跳停颜色
|
||||
designatedJumpStopColor: 'lightSkyBlue' // 站台指定列车跳停颜色
|
||||
},
|
||||
standEmergent: { // 紧急关闭
|
||||
mergentR: 4, // 站台紧急关闭半径
|
||||
offset: {x: 0, y: 40}, // 站台紧急关闭偏移量
|
||||
closeColor: '#F61107' // 站台紧急关闭颜色
|
||||
},
|
||||
reentry: { // 站台折返策略
|
||||
direction: 0, // 折返方向
|
||||
offset: {x: -16, y: 20}, // 折返偏移量
|
||||
noHumanColor: '#0F16DA', // 站台无人折返
|
||||
AutoChangeEndsColor: '#0BF400' // 站台自动换端
|
||||
},
|
||||
detainCar: { // 扣车
|
||||
text: 'H', // 扣车显示内容
|
||||
direction: -1, // 扣车方向
|
||||
offset: {x: -8, y: -6}, // 扣车偏移量
|
||||
trainColor: '#E4EF50', // 车站扣车颜色
|
||||
centerTrainColor: '#FFFFFF', // 中心扣车颜色
|
||||
andCenterTrainColor: '#F61107', // 车站+中心扣车颜色
|
||||
detainTrainTextColor: '#E4EF50' // 车站扣除文字颜色
|
||||
},
|
||||
stopTime: { // 停站时间
|
||||
direction: 1, // 运行时间方向
|
||||
offset: {x: -8, y: 26}, // 运行时间偏移量
|
||||
textColor: '#FFFFFF' // 停站时间字体颜色
|
||||
},
|
||||
level: { // 运行等级
|
||||
direction: 1, // 运行等级方向
|
||||
offset: {x: -8, y: 6}, // 运行等级偏移量
|
||||
textColor: '#FFFFFF' // 停站等级字体颜色
|
||||
}
|
||||
};
|
||||
this[deviceType.StationControl] = {
|
||||
singleControlNum: 2,
|
||||
@ -224,20 +213,24 @@ class Fuzhou extends defaultSkin {
|
||||
kilometerPosition: 'up'
|
||||
};
|
||||
this[deviceType.Switch] = {
|
||||
/** 道岔单边长度 */
|
||||
switchLen: 6,
|
||||
/** 道岔名称与区段距离*/
|
||||
switchNameDistance: 2,
|
||||
/** 道岔边框颜色*/
|
||||
switchTextBorderColor: '#FE0000',
|
||||
/** 道岔失去颜色*/
|
||||
switchTextLossColor: '#FFFFFF',
|
||||
/** 道岔定位颜色*/
|
||||
switchLocateTextColor: '#00FF00',
|
||||
/** 道岔反位颜色*/
|
||||
switchInversionColor: '#9C9D09',
|
||||
/** 道岔单锁颜色*/
|
||||
switchMonolockColor: '#870E10'
|
||||
text: {
|
||||
/** 道岔名称与区段距离*/
|
||||
switchNameDistance: 2,
|
||||
/** 道岔边框颜色*/
|
||||
switchTextBorderColor: '#FE0000',
|
||||
/** 道岔失去颜色*/
|
||||
switchTextLossColor: '#FFFFFF',
|
||||
/** 道岔定位颜色*/
|
||||
switchTextLocateColor: '#00FF00',
|
||||
/** 道岔反位颜色*/
|
||||
switchInversionColor: '#9C9D09',
|
||||
/** 道岔单锁颜色*/
|
||||
switchMonolockColor: '#870E10'
|
||||
},
|
||||
core: {
|
||||
/** 道岔单边长度 */
|
||||
switchLen: 6
|
||||
}
|
||||
};
|
||||
this[deviceType.Train] = {
|
||||
/** 车身line宽 */
|
||||
|
@ -21,6 +21,7 @@ export function parser(data, jmap) {
|
||||
|
||||
zrUtil.each(data.sectionList || [], elem => {
|
||||
mapDevice[elem.code] = deviceFactory(deviceType.Section, defaultStateDict, elem);
|
||||
|
||||
}, this);
|
||||
|
||||
zrUtil.each(data.signalList || [], elem => {
|
||||
@ -82,7 +83,10 @@ export function parser(data, jmap) {
|
||||
zrUtil.each(data.switchList || [], elem => {
|
||||
const cnodeSection = elem['sectionA'] = mapDevice[elem.sectionACode];
|
||||
const lnodeSection = elem['sectionB'] = mapDevice[elem.sectionBCode];
|
||||
const rnodeSection = elem['sectionC'] =mapDevice[elem.sectionCCode];
|
||||
const rnodeSection = elem['sectionC'] = mapDevice[elem.sectionCCode];
|
||||
|
||||
cnodeSection.model['switch'] = lnodeSection.model['switch'] = rnodeSection.model['switch'] = elem;
|
||||
|
||||
if (cnodeSection && lnodeSection && rnodeSection) {
|
||||
const cnode = mapDevice[cnodeSection.model.linkCode];
|
||||
if (cnode && cnode.model.leftFdCode === lnodeSection.model.linkCode && cnode.model.leftSdCode === rnodeSection.model.linkCode) {
|
||||
|
@ -58,7 +58,7 @@ export default {
|
||||
|
||||
// this.jmap.load({ skinVO: { code: '02' }, linkList: list });
|
||||
|
||||
getPublishMapDetail('02').then(resp => {
|
||||
getPublishMapDetail('03').then(resp => {
|
||||
this.jmap.setLevelVisible([deviceType.Link], false);
|
||||
this.jmap.load(resp.data);
|
||||
// this.jmap.setDefaultState();
|
||||
|
Loading…
Reference in New Issue
Block a user