|
|
@@ -1,6 +1,7 @@
|
|
|
import { crtPath } from '../core/Utils'
|
|
|
import { DirectionEnum, RouteItem, SectionStatusEnum, SelectionItem, SignalItem, SwitchItem, TowardEnum } from "@/types/train-travel";
|
|
|
import { useStoreSocket } from '@/store/socket'
|
|
|
+import { calculateComponents } from "../core/CalculateUtils.ts";
|
|
|
|
|
|
export class DrawTrack {
|
|
|
|
|
|
@@ -20,27 +21,46 @@ export class DrawTrack {
|
|
|
const routeList: RouteItem[] = storeSocket.getRouteList;
|
|
|
for (let i: number = 0; i < list.length; i++) {
|
|
|
const item: SwitchItem = list[i];
|
|
|
- if (item.type % 2 === 1) {
|
|
|
- let filter: SwitchItem[] = list.filter(s => s.id == item.switchTie);
|
|
|
- if (filter.length === 0) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- this.canvas.save();
|
|
|
- this.canvas.beginPath();
|
|
|
+ let filter: SwitchItem[] = list.filter(s => s.id == item.switchTie);
|
|
|
+ if (filter.length === 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ this.canvas.save();
|
|
|
+ this.canvas.beginPath();
|
|
|
+ this.canvas.strokeStyle = "#00FF00";
|
|
|
+ const sectionItem: RouteItem | undefined = routeList.find(s => s.sectionId == item.sectionId)
|
|
|
+ if (item.type == 4 && item.kilometer < 1000) {
|
|
|
+ console.log("4", item);
|
|
|
+ }
|
|
|
+ if (sectionItem?.sectionStatus == SectionStatusEnum.OCCUPY) {
|
|
|
+ this.canvas.strokeStyle = "#FF0000";
|
|
|
+ } else if (sectionItem?.sectionStatus == SectionStatusEnum.IDLE) {
|
|
|
+ this.canvas.strokeStyle = "#898989";
|
|
|
+ } else if (sectionItem?.sectionStatus == SectionStatusEnum.LOCK) {
|
|
|
this.canvas.strokeStyle = "#00FF00";
|
|
|
- const sectionItem: RouteItem | undefined = routeList.find(s => s.sectionId == item.preSelectionId)
|
|
|
- if (sectionItem?.sectionStatus == SectionStatusEnum.OCCUPY) {
|
|
|
- this.canvas.strokeStyle = "#FF0000";
|
|
|
- } else if (sectionItem?.sectionStatus == SectionStatusEnum.IDLE) {
|
|
|
- this.canvas.strokeStyle = "#898989";
|
|
|
- } else if (sectionItem?.sectionStatus == SectionStatusEnum.LOCK) {
|
|
|
- this.canvas.strokeStyle = "#00FF00";
|
|
|
- } else {
|
|
|
- this.canvas.strokeStyle = "#898989";
|
|
|
- }
|
|
|
- crtPath(this.canvas, [item.kilometer, this.line_up, filter[0].kilometer, this.line_down]);
|
|
|
- this.canvas.stroke();
|
|
|
+ } else {
|
|
|
+ this.canvas.strokeStyle = "#898989";
|
|
|
}
|
|
|
+ const { x, y } = calculateComponents(141.42);
|
|
|
+ switch (item.type) {
|
|
|
+ case 1:
|
|
|
+ crtPath(this.canvas, [item.kilometer, this.line_up, item.kilometer + x, this.line_up + y]);
|
|
|
+ // this.canvas.fillText(item.name, item.kilometer, this.line_up);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ crtPath(this.canvas, [item.kilometer, this.line_down, item.kilometer + x, this.line_down - y]);
|
|
|
+ // this.canvas.fillText(item.name, item.kilometer, this.line_down);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ crtPath(this.canvas, [item.kilometer, this.line_down, item.kilometer - x, this.line_down - y]);
|
|
|
+ // this.canvas.fillText(item.name, item.kilometer, this.line_down);
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ crtPath(this.canvas, [item.kilometer, this.line_up, item.kilometer - x, this.line_up + y]);
|
|
|
+ // this.canvas.fillText(item.name, item.kilometer, this.line_up);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ this.canvas.stroke();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -66,7 +86,14 @@ export class DrawTrack {
|
|
|
this.canvas.arc(x - space, y - 1.5 * space, Math.abs(space * 0.5), 0, Math.PI * 2);
|
|
|
this.canvas.lineWidth = 0.5;
|
|
|
this.canvas.fillStyle = "#FF0000";
|
|
|
- if ((direction == DirectionEnum.UP && toward == TowardEnum.FORWARD) || (direction == DirectionEnum.DOWN && toward == TowardEnum.REVERSE)) {
|
|
|
+ if (name == "S0102") {
|
|
|
+ console.log("xinhaodeng", direction);
|
|
|
+ }
|
|
|
+ const turnBack: boolean = routeItem?.turnBack || false;
|
|
|
+ if ((!turnBack && direction == DirectionEnum.UP && toward == TowardEnum.FORWARD)
|
|
|
+ || (turnBack && direction == DirectionEnum.DOWN && toward == TowardEnum.FORWARD)
|
|
|
+ || (!turnBack && direction == DirectionEnum.DOWN && toward == TowardEnum.REVERSE)
|
|
|
+ || (turnBack && direction == DirectionEnum.UP && toward == TowardEnum.REVERSE)) {
|
|
|
switch (routeItem?.sectionStatus) {
|
|
|
case SectionStatusEnum.LOCK:
|
|
|
this.canvas.fillStyle = "#00FF00";
|
|
|
@@ -95,6 +122,7 @@ export class DrawTrack {
|
|
|
drawLine(selectionList: SelectionItem[]): void {
|
|
|
const storeSocket = useStoreSocket();
|
|
|
const routeList: RouteItem[] = storeSocket.getRouteList;
|
|
|
+ console.log("routeList: ", routeList);
|
|
|
for (let i: number = 0; i < selectionList.length; i++) {
|
|
|
const item: SelectionItem = selectionList[i];
|
|
|
if (item.switch) {
|