重构单例实现

pull/219/MERGE
ChenX 6 years ago
parent 37a97550c1
commit 64756ed9a8

@ -19,7 +19,7 @@ function testPathCount(br: Board, count?: number)
expect(cu.Length).toMatchSnapshot("曲线长度"); expect(cu.Length).toMatchSnapshot("曲线长度");
} }
} }
let feedUtil = new FeedingToolPath(); let feedUtil = FeedingToolPath.GetInstance();
test("通孔造型测试", () => test("通孔造型测试", () =>
{ {

@ -48,8 +48,6 @@ exports[`复杂极限刀半径: 曲线长度 5`] = `2927.3167299028455`;
exports[`复杂极限刀半径: 曲线长度 6`] = `3278.917934988776`; exports[`复杂极限刀半径: 曲线长度 6`] = `3278.917934988776`;
exports[`复杂极限刀半径: 曲线长度 7`] = `3278.917934988776`;
exports[`复杂极限刀半径: 走刀数量 1`] = `4`; exports[`复杂极限刀半径: 走刀数量 1`] = `4`;
exports[`复杂造型测试: 曲线长度 1`] = `2402.511185283596`; exports[`复杂造型测试: 曲线长度 1`] = `2402.511185283596`;

@ -1,20 +1,20 @@
import * as THREE from 'three'; import * as THREE from 'three';
import { Box3, Vector3, Matrix4 } from 'three'; import { Box3, Matrix4, Vector3 } from 'three';
import { observable } from '../../node_modules/mobx'; import { observable } from '../../node_modules/mobx';
import { app } from '../ApplicationServices/Application'; import { app } from '../ApplicationServices/Application';
import { CheckObjectType, CheckoutValid } from '../Common/CheckoutVaildValue';
import { Vec3DTo2D } from '../Common/CurveUtils';
import { DataAdapter } from '../Common/DataAdapter';
import { Singleton } from '../Common/Singleton';
import { Entity } from '../DatabaseServices/Entity'; import { Entity } from '../DatabaseServices/Entity';
import { Polyline } from '../DatabaseServices/Polyline';
import { Command } from '../Editor/CommandMachine'; import { Command } from '../Editor/CommandMachine';
import { JigUtils } from '../Editor/JigUtils';
import { PromptStatus } from '../Editor/PromptResult'; import { PromptStatus } from '../Editor/PromptResult';
import { SelectSet } from '../Editor/SelectSet'; import { SelectSet } from '../Editor/SelectSet';
import { MoveMatrix, rotatePoint } from '../Geometry/GeUtils'; import { MoveMatrix, rotatePoint } from '../Geometry/GeUtils';
import { ArrayModal } from '../UI/Components/Modal/ArrayModal'; import { ArrayModal } from '../UI/Components/Modal/ArrayModal';
import { ModalState, ModalPosition } from '../UI/Components/Modal/ModalsManage'; import { ModalPosition, ModalState } from '../UI/Components/Modal/ModalsManage';
import { Polyline } from '../DatabaseServices/Polyline';
import { JigUtils } from '../Editor/JigUtils';
import { Vec3DTo2D } from '../Common/CurveUtils';
import { DataAdapter } from '../Common/DataAdapter';
import { Singleton } from '../Common/Singleton';
import { CheckObjectType, CheckoutValid } from '../Common/CheckoutVaildValue';
import { AppToaster } from '../UI/Components/Toaster'; import { AppToaster } from '../UI/Components/Toaster';
export enum ArrayType export enum ArrayType
@ -55,7 +55,7 @@ export interface ArrayOptioins
method: CirArrMethod; method: CirArrMethod;
isCorrect: boolean; isCorrect: boolean;
} }
export class ArrayStore export class ArrayStore extends Singleton
{ {
protected m_UiOption; protected m_UiOption;
@observable m_Option: ArrayOptioins = { @observable m_Option: ArrayOptioins = {
@ -106,7 +106,7 @@ export class ArrayStore
} }
export class Command_Array implements Command export class Command_Array implements Command
{ {
arrayStore = Singleton.GetInstance(ArrayStore); arrayStore = ArrayStore.GetInstance();
async exec() async exec()
{ {

@ -25,7 +25,7 @@ export class FeedingCommand implements Command
.filter((br: Board) => br.BoardModeling.length > 0) as Board[]; .filter((br: Board) => br.BoardModeling.length > 0) as Board[];
if (brs.length > 0) if (brs.length > 0)
{ {
let feedingTool = Singleton.GetInstance(FeedingToolPath); let feedingTool = FeedingToolPath.GetInstance();
let retCus = brs.map(br => feedingTool.CalcPath(br)); let retCus = brs.map(br => feedingTool.CalcPath(br));

@ -22,15 +22,15 @@ export abstract class DrawBoardTool implements Command
switch (this.drawType) switch (this.drawType)
{ {
case BoardType.Layer: case BoardType.Layer:
this.store = Singleton.GetInstance(LayerBoardStore); this.store = LayerBoardStore.GetInstance();
this.modalType = BoardModalType.Ly; this.modalType = BoardModalType.Ly;
break; break;
case BoardType.Vertical: case BoardType.Vertical:
this.store = Singleton.GetInstance(VerticalBoardStore); this.store = VerticalBoardStore.GetInstance();
this.modalType = BoardModalType.Ve; this.modalType = BoardModalType.Ve;
break; break;
case BoardType.Behind: case BoardType.Behind:
this.store = Singleton.GetInstance(BehindBoardStore); this.store = BehindBoardStore.GetInstance();
this.modalType = BoardModalType.Be; this.modalType = BoardModalType.Be;
} }
app.m_Editor.m_ModalManage.RenderModeless( app.m_Editor.m_ModalManage.RenderModeless(

@ -1,6 +1,5 @@
import { Matrix4, Vector3 } from 'three'; import { Matrix4, Vector3 } from 'three';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { Singleton } from '../../Common/Singleton';
import { Board, BoardType } from '../../DatabaseServices/Board'; import { Board, BoardType } from '../../DatabaseServices/Board';
import { Command } from '../../Editor/CommandMachine'; import { Command } from '../../Editor/CommandMachine';
import { PromptStatus } from '../../Editor/PromptResult'; import { PromptStatus } from '../../Editor/PromptResult';
@ -27,7 +26,7 @@ export class DrawClosingStrip implements Command
if (boards.length > 0) if (boards.length > 0)
{ {
this.store = Singleton.GetInstance(ClosingStripStore); this.store = ClosingStripStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModeless(BoardModal, ModalPosition.Center, { store: this.store, type: BoardModalType.Skt }); app.m_Editor.m_ModalManage.RenderModeless(BoardModal, ModalPosition.Center, { store: this.store, type: BoardModalType.Skt });
let state = await app.m_Editor.m_ModalManage.Wait(); let state = await app.m_Editor.m_ModalManage.Wait();

@ -1,15 +1,14 @@
import { Command } from "../../Editor/CommandMachine";
import { app } from "../../ApplicationServices/Application"; import { app } from "../../ApplicationServices/Application";
import { Command } from "../../Editor/CommandMachine";
import { DoorModal } from "../../UI/Components/Board/DoorModal"; import { DoorModal } from "../../UI/Components/Board/DoorModal";
import { DoorStore } from "../../UI/Store/BoardStore";
import { Singleton } from "../../Common/Singleton";
import { ModalPosition, ModalState } from "../../UI/Components/Modal/ModalsManage"; import { ModalPosition, ModalState } from "../../UI/Components/Modal/ModalsManage";
import { DoorStore } from "../../UI/Store/BoardStore";
export class DrawDoor implements Command export class DrawDoor implements Command
{ {
async exec() async exec()
{ {
let store = Singleton.GetInstance(DoorStore) let store = DoorStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModeless(DoorModal, ModalPosition.Center, { store }); app.m_Editor.m_ModalManage.RenderModeless(DoorModal, ModalPosition.Center, { store });
let state = await app.m_Editor.m_ModalManage.Wait(); let state = await app.m_Editor.m_ModalManage.Wait();

@ -15,7 +15,7 @@ export class DrawLeftRight implements Command
{ {
async exec() async exec()
{ {
let store = Singleton.GetInstance(SideBoardStore); let store = SideBoardStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModeless(BoardModal, ModalPosition.Center, { store, type: BoardModalType.LR }); app.m_Editor.m_ModalManage.RenderModeless(BoardModal, ModalPosition.Center, { store, type: BoardModalType.LR });

@ -1,6 +1,5 @@
import { Math } from 'three'; import { Math } from 'three';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { Singleton } from '../../Common/Singleton';
import { Board } from '../../DatabaseServices/Board'; import { Board } from '../../DatabaseServices/Board';
import { Command } from '../../Editor/CommandMachine'; import { Command } from '../../Editor/CommandMachine';
import { JigUtils } from '../../Editor/JigUtils'; import { JigUtils } from '../../Editor/JigUtils';
@ -14,7 +13,7 @@ export class DrawSingleBoard implements Command
{ {
async exec() async exec()
{ {
let store = Singleton.GetInstance(SingleBoardStore); let store = SingleBoardStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModeless(BoardModal, ModalPosition.Center, { store, type: BoardModalType.Sg }); app.m_Editor.m_ModalManage.RenderModeless(BoardModal, ModalPosition.Center, { store, type: BoardModalType.Sg });
app.m_Editor.m_ModalManage.Callback = async () => app.m_Editor.m_ModalManage.Callback = async () =>

@ -1,6 +1,5 @@
import { Matrix4, Vector3 } from "three"; import { Matrix4, Vector3 } from "three";
import { app } from "../../ApplicationServices/Application"; import { app } from "../../ApplicationServices/Application";
import { Singleton } from "../../Common/Singleton";
import { FixedNotZero } from "../../Common/Utils"; import { FixedNotZero } from "../../Common/Utils";
import { Arc } from "../../DatabaseServices/Arc"; import { Arc } from "../../DatabaseServices/Arc";
import { Board, BoardType } from "../../DatabaseServices/Board"; import { Board, BoardType } from "../../DatabaseServices/Board";
@ -32,7 +31,7 @@ export class DrawSpecialShapedBoard implements Command
if (shape) if (shape)
{ {
shape = shape.Clone(); shape = shape.Clone();
const store = Singleton.GetInstance(SpecialShapeStore); const store = SpecialShapeStore.GetInstance();
let cu = shape.Outline.Curve; let cu = shape.Outline.Curve;
let cuOcs = cu.OCS; let cuOcs = cu.OCS;

@ -1,7 +1,7 @@
import { Vector3 } from 'three'; import { Vector3 } from 'three';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { Singleton } from '../../Common/Singleton'; import { log } from '../../Common/Utils';
import { Board, BoardType } from '../../DatabaseServices/Board'; import { Board, BoardType } from '../../DatabaseServices/Board';
import { Command } from '../../Editor/CommandMachine'; import { Command } from '../../Editor/CommandMachine';
import { MoveMatrix } from '../../Geometry/GeUtils'; import { MoveMatrix } from '../../Geometry/GeUtils';
@ -11,7 +11,6 @@ import { BoardModal, BoardModalType } from '../../UI/Components/Board/BoardModal
import { ModalPosition, ModalState } from '../../UI/Components/Modal/ModalsManage'; import { ModalPosition, ModalState } from '../../UI/Components/Modal/ModalsManage';
import { BoardData, ComposingType, PXLFaceType, TBBoardOption } from '../../UI/Store/BoardInterface'; import { BoardData, ComposingType, PXLFaceType, TBBoardOption } from '../../UI/Store/BoardInterface';
import { TopBottomBoardStore } from '../../UI/Store/BoardStore'; import { TopBottomBoardStore } from '../../UI/Store/BoardStore';
import { log } from '../../Common/Utils';
export class DrawTopBottomBoard implements Command export class DrawTopBottomBoard implements Command
{ {
@ -26,7 +25,7 @@ export class DrawTopBottomBoard implements Command
return; return;
} }
this.store = Singleton.GetInstance(TopBottomBoardStore); this.store = TopBottomBoardStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModal(BoardModal, ModalPosition.Center, { store: this.store, type: BoardModalType.TB }); app.m_Editor.m_ModalManage.RenderModal(BoardModal, ModalPosition.Center, { store: this.store, type: BoardModalType.TB });
let state = await app.m_Editor.m_ModalManage.Wait(); let state = await app.m_Editor.m_ModalManage.Wait();

@ -3,7 +3,6 @@ import { Board } from "../../DatabaseServices/Board";
import { Command } from "../../Editor/CommandMachine"; import { Command } from "../../Editor/CommandMachine";
import { PromptStatus } from "../../Editor/PromptResult"; import { PromptStatus } from "../../Editor/PromptResult";
import { DrawDrillingTool } from "./DrawDrillingTool"; import { DrawDrillingTool } from "./DrawDrillingTool";
import { Singleton } from "../../Common/Singleton";
export class DrawDrilling implements Command export class DrawDrilling implements Command
@ -19,7 +18,7 @@ export class DrawDrilling implements Command
let brs = brsRes.SelectSet.SelectEntityList.filter(e => e instanceof Board) as Board[]; let brs = brsRes.SelectSet.SelectEntityList.filter(e => e instanceof Board) as Board[];
if (brs.length >= 2) if (brs.length >= 2)
{ {
Singleton.GetInstance(DrawDrillingTool).StartGangDrill(brs); DrawDrillingTool.GetInstance().StartGangDrill(brs);
} }
else else
{ {

@ -13,7 +13,7 @@ import { DrillingOption, SpacingType } from "../../UI/Components/Board/drillInte
import { PXLFaceType } from "../../UI/Store/BoardInterface"; import { PXLFaceType } from "../../UI/Store/BoardInterface";
import { DrillStore } from "../../UI/Store/DrillStore"; import { DrillStore } from "../../UI/Store/DrillStore";
export class DrawDrillingTool export class DrawDrillingTool extends Singleton
{ {
private m_MoveDistList: number[] = []; private m_MoveDistList: number[] = [];
private m_Face: Face; private m_Face: Face;
@ -22,7 +22,7 @@ export class DrawDrillingTool
private GetDrillingConfig() private GetDrillingConfig()
{ {
//TODO:完善用户配置类,暂用store得数据进行测试 //TODO:完善用户配置类,暂用store得数据进行测试
return Singleton.GetInstance(DrillStore).rules; return DrillStore.GetInstance().rules;
} }
private GetRuleByFace(f: Face): DrillingOption private GetRuleByFace(f: Face): DrillingOption
{ {

@ -1,15 +1,14 @@
import { Command } from '../../Editor/CommandMachine';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { Command } from '../../Editor/CommandMachine';
import { DrillModal } from '../../UI/Components/Board/GangDrillModal'; import { DrillModal } from '../../UI/Components/Board/GangDrillModal';
import { ModalPosition } from '../../UI/Components/Modal/ModalsManage'; import { ModalPosition } from '../../UI/Components/Modal/ModalsManage';
import { Singleton } from '../../Common/Singleton';
import { DrillStore } from '../../UI/Store/DrillStore'; import { DrillStore } from '../../UI/Store/DrillStore';
export class DrillConfig implements Command export class DrillConfig implements Command
{ {
async exec() async exec()
{ {
let store = Singleton.GetInstance(DrillStore); let store = DrillStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModal(DrillModal, ModalPosition.Center, { store }); app.m_Editor.m_ModalManage.RenderModal(DrillModal, ModalPosition.Center, { store });
} }
} }

@ -31,7 +31,7 @@ export class DrawText implements Command
}); });
if (hRes.Status !== PromptStatus.Cancel && hRes.Value !== undefined) if (hRes.Status !== PromptStatus.Cancel && hRes.Value !== undefined)
{ {
let text = Singleton.GetInstance(TextArea); let text = TextArea.GetInstance();
text.StartDrawText(startPoint, height, hRes.Value, ""); text.StartDrawText(startPoint, height, hRes.Value, "");
} }
} }

@ -17,7 +17,7 @@ export class Command_Insert implements Command
{ {
async exec() async exec()
{ {
let fileServer = Singleton.GetInstance(FileServer); let fileServer = FileServer.GetInstance();
let files = await fileServer.ReadFileList(); let files = await fileServer.ReadFileList();
let finfo: FileInfo; let finfo: FileInfo;

@ -23,7 +23,7 @@ export class Open implements Command
cadF.database = app.m_Database; cadF.database = app.m_Database;
cadF.Data = file; cadF.Data = file;
app.m_Database.FileRead(cadF); app.m_Database.FileRead(cadF);
Singleton.GetInstance(RightPanelStore).lightStore.InitScene(); RightPanelStore.GetInstance().lightStore.InitScene();
} }
} }
} }

@ -1,5 +1,4 @@
import { app } from '../ApplicationServices/Application'; import { app } from '../ApplicationServices/Application';
import { Singleton } from '../Common/Singleton';
import { formateDate } from '../Common/Utils'; import { formateDate } from '../Common/Utils';
import { FileInfo, FileServer } from '../DatabaseServices/FileServer'; import { FileInfo, FileServer } from '../DatabaseServices/FileServer';
import { Command } from '../Editor/CommandMachine'; import { Command } from '../Editor/CommandMachine';
@ -16,7 +15,7 @@ export class Save implements Command
app.m_Viewer.OnSize(); app.m_Viewer.OnSize();
app.m_Viewer.Render(); app.m_Viewer.Render();
let fileServer = Singleton.GetInstance(FileServer); let fileServer = FileServer.GetInstance();
let fileInfo: FileInfo; let fileInfo: FileInfo;
if (fileServer.m_CurFileId) if (fileServer.m_CurFileId)

@ -1,5 +1,4 @@
import { app } from "../ApplicationServices/Application"; import { app } from "../ApplicationServices/Application";
import { Singleton } from "../Common/Singleton";
import { formateDate } from "../Common/Utils"; import { formateDate } from "../Common/Utils";
import { Database } from "../DatabaseServices/Database"; import { Database } from "../DatabaseServices/Database";
import { Entity } from "../DatabaseServices/Entity"; import { Entity } from "../DatabaseServices/Entity";
@ -26,7 +25,7 @@ export class Command_Wblock implements Command
for (let en of cloneEns) for (let en of cloneEns)
en.ApplyMatrix(moveM); en.ApplyMatrix(moveM);
let fileServer = Singleton.GetInstance(FileServer); let fileServer = FileServer.GetInstance();
let fileInfo = await fileServer.CreateFile(); let fileInfo = await fileServer.CreateFile();
//更新最后修改时间 //更新最后修改时间

@ -2,47 +2,20 @@
/** /**
* . * .
* # Example: * # Example:
* class A(){}; * class A extends Singleton(){};
*
* //获得单例 * //获得单例
* let a = Singleton.GetInstance(A); * let a = A.GetInstance();
* //销毁单例对象
* Singleton.DestroyInstance(A);
* @class Singleton * @class Singleton
*/ */
export class Singleton export class Singleton
{ {
static singletonMap = new Map(); protected constructor() { }
private static __instance__ = undefined;
/** static GetInstance()
* ,GC,.
*
* @static
* @template T
* @param {{ new(): T; }} Class
* @returns {T}
* @memberof Singleton
*/
static GetInstance<T>(Class: { new(): T; }): T
{
let instance = this.singletonMap.get(Class);
if (!instance)
{
instance = new Class();
this.singletonMap.set(Class, instance);
}
return instance;
}
/**
* ,,GC
* @static
* @template T
* @param {{ new(): T; }} Class
* @memberof Singleton
*/
static DestroyInstance<T>(Class: { new(): T; })
{ {
this.singletonMap.delete(Class); if (this.__instance__) return this.__instance__;
//@ts-ignore
this.__instance__ = new this.prototype.constructor();
return this.__instance__;
} }
} }

@ -1,6 +1,7 @@
import { ICommand } from "../UI/Components/CommandPanel/CommandList";
import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore";
import { toJS } from "mobx"; import { toJS } from "mobx";
import { Singleton } from "../Common/Singleton";
import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore";
import { ICommand } from "../UI/Components/CommandPanel/CommandList";
export interface CommandData export interface CommandData
{ {
@ -10,11 +11,8 @@ export interface CommandData
* File server * File server
* CAD,CRUD * CAD,CRUD
*/ */
export class CommandServer export class CommandServer extends Singleton
{ {
constructor()
{
}
async UpdateCommandInfo(icommand: ICommand) async UpdateCommandInfo(icommand: ICommand)
{ {
let store = await IndexedDbStore.CADStore(); let store = await IndexedDbStore.CADStore();

@ -1,5 +1,6 @@
import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore"; import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore";
import { formateDate } from "../Common/Utils"; import { formateDate } from "../Common/Utils";
import { Singleton } from "../Common/Singleton";
/** /**
* Store.Data FileInfo * Store.Data FileInfo
@ -28,10 +29,11 @@ export interface FileInfo
* File server * File server
* CAD,CRUD * CAD,CRUD
*/ */
export class FileServer export class FileServer extends Singleton
{ {
constructor() constructor()
{ {
super();
this.GetLastOpenId(); this.GetLastOpenId();
} }

@ -1,14 +1,15 @@
import { Object3D, Vector3 } from 'three'; import { Object3D, Vector3 } from 'three';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { KeyBoard } from '../../Common/KeyEnum'; import { KeyBoard } from '../../Common/KeyEnum';
import { Singleton } from '../../Common/Singleton';
import { GetEntity } from '../../Common/Utils'; import { GetEntity } from '../../Common/Utils';
import { commandMachine } from '../../Editor/CommandMachine';
import { DownPanelStore } from '../../UI/Store/DownPanelStore'; import { DownPanelStore } from '../../UI/Store/DownPanelStore';
import { FontLoader } from './FontLoader'; import { FontLoader } from './FontLoader';
import { Text } from './Text'; import { Text } from './Text';
import { commandMachine } from '../../Editor/CommandMachine';
//这是一个单例类. //这是一个单例类.
export class TextArea export class TextArea extends Singleton
{ {
private m_AreaContiner: HTMLElement;//编辑框容器 private m_AreaContiner: HTMLElement;//编辑框容器
private m_EditorElList: Map<HTMLDivElement, Vector3> = new Map(); private m_EditorElList: Map<HTMLDivElement, Vector3> = new Map();
@ -20,6 +21,7 @@ export class TextArea
private m_EditoringObject: Object3D; //正在编辑的对象 private m_EditoringObject: Object3D; //正在编辑的对象
constructor() constructor()
{ {
super();
this.m_AreaContiner = document.createElement("div"); this.m_AreaContiner = document.createElement("div");
this.m_AreaContiner.tabIndex = -1; this.m_AreaContiner.tabIndex = -1;
this.m_AreaContiner.style.cssText = ` this.m_AreaContiner.style.cssText = `

@ -269,7 +269,7 @@ export function registerCommand()
export async function RegistCustomCommand() export async function RegistCustomCommand()
{ {
let commandList: ICommand[] = []; let commandList: ICommand[] = [];
let cserver = Singleton.GetInstance(CommandServer); let cserver = CommandServer.GetInstance();
commandList = await cserver.ReadCommandlist(); commandList = await cserver.ReadCommandlist();
for (let i of commandList) for (let i of commandList)
commandMachine.RegisterCustomCommand(i.common, i.customize); commandMachine.RegisterCustomCommand(i.common, i.customize);

@ -2,6 +2,8 @@ import { app } from "../../ApplicationServices/Application";
import { arraySortByNumber } from "../../Common/ArrayExt"; import { arraySortByNumber } from "../../Common/ArrayExt";
import { curveLinkGroup, Vec3DTo2D } from "../../Common/CurveUtils"; import { curveLinkGroup, Vec3DTo2D } from "../../Common/CurveUtils";
import { KeyWord } from "../../Common/InputState"; import { KeyWord } from "../../Common/InputState";
import { Singleton } from "../../Common/Singleton";
import { log } from "../../Common/Utils";
import { Curve } from "../../DatabaseServices/Curve"; import { Curve } from "../../DatabaseServices/Curve";
import { Point } from "../../DatabaseServices/Point"; import { Point } from "../../DatabaseServices/Point";
import { Polyline, PolylineProps } from "../../DatabaseServices/Polyline"; import { Polyline, PolylineProps } from "../../DatabaseServices/Polyline";
@ -9,14 +11,13 @@ import { Spline } from "../../DatabaseServices/Spline";
import { equaln, equalv3 } from "../../Geometry/GeUtils"; import { equaln, equalv3 } from "../../Geometry/GeUtils";
import { JigUtils } from "../JigUtils"; import { JigUtils } from "../JigUtils";
import { PromptStatus } from "../PromptResult"; import { PromptStatus } from "../PromptResult";
import { log } from "../../Common/Utils";
interface IVertex interface IVertex
{ {
index: number; index: number;
point: Point; point: Point;
} }
export class DBClickPolyline export class DBClickPolyline extends Singleton
{ {
private entity: Curve; private entity: Curve;
HandlePolyline = async (pl: Polyline) => HandlePolyline = async (pl: Polyline) =>

@ -19,7 +19,7 @@ import { commandMachine } from "../CommandMachine";
import { PointPick } from "../PointPick"; import { PointPick } from "../PointPick";
import { DBClickPolyline } from "./DBClickPolyline"; import { DBClickPolyline } from "./DBClickPolyline";
export class DbClickManager export class DbClickManager extends Singleton
{ {
OnDbClick = async () => OnDbClick = async () =>
{ {
@ -28,7 +28,7 @@ export class DbClickManager
if (!pickEnt) if (!pickEnt)
return; return;
let enStore = Singleton.GetInstance(EntityStore); let enStore = EntityStore.GetInstance();
//如果打开曲线特性框,后续的双击的图元加入属性框进行设置 //如果打开曲线特性框,后续的双击的图元加入属性框进行设置
if (enStore.isWorking) if (enStore.isWorking)
@ -42,7 +42,7 @@ export class DbClickManager
if (pickEnt instanceof Light) if (pickEnt instanceof Light)
{ {
let rightStore = Singleton.GetInstance(RightPanelStore); let rightStore = RightPanelStore.GetInstance();
rightStore.m_IsShow = true; rightStore.m_IsShow = true;
rightStore.m_TabId = "scene"; rightStore.m_TabId = "scene";
@ -91,7 +91,7 @@ export class DbClickManager
} }
else if (pickEnt instanceof Text) else if (pickEnt instanceof Text)
{ {
let textarea = Singleton.GetInstance(TextArea); let textarea = TextArea.GetInstance();
textarea.StartEditorText(pickObj); textarea.StartEditorText(pickObj);
} }
else if (pickEnt instanceof Board) else if (pickEnt instanceof Board)
@ -106,7 +106,7 @@ export class DbClickManager
else if (pickEnt instanceof Polyline) else if (pickEnt instanceof Polyline)
{ {
commandMachine.CommandStart("_pedit"); commandMachine.CommandStart("_pedit");
await Singleton.GetInstance(DBClickPolyline).HandlePolyline(pickEnt); await DBClickPolyline.GetInstance().HandlePolyline(pickEnt);
commandMachine.CommandEnd(); commandMachine.CommandEnd();
} }
else else

@ -117,7 +117,7 @@ export class MouseControls
onDBClick(e: MouseEvent) onDBClick(e: MouseEvent)
{ {
if (app.m_Editor.m_InputState === InputState.None) if (app.m_Editor.m_InputState === InputState.None)
Singleton.GetInstance(DbClickManager).OnDbClick() DbClickManager.GetInstance().OnDbClick()
} }
updateWordPoint = (e: MouseEvent) => updateWordPoint = (e: MouseEvent) =>
{ {

@ -1,3 +1,4 @@
import { Singleton } from "../../Common/Singleton";
import { Board } from "../../DatabaseServices/Board"; import { Board } from "../../DatabaseServices/Board";
import { Circle } from "../../DatabaseServices/Circle"; import { Circle } from "../../DatabaseServices/Circle";
import { Contour } from "../../DatabaseServices/Contour"; import { Contour } from "../../DatabaseServices/Contour";
@ -11,7 +12,7 @@ import { OptimizeToolPath } from "./OptimizeToolPath";
/** /**
* *
*/ */
export class FeedingToolPath export class FeedingToolPath extends Singleton
{ {
/** /**
*, *,

@ -74,7 +74,7 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
let cus = selectBox.SelectEntityList.filter((cu: Polyline | Circle) => cu.IsClose) as Curve[]; let cus = selectBox.SelectEntityList.filter((cu: Polyline | Circle) => cu.IsClose) as Curve[];
const rightStore = Singleton.GetInstance(RightPanelStore); const rightStore = RightPanelStore.GetInstance();
//曲线按颜色分类 //曲线按颜色分类
let cuMap: Map<number, Contour[]> = new Map(); let cuMap: Map<number, Contour[]> = new Map();
@ -158,7 +158,7 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
let cu = JigUtils.Draw(br.Shape.Outline.Curve.Clone().ApplyMatrix(br.OCS)); let cu = JigUtils.Draw(br.Shape.Outline.Curve.Clone().ApplyMatrix(br.OCS));
let moveCus = [cu]; let moveCus = [cu];
let store = Singleton.GetInstance(RightPanelStore); let store = RightPanelStore.GetInstance();
//初始化造型数据,提取出形状 //初始化造型数据,提取出形状
store.InitModelingItems(); store.InitModelingItems();

@ -101,7 +101,7 @@ export class CommandItem extends React.Component<CommandItemProps, {}>{
} }
handleOnBlur = (e: React.FocusEvent<HTMLInputElement>) => handleOnBlur = (e: React.FocusEvent<HTMLInputElement>) =>
{ {
let cserver = Singleton.GetInstance(CommandServer); let cserver = CommandServer.GetInstance();
if (this.flag === TipType.InputNull || this.flag === TipType.IsExist || this.flag === TipType.StrIllegal) if (this.flag === TipType.InputNull || this.flag === TipType.IsExist || this.flag === TipType.StrIllegal)
this.props.commandData.customize = this.props.commandData.customizeed; this.props.commandData.customize = this.props.commandData.customizeed;
else//ok else//ok

@ -1,13 +1,12 @@
import * as React from 'react'; import { Classes, Tab, Tabs } from '@blueprintjs/core';
import { Tabs, Tab, Classes } from '@blueprintjs/core';
import { observable } from 'mobx'; import { observable } from 'mobx';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import { ICommand, CommandList } from './CommandList'; import * as React from 'react';
import { CommandItem } from './CommandItem';
import { Singleton } from '../../../Common/Singleton';
import { CommandServer } from '../../../DatabaseServices/CommandServer';
import { app } from '../../../ApplicationServices/Application';
import { end } from 'xaop'; import { end } from 'xaop';
import { app } from '../../../ApplicationServices/Application';
import { CommandServer } from '../../../DatabaseServices/CommandServer';
import { CommandItem } from './CommandItem';
import { CommandList, ICommand } from './CommandList';
interface CommandPanelState interface CommandPanelState
{ {
@ -44,7 +43,7 @@ export class CommandPanel extends React.Component<{}, CommandPanelState>
//获取最后一次滚动条位置 //获取最后一次滚动条位置
GetLastScrollTop() GetLastScrollTop()
{ {
let cserver = Singleton.GetInstance(CommandServer); let cserver = CommandServer.GetInstance();
if (cserver.m_LastScrollTop) if (cserver.m_LastScrollTop)
this.scrollCard.scrollTop = cserver.m_LastScrollTop; this.scrollCard.scrollTop = cserver.m_LastScrollTop;
} }
@ -66,7 +65,7 @@ export class CommandPanel extends React.Component<{}, CommandPanelState>
} }
async initCommandData() async initCommandData()
{ {
let cServer = Singleton.GetInstance(CommandServer); let cServer = CommandServer.GetInstance();
for (let c of this.searchRes) for (let c of this.searchRes)
{ {
let res = await cServer.FindCommand(c.common) let res = await cServer.FindCommand(c.common)
@ -80,7 +79,7 @@ export class CommandPanel extends React.Component<{}, CommandPanelState>
} }
handleTabsClick = async () => handleTabsClick = async () =>
{ {
let cserver = Singleton.GetInstance(CommandServer); let cserver = CommandServer.GetInstance();
let elc = this.ulRef.querySelector(`#${this.id}`) as HTMLElement; let elc = this.ulRef.querySelector(`#${this.id}`) as HTMLElement;
if (elc) if (elc)
this.scrollCard.scrollTop = elc.offsetTop - elc.offsetHeight * 2 - 55; this.scrollCard.scrollTop = elc.offsetTop - elc.offsetHeight * 2 - 55;
@ -166,8 +165,8 @@ export class CommandPanel extends React.Component<{}, CommandPanelState>
className="bp3-card bp3-elevation-0" className="bp3-card bp3-elevation-0"
onScroll={async () => onScroll={async () =>
{ {
let cserver = Singleton.GetInstance(CommandServer); let cserver = CommandServer.GetInstance();
let index = Math.floor(this.scrollCard.scrollTop / 57); let index = Math.floor(this.scrollCard.scrollTop / 57);
if (index < this.searchRes.length) if (index < this.searchRes.length)
this.id = this.searchRes[index].typeId; this.id = this.searchRes[index].typeId;
else else

@ -1,13 +1,12 @@
import { Button, Position, Tooltip, Intent, Popover, Classes } from "@blueprintjs/core"; import { Button, Classes, Intent, Popover, Position, Tooltip } from "@blueprintjs/core";
import { observable, toJS } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { KeyBoard } from "../../../Common/KeyEnum";
import { FileInfo, FileServer } from '../../../DatabaseServices/FileServer'; import { FileInfo, FileServer } from '../../../DatabaseServices/FileServer';
import { observer } from 'mobx-react'; import '../../Css/style.less';
import { Singleton } from '../../../Common/Singleton'; import '../../Css/switchTheme.less';
import { toJS, observable } from 'mobx';
import '../../Css/style.less'
import '../../Css/switchTheme.less'
import { appUi } from "../../Layout/ApplicationLayout"; import { appUi } from "../../Layout/ApplicationLayout";
import { KeyBoard } from "../../../Common/KeyEnum";
import { TopPanelStore } from '../../Store/TopPanelStore'; import { TopPanelStore } from '../../Store/TopPanelStore';
enum TipType enum TipType
@ -58,7 +57,7 @@ export class FileItem extends React.Component<FileItemProps, FileItemState>{
render() render()
{ {
const filelist = Singleton.GetInstance(TopPanelStore).m_FileList; const filelist = TopPanelStore.GetInstance().m_FileList;
const fileInfo = this.props.fileInfo; const fileInfo = this.props.fileInfo;
const imgStyle: React.CSSProperties = {}; const imgStyle: React.CSSProperties = {};
const popStyle: React.CSSProperties = { const popStyle: React.CSSProperties = {
@ -156,7 +155,7 @@ export class FileItem extends React.Component<FileItemProps, FileItemState>{
//如果标题被更新,那么更新数据库 //如果标题被更新,那么更新数据库
if (this.flag !== TipType.InputNull && newName !== this.props.fileInfo.title) if (this.flag !== TipType.InputNull && newName !== this.props.fileInfo.title)
{ {
let fserver = Singleton.GetInstance(FileServer); let fserver = FileServer.GetInstance();
this.props.fileInfo.title = newName; this.props.fileInfo.title = newName;
fserver.UpdateFileInfo(toJS(this.props.fileInfo)); fserver.UpdateFileInfo(toJS(this.props.fileInfo));
if (fserver.m_CurFileId == this.props.fileInfo.fileId) if (fserver.m_CurFileId == this.props.fileInfo.fileId)

@ -29,12 +29,12 @@ export class FilePanel extends React.Component<{ store?: TopPanelStore }, {}>
//添加新文件 //添加新文件
handleAddNewFile = async () => handleAddNewFile = async () =>
{ {
let server = Singleton.GetInstance(FileServer); let server = FileServer.GetInstance();
if (server.m_CurFileId) if (server.m_CurFileId)
{ {
server.m_CurFileId = undefined; server.m_CurFileId = undefined;
app.CreateDocument(); app.CreateDocument();
Singleton.GetInstance(RightPanelStore).lightStore.InitScene(); RightPanelStore.GetInstance().lightStore.InitScene();
} }
this.props.store.m_FileManageOpen = false; this.props.store.m_FileManageOpen = false;
} }
@ -47,7 +47,7 @@ export class FilePanel extends React.Component<{ store?: TopPanelStore }, {}>
let f = files[0]; let f = files[0];
let fileData = await FileSystem.readFileAsText(f); let fileData = await FileSystem.readFileAsText(f);
let fserver = Singleton.GetInstance(FileServer); let fserver = FileServer.GetInstance();
let fileInfo = await fserver.CreateFile(); let fileInfo = await fserver.CreateFile();
fserver.UpdateFile(fileInfo.fileId, JSON.parse(fileData)); fserver.UpdateFile(fileInfo.fileId, JSON.parse(fileData));
@ -57,7 +57,7 @@ export class FilePanel extends React.Component<{ store?: TopPanelStore }, {}>
handleFile = async (fid: string, fname: string, type: string) => handleFile = async (fid: string, fname: string, type: string) =>
{ {
let fserver = Singleton.GetInstance(FileServer); let fserver = FileServer.GetInstance();
switch (type) switch (type)
{ {
case "delete": case "delete":
@ -77,7 +77,7 @@ export class FilePanel extends React.Component<{ store?: TopPanelStore }, {}>
let fileInfo = await fserver.ReadFileInfo(fid); let fileInfo = await fserver.ReadFileInfo(fid);
appUi.setDocumentName(fileInfo.title); appUi.setDocumentName(fileInfo.title);
Singleton.GetInstance(RightPanelStore).lightStore.InitScene(); RightPanelStore.GetInstance().lightStore.InitScene();
} }
this.props.store.m_FileManageOpen = false; this.props.store.m_FileManageOpen = false;
break; break;
@ -95,7 +95,7 @@ export class FilePanel extends React.Component<{ store?: TopPanelStore }, {}>
//将滚动条滚动到上次打开的文件的位置 //将滚动条滚动到上次打开的文件的位置
scrollToLastFile() scrollToLastFile()
{ {
let fserver = Singleton.GetInstance(FileServer); let fserver = FileServer.GetInstance();
if (fserver.m_LastFileId) if (fserver.m_LastFileId)
{ {
let el = this.filesRef.current; let el = this.filesRef.current;

@ -146,7 +146,7 @@ export class WebCAD
{ {
let topPanelEl = document.getElementById("TopPanel"); let topPanelEl = document.getElementById("TopPanel");
ReactDOM.render( ReactDOM.render(
<Provider store={Singleton.GetInstance(TopPanelStore)}> <Provider store={TopPanelStore.GetInstance()}>
<TopPanel /> <TopPanel />
</Provider>, </Provider>,
topPanelEl topPanelEl
@ -179,7 +179,7 @@ export class WebCAD
document.getElementById("Webgl").parentElement.appendChild(right); document.getElementById("Webgl").parentElement.appendChild(right);
ReactDOM.render( ReactDOM.render(
<Provider store={Singleton.GetInstance(RightPanelStore)}> <Provider store={RightPanelStore.GetInstance()}>
<RightPanel /> <RightPanel />
</Provider>, </Provider>,
right right

@ -3,12 +3,13 @@ import { observable, toJS } from 'mobx';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { CheckObjectType, CheckoutValid } from '../../Common/CheckoutVaildValue'; import { CheckObjectType, CheckoutValid } from '../../Common/CheckoutVaildValue';
import { DataAdapter } from '../../Common/DataAdapter'; import { DataAdapter } from '../../Common/DataAdapter';
import { BoardType, Board } from '../../DatabaseServices/Board'; import { Singleton } from '../../Common/Singleton';
import { Board, BoardType } from '../../DatabaseServices/Board';
import { IConfigOption } from '../Components/Board/UserConfig'; import { IConfigOption } from '../Components/Board/UserConfig';
import { ModalState } from '../Components/Modal/ModalsManage'; import { ModalState } from '../Components/Modal/ModalsManage';
import { BehindBoardOption, BehindHeightPositon, BoardConfigOption, BoardOption, BoardProcessOption, BrRelativePos, ClosingStripOption, ComposingType, DrillType, LayerBoardOption, LayerNailOption, LinesType, PXLFaceType, SideBoardOption, SingleBoardOption, StripType, TBBoardOption, VerticalBoardOption } from './BoardInterface'; import { BehindBoardOption, BehindHeightPositon, BoardConfigOption, BoardOption, BoardProcessOption, BrRelativePos, ClosingStripOption, ComposingType, DrillType, LayerBoardOption, LayerNailOption, LinesType, PXLFaceType, SideBoardOption, SingleBoardOption, StripType, TBBoardOption, VerticalBoardOption } from './BoardInterface';
export class BoardStore export class BoardStore extends Singleton
{ {
m_Option: BoardOption; m_Option: BoardOption;
protected m_UiOption; protected m_UiOption;

@ -1,12 +1,13 @@
import { Entity } from "../../DatabaseServices/Entity";
import { observable } from "mobx"; import { observable } from "mobx";
import { Singleton } from "../../Common/Singleton";
import { Arc } from "../../DatabaseServices/Arc";
import { Circle } from "../../DatabaseServices/Circle";
import { Entity } from "../../DatabaseServices/Entity";
import { Line } from "../../DatabaseServices/Line"; import { Line } from "../../DatabaseServices/Line";
import { Polyline } from "../../DatabaseServices/Polyline"; import { Polyline } from "../../DatabaseServices/Polyline";
import { Region } from "../../DatabaseServices/Region"; import { Region } from "../../DatabaseServices/Region";
import { Circle } from "../../DatabaseServices/Circle";
import { Arc } from "../../DatabaseServices/Arc";
export class EntityStore export class EntityStore extends Singleton
{ {
isWorking = false; isWorking = false;
@observable currentEnType = "all"; @observable currentEnType = "all";

@ -1,11 +1,12 @@
import { observable, toJS } from "mobx"; import { observable, toJS } from "mobx";
import { Singleton } from "../../Common/Singleton";
import { IModeling } from "../../DatabaseServices/Board"; import { IModeling } from "../../DatabaseServices/Board";
import { IConfigOption } from "../Components/Board/UserConfig"; import { IConfigOption } from "../Components/Board/UserConfig";
import { IModelingItem } from "../Components/RightPanel/ModelingComponent"; import { IModelingItem } from "../Components/RightPanel/ModelingComponent";
import { PXLFaceType } from "./BoardInterface"; import { PXLFaceType } from "./BoardInterface";
import { LightStore } from "./LightStore"; import { LightStore } from "./LightStore";
export class RightPanelStore export class RightPanelStore extends Singleton
{ {
@observable m_TabId: string = "modeling"; @observable m_TabId: string = "modeling";
@observable m_IsShow = false; @observable m_IsShow = false;
@ -14,6 +15,7 @@ export class RightPanelStore
lightStore = new LightStore(); lightStore = new LightStore();
constructor() constructor()
{ {
super();
this.InitModelingItems(); this.InitModelingItems();
} }
InitModelingItems() InitModelingItems()

@ -4,7 +4,7 @@ import { arrayRemoveIf } from "../../Common/ArrayExt";
import { Singleton } from "../../Common/Singleton"; import { Singleton } from "../../Common/Singleton";
import { FileInfo, FileServer } from "../../DatabaseServices/FileServer"; import { FileInfo, FileServer } from "../../DatabaseServices/FileServer";
export class TopPanelStore export class TopPanelStore extends Singleton
{ {
@observable m_FileManageOpen: boolean = false; @observable m_FileManageOpen: boolean = false;
@ -13,7 +13,7 @@ export class TopPanelStore
async UpdateFileList() async UpdateFileList()
{ {
if (this.m_FileList.length > 0) return; if (this.m_FileList.length > 0) return;
let fileServer = Singleton.GetInstance(FileServer); let fileServer = FileServer.GetInstance();
this.m_FileList.push(...await fileServer.ReadFileList()); this.m_FileList.push(...await fileServer.ReadFileList());
end(fileServer, fileServer.CreateFileEvent, (f: FileInfo) => end(fileServer, fileServer.CreateFileEvent, (f: FileInfo) =>
{ {

Loading…
Cancel
Save