Merge branch 'master' of https://git.code.tencent.com/xian-ncc-da/xian-ncc-da-client
This commit is contained in:
commit
f8e6f60e6f
@ -7,10 +7,11 @@ import { Signal, SignalTemplate } from 'src/graphics/signal/Signal';
|
||||
import { SignalDraw } from 'src/graphics/signal/SignalDrawAssistant';
|
||||
import {
|
||||
CombinationKey,
|
||||
GraphicApp,
|
||||
GraphicData,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
KeyListener,
|
||||
newDrawApp,
|
||||
IGraphicStorage,
|
||||
} from 'src/jl-graphic';
|
||||
import { ContextMenu } from 'src/jl-graphic/ui/ContextMenu';
|
||||
import { MenuItemOptions } from 'src/jl-graphic/ui/Menu';
|
||||
@ -120,7 +121,7 @@ import { FederatedMouseEvent } from 'pixi.js';
|
||||
// });
|
||||
// }
|
||||
|
||||
function constructMenu(app: JlDrawApp): (e: FederatedMouseEvent) => void {
|
||||
function constructMenu(app: IDrawApp): (e: FederatedMouseEvent) => void {
|
||||
const UndoOptions: MenuItemOptions = {
|
||||
name: '撤销',
|
||||
};
|
||||
@ -203,9 +204,9 @@ function constructMenu(app: JlDrawApp): (e: FederatedMouseEvent) => void {
|
||||
};
|
||||
return handleRightClick;
|
||||
}
|
||||
let drawApp: JlDrawApp | null = null;
|
||||
let drawApp: IDrawApp | null = null;
|
||||
|
||||
export function getDrawApp(): JlDrawApp | null {
|
||||
export function getDrawApp(): IDrawApp | null {
|
||||
return drawApp;
|
||||
}
|
||||
|
||||
@ -216,35 +217,18 @@ export function destroyDrawApp(): void {
|
||||
}
|
||||
}
|
||||
|
||||
export function initDrawApp(dom: HTMLElement): JlDrawApp {
|
||||
drawApp = new JlDrawApp(dom);
|
||||
export function initDrawApp(): IDrawApp {
|
||||
drawApp = newDrawApp({
|
||||
dataLoader: loadDrawDatas,
|
||||
});
|
||||
const app = drawApp;
|
||||
//根据草稿图类型加载绘图工具
|
||||
let drawAssistants: (
|
||||
| PlatformDraw
|
||||
| StationDraw
|
||||
| SignalDraw
|
||||
| TurnoutDraw
|
||||
| RunLineDraw
|
||||
| SectionDraw
|
||||
| LogicSectionDraw
|
||||
| StationLineDraw
|
||||
| RectDraw
|
||||
| TrainLineDraw
|
||||
| PathLineDraw
|
||||
| TrainWindowDraw
|
||||
| TrainDraw
|
||||
| OneClickGenerateDraw
|
||||
| AxleCountingDraw
|
||||
| SeparatorDraw
|
||||
)[] = [];
|
||||
const draftType = useDrawStore().$state.draftType;
|
||||
if (draftType === 'Line') {
|
||||
drawAssistants = [
|
||||
new PlatformDraw(
|
||||
app,
|
||||
new PlatformTemplate(new PlatformData(), new PlatformState())
|
||||
),
|
||||
new PlatformDraw(
|
||||
app,
|
||||
new PlatformTemplate(new PlatformData(), new PlatformState())
|
||||
),
|
||||
new StationDraw(
|
||||
app,
|
||||
new StationTemplate(new StationData(), new StationState())
|
||||
@ -273,11 +257,9 @@ export function initDrawApp(dom: HTMLElement): JlDrawApp {
|
||||
new AxleCountingTemplate(new AxleCountingData())
|
||||
),
|
||||
new SeparatorDraw(app, new SeparatorTemplate(new SeparatorData())),
|
||||
];
|
||||
DrawSignalInteraction.init(app);
|
||||
DrawSignalInteraction.init(app);
|
||||
} else {
|
||||
drawAssistants = [
|
||||
new StationLineDraw(app, new StationLineTemplate(new StationLineData())),
|
||||
new StationLineDraw(app, new StationLineTemplate(new StationLineData())),
|
||||
new RectDraw(app, new RectTemplate(new RectData())),
|
||||
new RunLineDraw(app, new RunLineTemplate(new RunLineData())),
|
||||
new TrainLineDraw(
|
||||
@ -285,14 +267,11 @@ export function initDrawApp(dom: HTMLElement): JlDrawApp {
|
||||
new ItrainLineTemplate(new TrainLineData(), new TrainLineState())
|
||||
),
|
||||
new PathLineDraw(app, new PathLineTemplate(new PathLineData())),
|
||||
];
|
||||
DrawRunLinePlugin.init(app);
|
||||
DrawRunLinePlugin.init(app);
|
||||
}
|
||||
|
||||
app.setOptions({ drawAssistants: drawAssistants });
|
||||
const handleRIghtClick = constructMenu(app);
|
||||
app.canvas.on('_rightclick', (e) => {
|
||||
if (app._drawing) return;
|
||||
if (app.drawing) return;
|
||||
handleRIghtClick(e);
|
||||
});
|
||||
app.addKeyboardListener(
|
||||
@ -308,7 +287,7 @@ export function initDrawApp(dom: HTMLElement): JlDrawApp {
|
||||
return drawApp;
|
||||
}
|
||||
|
||||
export function saveDrawToServer(app: JlDrawApp) {
|
||||
export function saveDrawToServer(app: IDrawApp) {
|
||||
const base64 = saveDrawDatas(app);
|
||||
const drawStore = useDrawStore();
|
||||
const id = drawStore.draftId;
|
||||
@ -325,7 +304,7 @@ export function saveDrawToServer(app: JlDrawApp) {
|
||||
}
|
||||
|
||||
// const StorageKey = 'graphic-storage';
|
||||
export function saveDrawDatas(app: JlDrawApp) {
|
||||
export function saveDrawDatas(app: IDrawApp) {
|
||||
const storage = new graphicData.RtssGraphicStorage();
|
||||
const canvasData = app.canvas.saveData();
|
||||
storage.canvas = new graphicData.Canvas({
|
||||
@ -393,14 +372,14 @@ export function saveDrawDatas(app: JlDrawApp) {
|
||||
return base64;
|
||||
}
|
||||
|
||||
export async function loadDrawDatas(app: GraphicApp) {
|
||||
export async function loadDrawDatas(): Promise<IGraphicStorage> {
|
||||
// localStorage.removeItem(StorageKey);
|
||||
// const base64 = localStorage.getItem(StorageKey);
|
||||
// console.log('加载数据', base64);
|
||||
const drawStore = useDrawStore();
|
||||
const id = drawStore.draftId;
|
||||
if (!id) {
|
||||
return;
|
||||
throw new Error('获取数据异常:未获取到草稿地图ID');
|
||||
}
|
||||
const { proto: base64 } = await getDraft(id);
|
||||
if (base64) {
|
||||
@ -408,7 +387,6 @@ export async function loadDrawDatas(app: GraphicApp) {
|
||||
toUint8Array(base64)
|
||||
);
|
||||
console.log('加载数据', storage);
|
||||
app.updateCanvas(storage.canvas);
|
||||
const datas: GraphicData[] = [];
|
||||
storage.links.forEach((link) => {
|
||||
datas.push(new LinkData(link));
|
||||
@ -461,8 +439,12 @@ export async function loadDrawDatas(app: GraphicApp) {
|
||||
storage.trainWindows.forEach((trainWindow) => {
|
||||
datas.push(new TrainWindowData(trainWindow));
|
||||
});
|
||||
app.loadGraphic(datas);
|
||||
} else {
|
||||
app.loadGraphic([]);
|
||||
return Promise.resolve({
|
||||
canvasProperty: storage.canvas,
|
||||
datas: datas,
|
||||
});
|
||||
}
|
||||
return Promise.resolve({
|
||||
datas: [],
|
||||
});
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicIdGenerator,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
distance2,
|
||||
} from 'src/jl-graphic';
|
||||
@ -16,7 +16,7 @@ import {
|
||||
AxleCountingTemplate,
|
||||
AxleCountingConsts,
|
||||
} from './AxleCounting';
|
||||
import { Section, SectionPort, SectionType } from '../section/Section';
|
||||
import { Section, SectionPort } from '../section/Section';
|
||||
import { Turnout, TurnoutPort } from '../turnout/Turnout';
|
||||
import { IRelatedRefData, createRelatedRefProto } from '../CommonGraphics';
|
||||
import { Signal } from '../signal/Signal';
|
||||
@ -42,7 +42,7 @@ export class AxleCountingDraw extends GraphicDrawAssistant<
|
||||
IAxleCountingData
|
||||
> {
|
||||
codeGraph: AxleCounting;
|
||||
constructor(app: JlDrawApp, template: AxleCountingTemplate) {
|
||||
constructor(app: IDrawApp, template: AxleCountingTemplate) {
|
||||
super(app, template, 'sym_o_circle', '不展示');
|
||||
this.codeGraph = this.graphicTemplate.new();
|
||||
this.container.addChild(this.codeGraph);
|
||||
@ -198,12 +198,6 @@ export class AxleCountingDraw extends GraphicDrawAssistant<
|
||||
if (axleCountingPs.y > height.y) {
|
||||
direction = -1;
|
||||
}
|
||||
if (
|
||||
section.datas.sectionType === SectionType.Logic ||
|
||||
section.datas.children.includes(refDevice.id)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
if (refDevice.type == Section.Type || refDevice.type == Turnout.Type)
|
||||
this.draw(
|
||||
axleCountingPs,
|
||||
@ -352,10 +346,10 @@ function buildAbsorbablePositions(
|
||||
|
||||
export class AxleCountingInteraction extends GraphicInteractionPlugin<AxleCounting> {
|
||||
static Name = 'AxleCounting_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(AxleCountingInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new AxleCountingInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): AxleCounting[] | undefined {
|
||||
|
@ -10,11 +10,11 @@ import {
|
||||
import {
|
||||
AbsorbablePosition,
|
||||
DraggablePoint,
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicTransformEvent,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
KeyListener,
|
||||
calculateMirrorPoint,
|
||||
@ -61,7 +61,7 @@ export class LinkDraw extends GraphicDrawAssistant<LinkTemplate, ILinkData> {
|
||||
},
|
||||
});
|
||||
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(app, new LinkTemplate(), 'sym_o_horizontal_rule', '轨道Link');
|
||||
this.container.addChild(this.graphic);
|
||||
this.graphicTemplate.curve = true;
|
||||
@ -268,10 +268,10 @@ function onEditPointCreate(
|
||||
*/
|
||||
export class LinkPointsEditPlugin extends GraphicInteractionPlugin<Link> {
|
||||
static Name = 'LinkPointsDrag';
|
||||
constructor(app: GraphicApp) {
|
||||
constructor(app: IGraphicApp) {
|
||||
super(LinkPointsEditPlugin.Name, app);
|
||||
}
|
||||
static init(app: GraphicApp): LinkPointsEditPlugin {
|
||||
static init(app: IGraphicApp): LinkPointsEditPlugin {
|
||||
return new LinkPointsEditPlugin(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Link[] | undefined {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import {
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
linePoint,
|
||||
} from 'src/jl-graphic';
|
||||
@ -17,7 +17,7 @@ export class LogicSectionDraw extends GraphicDrawAssistant<
|
||||
> {
|
||||
points: Point[] = [];
|
||||
graphic = new Graphics();
|
||||
constructor(app: JlDrawApp, template: LogicSectionTemplate) {
|
||||
constructor(app: IDrawApp, template: LogicSectionTemplate) {
|
||||
super(app, template, 'sym_o_timeline', '不展示');
|
||||
this.container.addChild(this.graphic);
|
||||
LogicSectionEditPlugin.init(app);
|
||||
@ -60,10 +60,10 @@ export class LogicSectionGraphicHitArea implements IHitArea {
|
||||
|
||||
export class LogicSectionEditPlugin extends GraphicInteractionPlugin<LogicSection> {
|
||||
static Name = 'LogicSectionInteraction';
|
||||
constructor(app: GraphicApp) {
|
||||
constructor(app: IGraphicApp) {
|
||||
super(LogicSectionEditPlugin.Name, app);
|
||||
}
|
||||
static init(app: GraphicApp) {
|
||||
static init(app: IGraphicApp) {
|
||||
return new LogicSectionEditPlugin(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): LogicSection[] | undefined {
|
||||
|
@ -1,9 +1,9 @@
|
||||
import {
|
||||
GraphicDrawAssistant,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
linePoint,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
JlGraphic,
|
||||
DraggablePoint,
|
||||
GraphicTransformEvent,
|
||||
@ -37,7 +37,7 @@ export class PathLineDraw extends GraphicDrawAssistant<
|
||||
code = '';
|
||||
graphic: Graphics = new Graphics();
|
||||
|
||||
constructor(app: JlDrawApp, template: PathLineTemplate) {
|
||||
constructor(app: IDrawApp, template: PathLineTemplate) {
|
||||
super(app, template, 'sym_o_horizontal_rule', '不展示');
|
||||
this.container.addChild(this.graphic);
|
||||
PathLinePointsEditPlugin.init(app);
|
||||
@ -106,10 +106,10 @@ export class PathLineGraphicHitArea implements IHitArea {
|
||||
|
||||
export class PathLinePointsEditPlugin extends GraphicInteractionPlugin<PathLine> {
|
||||
static Name = 'LinkPointsDrag';
|
||||
constructor(app: GraphicApp) {
|
||||
constructor(app: IGraphicApp) {
|
||||
super(PathLinePointsEditPlugin.Name, app);
|
||||
}
|
||||
static init(app: GraphicApp): PathLinePointsEditPlugin {
|
||||
static init(app: IGraphicApp): PathLinePointsEditPlugin {
|
||||
return new PathLinePointsEditPlugin(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): PathLine[] | undefined {
|
||||
|
@ -372,7 +372,7 @@ export class Platform extends JlGraphic {
|
||||
return this.datas.code;
|
||||
}
|
||||
doRepaint(): void {
|
||||
const station = this.queryStore.queryByCodeAndType<Station>(
|
||||
const station = this.getGraphicApp().queryStore.queryByCodeAndType<Station>(
|
||||
this.states.rtuId > 9 ? '' + this.states.rtuId : '0' + this.states.rtuId,
|
||||
Station.Type
|
||||
);
|
||||
|
@ -4,7 +4,7 @@ import {
|
||||
AbsorbablePosition,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
|
||||
@ -19,7 +19,7 @@ export class PlatformDraw extends GraphicDrawAssistant<
|
||||
IPlatformData
|
||||
> {
|
||||
platformGraphic: Platform;
|
||||
constructor(app: JlDrawApp, template: PlatformTemplate) {
|
||||
constructor(app: IDrawApp, template: PlatformTemplate) {
|
||||
super(
|
||||
app,
|
||||
template,
|
||||
@ -76,10 +76,10 @@ function buildAbsorbablePositions(platform: Platform): AbsorbablePosition[] {
|
||||
|
||||
export class platformInteraction extends GraphicInteractionPlugin<Platform> {
|
||||
static Name = 'platform_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(platformInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new platformInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Platform[] | undefined {
|
||||
|
@ -7,11 +7,11 @@ import {
|
||||
} from 'pixi.js';
|
||||
import {
|
||||
DraggablePoint,
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicTransformEvent,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
linePoint,
|
||||
} from 'src/jl-graphic';
|
||||
@ -37,7 +37,7 @@ export class PolygonDraw extends GraphicDrawAssistant<
|
||||
points: Point[] = [];
|
||||
polygonGraphic: Graphics = new Graphics();
|
||||
|
||||
constructor(app: JlDrawApp, template: PolygonTemplate) {
|
||||
constructor(app: IDrawApp, template: PolygonTemplate) {
|
||||
super(app, template, 'sym_o_square', '多边形Polygon');
|
||||
this.container.addChild(this.polygonGraphic);
|
||||
PolygonPointsEditPlugin.init(app);
|
||||
@ -151,10 +151,10 @@ function onEditPointCreate(g: ILineGraphic, dp: DraggablePoint): void {
|
||||
*/
|
||||
export class PolygonPointsEditPlugin extends GraphicInteractionPlugin<Polygon> {
|
||||
static Name = 'PolygonPointsDrag';
|
||||
constructor(app: GraphicApp) {
|
||||
constructor(app: IGraphicApp) {
|
||||
super(PolygonPointsEditPlugin.Name, app);
|
||||
}
|
||||
static init(app: GraphicApp): PolygonPointsEditPlugin {
|
||||
static init(app: IGraphicApp): PolygonPointsEditPlugin {
|
||||
return new PolygonPointsEditPlugin(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Polygon[] | undefined {
|
||||
|
@ -2,7 +2,7 @@ import { FederatedPointerEvent, Graphics, Point, IHitArea } from 'pixi.js';
|
||||
import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
pointBox,
|
||||
} from 'src/jl-graphic';
|
||||
@ -18,7 +18,7 @@ export class RectDraw extends GraphicDrawAssistant<RectTemplate, IRectData> {
|
||||
point2: Point | null = null;
|
||||
rectGraphic: Graphics = new Graphics();
|
||||
|
||||
constructor(app: JlDrawApp, template: RectTemplate) {
|
||||
constructor(app: IDrawApp, template: RectTemplate) {
|
||||
super(app, template, 'sym_o_square', '矩形Rect');
|
||||
this.container.addChild(this.rectGraphic);
|
||||
rectInteraction.init(app);
|
||||
@ -88,10 +88,10 @@ export class RectGraphicHitArea implements IHitArea {
|
||||
|
||||
export class rectInteraction extends GraphicInteractionPlugin<Rect> {
|
||||
static Name = 'platform_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(rectInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new rectInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Rect[] | undefined {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import {
|
||||
GraphicDrawAssistant,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
GraphicInteractionPlugin,
|
||||
linePoint,
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
AbsorbablePosition,
|
||||
DraggablePoint,
|
||||
GraphicTransformEvent,
|
||||
@ -40,7 +40,7 @@ export class RunLineDraw extends GraphicDrawAssistant<
|
||||
points: Point[] = [];
|
||||
graphic: Graphics = new Graphics();
|
||||
|
||||
constructor(app: JlDrawApp, template: RunLineTemplate) {
|
||||
constructor(app: IDrawApp, template: RunLineTemplate) {
|
||||
super(app, template, 'sym_o_horizontal_rule', '运行线RunLine');
|
||||
this.container.addChild(this.graphic);
|
||||
RunLinePointsEditPlugin.init(app);
|
||||
@ -162,10 +162,10 @@ function onEditPointCreate(
|
||||
|
||||
export class RunLinePointsEditPlugin extends GraphicInteractionPlugin<RunLine> {
|
||||
static Name = 'LinkPointsDrag';
|
||||
constructor(app: GraphicApp) {
|
||||
constructor(app: IGraphicApp) {
|
||||
super(RunLinePointsEditPlugin.Name, app);
|
||||
}
|
||||
static init(app: GraphicApp): RunLinePointsEditPlugin {
|
||||
static init(app: IGraphicApp): RunLinePointsEditPlugin {
|
||||
return new RunLinePointsEditPlugin(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): RunLine[] | undefined {
|
||||
|
@ -1,13 +1,13 @@
|
||||
import {
|
||||
ChildTransform,
|
||||
DraggablePoint,
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicRelation,
|
||||
GraphicTransform,
|
||||
GraphicTransformEvent,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
VectorText,
|
||||
calculateLineMidpoint,
|
||||
@ -60,7 +60,7 @@ export class SectionDraw extends GraphicDrawAssistant<
|
||||
points: Point[] = [];
|
||||
graphic = new Graphics();
|
||||
|
||||
constructor(app: JlDrawApp, template: SectionTemplate) {
|
||||
constructor(app: IDrawApp, template: SectionTemplate) {
|
||||
super(app, template, 'sym_o_timeline', '区段Section');
|
||||
this.container.addChild(this.graphic);
|
||||
|
||||
@ -400,12 +400,12 @@ export class SectionPointEditPlugin extends GraphicInteractionPlugin<Section> {
|
||||
static Name = 'SectionPointDrag';
|
||||
drawAssistant: SectionDraw;
|
||||
|
||||
constructor(app: GraphicApp, da: SectionDraw) {
|
||||
constructor(app: IGraphicApp, da: SectionDraw) {
|
||||
super(SectionPointEditPlugin.Name, app);
|
||||
this.drawAssistant = da;
|
||||
app.registerMenu(SectionEditMenu);
|
||||
}
|
||||
static init(app: GraphicApp, da: SectionDraw) {
|
||||
static init(app: IGraphicApp, da: SectionDraw) {
|
||||
return new SectionPointEditPlugin(app, da);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Section[] | undefined {
|
||||
|
@ -4,7 +4,7 @@ import {
|
||||
GraphicIdGenerator,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicRelationParam,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
linePoint,
|
||||
} from 'src/jl-graphic';
|
||||
@ -25,7 +25,7 @@ export class SeparatorDraw extends GraphicDrawAssistant<
|
||||
ISeparatorData
|
||||
> {
|
||||
SeparatorGraph: Separator;
|
||||
constructor(app: JlDrawApp, template: SeparatorTemplate) {
|
||||
constructor(app: IDrawApp, template: SeparatorTemplate) {
|
||||
super(app, template, 'sym_o_square', '不展示');
|
||||
this.SeparatorGraph = this.graphicTemplate.new();
|
||||
this.container.addChild(this.SeparatorGraph);
|
||||
@ -258,10 +258,10 @@ export class SeparatorGraphicHitArea implements IHitArea {
|
||||
|
||||
export class SeparatorInteraction extends GraphicInteractionPlugin<Separator> {
|
||||
static Name = 'Separator_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(SeparatorInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new SeparatorInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Separator[] | undefined {
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicTransformEvent,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
|
||||
@ -21,7 +21,7 @@ export class SignalDraw extends GraphicDrawAssistant<
|
||||
> {
|
||||
_signal: Signal | null = null;
|
||||
|
||||
constructor(app: JlDrawApp, template: SignalTemplate) {
|
||||
constructor(app: IDrawApp, template: SignalTemplate) {
|
||||
super(
|
||||
app,
|
||||
template,
|
||||
@ -129,10 +129,10 @@ function buildCodeAbsorbablePositions(signal: Signal): AbsorbablePosition[] {
|
||||
|
||||
export class signalInteraction extends GraphicInteractionPlugin<Signal> {
|
||||
static Name = 'signal_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(signalInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new signalInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Signal[] | undefined {
|
||||
|
@ -4,7 +4,7 @@ import {
|
||||
AbsorbablePosition,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
|
||||
@ -19,7 +19,7 @@ export class StationDraw extends GraphicDrawAssistant<
|
||||
IStationData
|
||||
> {
|
||||
codeGraph: Station;
|
||||
constructor(app: JlDrawApp, template: StationTemplate) {
|
||||
constructor(app: IDrawApp, template: StationTemplate) {
|
||||
super(
|
||||
app,
|
||||
template,
|
||||
@ -72,10 +72,10 @@ function buildAbsorbablePositions(station: Station): AbsorbablePosition[] {
|
||||
|
||||
export class stationInteraction extends GraphicInteractionPlugin<Station> {
|
||||
static Name = 'station_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(stationInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new stationInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Station[] | undefined {
|
||||
|
@ -4,7 +4,7 @@ import {
|
||||
AbsorbablePosition,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
|
||||
@ -24,7 +24,7 @@ export class StationLineDraw extends GraphicDrawAssistant<
|
||||
IStationLineData
|
||||
> {
|
||||
codeGraph: StationLine;
|
||||
constructor(app: JlDrawApp, template: StationLineTemplate) {
|
||||
constructor(app: IDrawApp, template: StationLineTemplate) {
|
||||
super(
|
||||
app,
|
||||
template,
|
||||
@ -86,10 +86,10 @@ function buildAbsorbablePositions(Station: StationLine): AbsorbablePosition[] {
|
||||
export class stationLineInteraction extends GraphicInteractionPlugin<StationLine> {
|
||||
static Name = 'stationLine_transform';
|
||||
static stationLine: StationLine;
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(stationLineInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new stationLineInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): StationLine[] | undefined {
|
||||
|
@ -2,7 +2,7 @@ import { Point, FederatedPointerEvent } from 'pixi.js';
|
||||
import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
|
||||
@ -15,7 +15,7 @@ export interface ITrainDrawOptions {
|
||||
export class TrainDraw extends GraphicDrawAssistant<TrainTemplate, ITrainData> {
|
||||
_Train: Train | null = null;
|
||||
|
||||
constructor(app: JlDrawApp, template: TrainTemplate) {
|
||||
constructor(app: IDrawApp, template: TrainTemplate) {
|
||||
super(app, template, 'directions_bus_filled', '不展示');
|
||||
trainInteraction.init(app);
|
||||
}
|
||||
@ -48,10 +48,10 @@ export class TrainDraw extends GraphicDrawAssistant<TrainTemplate, ITrainData> {
|
||||
|
||||
export class trainInteraction extends GraphicInteractionPlugin<Train> {
|
||||
static Name = 'train_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(trainInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new trainInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Train[] | undefined {
|
||||
|
@ -2,7 +2,7 @@ import { FederatedMouseEvent, Point } from 'pixi.js';
|
||||
import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
import { ITrainLineData, TrainLine, ItrainLineTemplate } from './TrainLine';
|
||||
@ -13,7 +13,7 @@ export class TrainLineDraw extends GraphicDrawAssistant<
|
||||
> {
|
||||
train: TrainLine | null = null;
|
||||
|
||||
constructor(app: JlDrawApp, template: ItrainLineTemplate) {
|
||||
constructor(app: IDrawApp, template: ItrainLineTemplate) {
|
||||
super(app, template, 'directions_bus_filled', '列车线网');
|
||||
ItrainLineInteraction.init(app);
|
||||
}
|
||||
@ -51,10 +51,10 @@ export class TrainLineDraw extends GraphicDrawAssistant<
|
||||
|
||||
export class ItrainLineInteraction extends GraphicInteractionPlugin<TrainLine> {
|
||||
static Name = 'trainLine_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(ItrainLineInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new ItrainLineInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): TrainLine[] | undefined {
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicIdGenerator,
|
||||
GraphicInteractionPlugin,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'src/jl-graphic';
|
||||
|
||||
@ -69,7 +69,7 @@ export class TrainWindowDraw extends GraphicDrawAssistant<
|
||||
ITrainWindowData
|
||||
> {
|
||||
trainWindowGraph: TrainWindow;
|
||||
constructor(app: JlDrawApp, template: TrainWindowTemplate) {
|
||||
constructor(app: IDrawApp, template: TrainWindowTemplate) {
|
||||
super(app, template, 'sym_o_square', '不展示');
|
||||
this.trainWindowGraph = this.graphicTemplate.new();
|
||||
this.container.addChild(this.trainWindowGraph);
|
||||
@ -243,10 +243,10 @@ function buildAbsorbablePositions(
|
||||
|
||||
export class TrainWindowInteraction extends GraphicInteractionPlugin<TrainWindow> {
|
||||
static Name = 'TrainWindow_transform';
|
||||
constructor(app: JlDrawApp) {
|
||||
constructor(app: IDrawApp) {
|
||||
super(TrainWindowInteraction.Name, app);
|
||||
}
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new TrainWindowInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): TrainWindow[] | undefined {
|
||||
|
@ -1,12 +1,12 @@
|
||||
import {
|
||||
AbsorbablePosition,
|
||||
DraggablePoint,
|
||||
GraphicApp,
|
||||
IGraphicApp,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
GraphicRelation,
|
||||
GraphicTransformEvent,
|
||||
JlDrawApp,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
VectorText,
|
||||
linePoint,
|
||||
@ -44,7 +44,7 @@ export class TurnoutDraw extends GraphicDrawAssistant<
|
||||
ITurnoutData
|
||||
> {
|
||||
turnout: Turnout;
|
||||
constructor(app: JlDrawApp, template: TurnoutTemplate) {
|
||||
constructor(app: IDrawApp, template: TurnoutTemplate) {
|
||||
super(app, template, 'sym_o_ramp_left', '道岔Turnout');
|
||||
|
||||
this.turnout = this.graphicTemplate.new();
|
||||
@ -205,11 +205,11 @@ const turnoutSectionEditMenu: ContextMenu = ContextMenu.init({
|
||||
|
||||
export class TurnoutPointsInteractionPlugin extends GraphicInteractionPlugin<Turnout> {
|
||||
static Name = 'TurnoutPointsDrag';
|
||||
static init(app: JlDrawApp) {
|
||||
static init(app: IDrawApp) {
|
||||
return new TurnoutPointsInteractionPlugin(app);
|
||||
}
|
||||
|
||||
constructor(app: GraphicApp) {
|
||||
constructor(app: IGraphicApp) {
|
||||
super(TurnoutPointsInteractionPlugin.Name, app);
|
||||
app.registerMenu(turnoutSectionEditMenu);
|
||||
}
|
||||
|
@ -139,7 +139,7 @@
|
||||
</q-drawer>
|
||||
|
||||
<q-page-container>
|
||||
<div id="draw-app-container"></div>
|
||||
<div id="draw-app-container" class="overflow-hidden"></div>
|
||||
</q-page-container>
|
||||
|
||||
<q-dialog
|
||||
@ -173,13 +173,8 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import DrawProperties from 'src/components/draw-app/DrawProperties.vue';
|
||||
import {
|
||||
getDrawApp,
|
||||
loadDrawDatas,
|
||||
saveDrawDatas,
|
||||
saveDrawToServer,
|
||||
} from 'src/drawApp';
|
||||
import { JlDrawApp } from 'src/jl-graphic';
|
||||
import { getDrawApp, saveDrawDatas, saveDrawToServer } from 'src/drawApp';
|
||||
import { IDrawApp } from 'src/jl-graphic';
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
import { onMounted, onUnmounted, reactive, ref, watch } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
@ -191,6 +186,15 @@ import { Separator } from 'src/graphics/separator/Separator';
|
||||
import { SeparatorDraw } from 'src/graphics/separator/SeparatorDrawAssistant';
|
||||
import { SectionDraw } from 'src/graphics/section/SectionDrawAssistant';
|
||||
import { Section } from 'src/graphics/section/Section';
|
||||
import { Platform } from 'src/graphics/platform/Platform';
|
||||
import { Station } from 'src/graphics/station/Station';
|
||||
import { Signal } from 'src/graphics/signal/Signal';
|
||||
import { Turnout } from 'src/graphics/turnout/Turnout';
|
||||
import { Rect } from 'src/graphics/rect/Rect';
|
||||
import { TrainLine } from 'src/graphics/trainLine/TrainLine';
|
||||
import { StationLine } from 'src/graphics/stationLine/StationLine';
|
||||
import { RunLine } from 'src/graphics/runLine/RunLine';
|
||||
import { PathLine } from 'src/graphics/pathLine/PathLine';
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
@ -245,26 +249,48 @@ onMounted(() => {
|
||||
drawStore.setDraftType(route.params.type as string);
|
||||
if (dom) {
|
||||
drawStore.setDraftId(+route.params.id as number);
|
||||
const drawApp = drawStore.initDrawApp(dom);
|
||||
loadDrawDatas(drawApp);
|
||||
const drawApp = drawStore.initDrawApp();
|
||||
drawApp.bindDom(dom);
|
||||
drawApp.reload();
|
||||
onResize();
|
||||
} else {
|
||||
drawStore.setDraftId(null);
|
||||
}
|
||||
const drawAssistants = (getDrawApp()?._options as { drawAssistants: [] })
|
||||
.drawAssistants;
|
||||
drawAssistants.forEach(
|
||||
(da: { name: string; icon: string; description: string }) => {
|
||||
if (da.description === '不展示') return;
|
||||
let drawAssistantsTypes: string[] = [];
|
||||
const draftType = useDrawStore().$state.draftType;
|
||||
if (draftType === 'Line') {
|
||||
drawAssistantsTypes = [
|
||||
Platform.Type,
|
||||
Station.Type,
|
||||
Signal.Type,
|
||||
Section.Type,
|
||||
Turnout.Type,
|
||||
];
|
||||
} else {
|
||||
drawAssistantsTypes = [
|
||||
Rect.Type,
|
||||
TrainLine.Type,
|
||||
StationLine.Type,
|
||||
RunLine.Type,
|
||||
PathLine.Type,
|
||||
];
|
||||
}
|
||||
|
||||
drawAssistantsTypes.forEach((type) => {
|
||||
const drawAssistant = getDrawApp()?.getDrawAssistant(type);
|
||||
if (drawAssistant) {
|
||||
if (drawAssistant.description === '不展示') return;
|
||||
utilsOption.push(
|
||||
new ControlItem(
|
||||
da.name,
|
||||
da.icon,
|
||||
da.description ? da.description : da.name
|
||||
drawAssistant.name,
|
||||
drawAssistant.icon,
|
||||
drawAssistant.description
|
||||
? drawAssistant.description
|
||||
: drawAssistant.name
|
||||
)
|
||||
);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
const canvasWidth = ref(0);
|
||||
@ -299,14 +325,10 @@ function onResize() {
|
||||
dom.style.width = canvasWidth.value + 'px';
|
||||
dom.style.height = canvasHeight.value + 'px';
|
||||
}
|
||||
const drawApp = getDrawApp();
|
||||
if (drawApp) {
|
||||
drawApp.onDomResize(canvasWidth.value, canvasHeight.value);
|
||||
}
|
||||
}
|
||||
function saveAllDrawDatas() {
|
||||
const drawApp = getDrawApp();
|
||||
saveDrawToServer(drawApp as JlDrawApp);
|
||||
saveDrawToServer(drawApp as IDrawApp);
|
||||
}
|
||||
|
||||
function buildRelations() {
|
||||
@ -351,7 +373,7 @@ const saveAsName = ref('');
|
||||
async function saveAs(name: string) {
|
||||
try {
|
||||
const drawApp = getDrawApp();
|
||||
const base64 = saveDrawDatas(drawApp as JlDrawApp);
|
||||
const base64 = saveDrawDatas(drawApp as IDrawApp);
|
||||
const record = await saveAsDraft(+route.params.id as number, {
|
||||
name,
|
||||
proto: base64,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { destroyDrawApp, getDrawApp, initDrawApp } from 'src/drawApp';
|
||||
import { DrawAssistant, JlCanvas, JlDrawApp, JlGraphic } from 'src/jl-graphic';
|
||||
import { DrawAssistant, IJlCanvas, IDrawApp, JlGraphic } from 'src/jl-graphic';
|
||||
|
||||
export const useDrawStore = defineStore('draw', {
|
||||
state: () => ({
|
||||
@ -44,18 +44,18 @@ export const useDrawStore = defineStore('draw', {
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
getDrawApp(): JlDrawApp {
|
||||
getDrawApp(): IDrawApp {
|
||||
const app = getDrawApp();
|
||||
if (app == null) {
|
||||
throw new Error('未初始化app');
|
||||
}
|
||||
return app;
|
||||
},
|
||||
getJlCanvas(): JlCanvas {
|
||||
getJlCanvas(): IJlCanvas {
|
||||
return this.getDrawApp().canvas;
|
||||
},
|
||||
initDrawApp(dom: HTMLElement) {
|
||||
const app = initDrawApp(dom);
|
||||
initDrawApp() {
|
||||
const app = initDrawApp();
|
||||
app.on('interaction-plugin-resume', (plugin) => {
|
||||
if (plugin.isAppPlugin()) {
|
||||
if (Object.hasOwn(plugin, '__GraphicDrawAssistant')) {
|
||||
|
Loading…
Reference in New Issue
Block a user