重构单例实现

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("曲线长度");
}
}
let feedUtil = new FeedingToolPath();
let feedUtil = FeedingToolPath.GetInstance();
test("通孔造型测试", () =>
{

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

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

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

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

@ -1,6 +1,5 @@
import { Matrix4, Vector3 } from 'three';
import { app } from '../../ApplicationServices/Application';
import { Singleton } from '../../Common/Singleton';
import { Board, BoardType } from '../../DatabaseServices/Board';
import { Command } from '../../Editor/CommandMachine';
import { PromptStatus } from '../../Editor/PromptResult';
@ -27,7 +26,7 @@ export class DrawClosingStrip implements Command
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 });
let state = await app.m_Editor.m_ModalManage.Wait();

@ -1,15 +1,14 @@
import { Command } from "../../Editor/CommandMachine";
import { app } from "../../ApplicationServices/Application";
import { Command } from "../../Editor/CommandMachine";
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 { DoorStore } from "../../UI/Store/BoardStore";
export class DrawDoor implements Command
{
async exec()
{
let store = Singleton.GetInstance(DoorStore)
let store = DoorStore.GetInstance();
app.m_Editor.m_ModalManage.RenderModeless(DoorModal, ModalPosition.Center, { store });
let state = await app.m_Editor.m_ModalManage.Wait();

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

@ -1,6 +1,5 @@
import { Math } from 'three';
import { app } from '../../ApplicationServices/Application';
import { Singleton } from '../../Common/Singleton';
import { Board } from '../../DatabaseServices/Board';
import { Command } from '../../Editor/CommandMachine';
import { JigUtils } from '../../Editor/JigUtils';
@ -14,7 +13,7 @@ export class DrawSingleBoard implements Command
{
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.Callback = async () =>

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

@ -1,7 +1,7 @@
import { Vector3 } from 'three';
import { app } from '../../ApplicationServices/Application';
import { Singleton } from '../../Common/Singleton';
import { log } from '../../Common/Utils';
import { Board, BoardType } from '../../DatabaseServices/Board';
import { Command } from '../../Editor/CommandMachine';
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 { BoardData, ComposingType, PXLFaceType, TBBoardOption } from '../../UI/Store/BoardInterface';
import { TopBottomBoardStore } from '../../UI/Store/BoardStore';
import { log } from '../../Common/Utils';
export class DrawTopBottomBoard implements Command
{
@ -26,7 +25,7 @@ export class DrawTopBottomBoard implements Command
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 });
let state = await app.m_Editor.m_ModalManage.Wait();

@ -3,7 +3,6 @@ import { Board } from "../../DatabaseServices/Board";
import { Command } from "../../Editor/CommandMachine";
import { PromptStatus } from "../../Editor/PromptResult";
import { DrawDrillingTool } from "./DrawDrillingTool";
import { Singleton } from "../../Common/Singleton";
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[];
if (brs.length >= 2)
{
Singleton.GetInstance(DrawDrillingTool).StartGangDrill(brs);
DrawDrillingTool.GetInstance().StartGangDrill(brs);
}
else
{

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

@ -1,15 +1,14 @@
import { Command } from '../../Editor/CommandMachine';
import { app } from '../../ApplicationServices/Application';
import { Command } from '../../Editor/CommandMachine';
import { DrillModal } from '../../UI/Components/Board/GangDrillModal';
import { ModalPosition } from '../../UI/Components/Modal/ModalsManage';
import { Singleton } from '../../Common/Singleton';
import { DrillStore } from '../../UI/Store/DrillStore';
export class DrillConfig implements Command
{
async exec()
{
let store = Singleton.GetInstance(DrillStore);
let store = DrillStore.GetInstance();
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)
{
let text = Singleton.GetInstance(TextArea);
let text = TextArea.GetInstance();
text.StartDrawText(startPoint, height, hRes.Value, "");
}
}

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

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

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

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

@ -2,47 +2,20 @@
/**
* .
* # Example:
* class A(){};
*
* class A extends Singleton(){};
* //获得单例
* let a = Singleton.GetInstance(A);
* //销毁单例对象
* Singleton.DestroyInstance(A);
* let a = A.GetInstance();
* @class Singleton
*/
export class Singleton
{
static singletonMap = new Map();
/**
* ,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; })
protected constructor() { }
private static __instance__ = undefined;
static GetInstance()
{
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 { Singleton } from "../Common/Singleton";
import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore";
import { ICommand } from "../UI/Components/CommandPanel/CommandList";
export interface CommandData
{
@ -10,11 +11,8 @@ export interface CommandData
* File server
* CAD,CRUD
*/
export class CommandServer
{
constructor()
export class CommandServer extends Singleton
{
}
async UpdateCommandInfo(icommand: ICommand)
{
let store = await IndexedDbStore.CADStore();

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

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

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

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

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

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

@ -1,3 +1,4 @@
import { Singleton } from "../../Common/Singleton";
import { Board } from "../../DatabaseServices/Board";
import { Circle } from "../../DatabaseServices/Circle";
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[];
const rightStore = Singleton.GetInstance(RightPanelStore);
const rightStore = RightPanelStore.GetInstance();
//曲线按颜色分类
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 moveCus = [cu];
let store = Singleton.GetInstance(RightPanelStore);
let store = RightPanelStore.GetInstance();
//初始化造型数据,提取出形状
store.InitModelingItems();

@ -101,7 +101,7 @@ export class CommandItem extends React.Component<CommandItemProps, {}>{
}
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)
this.props.commandData.customize = this.props.commandData.customizeed;
else//ok

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

@ -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 { KeyBoard } from "../../../Common/KeyEnum";
import { FileInfo, FileServer } from '../../../DatabaseServices/FileServer';
import { observer } from 'mobx-react';
import { Singleton } from '../../../Common/Singleton';
import { toJS, observable } from 'mobx';
import '../../Css/style.less'
import '../../Css/switchTheme.less'
import '../../Css/style.less';
import '../../Css/switchTheme.less';
import { appUi } from "../../Layout/ApplicationLayout";
import { KeyBoard } from "../../../Common/KeyEnum";
import { TopPanelStore } from '../../Store/TopPanelStore';
enum TipType
@ -58,7 +57,7 @@ export class FileItem extends React.Component<FileItemProps, FileItemState>{
render()
{
const filelist = Singleton.GetInstance(TopPanelStore).m_FileList;
const filelist = TopPanelStore.GetInstance().m_FileList;
const fileInfo = this.props.fileInfo;
const imgStyle: 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)
{
let fserver = Singleton.GetInstance(FileServer);
let fserver = FileServer.GetInstance();
this.props.fileInfo.title = newName;
fserver.UpdateFileInfo(toJS(this.props.fileInfo));
if (fserver.m_CurFileId == this.props.fileInfo.fileId)

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

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

@ -3,12 +3,13 @@ import { observable, toJS } from 'mobx';
import { app } from '../../ApplicationServices/Application';
import { CheckObjectType, CheckoutValid } from '../../Common/CheckoutVaildValue';
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 { 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';
export class BoardStore
export class BoardStore extends Singleton
{
m_Option: BoardOption;
protected m_UiOption;

@ -1,12 +1,13 @@
import { Entity } from "../../DatabaseServices/Entity";
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 { Polyline } from "../../DatabaseServices/Polyline";
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;
@observable currentEnType = "all";

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

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

Loading…
Cancel
Save