!459 模板智能识别房名柜名 fix #I10I8C

pull/459/MERGE
ZoeLeeFZ 5 years ago committed by ChenX
parent fd1db57d85
commit f8add5532c

@ -2,11 +2,13 @@ import { Command } from "../../Editor/CommandMachine";
import { app } from "../../ApplicationServices/Application"; import { app } from "../../ApplicationServices/Application";
import { ModalPosition } from "../../UI/Components/Modal/ModalsManage"; import { ModalPosition } from "../../UI/Components/Modal/ModalsManage";
import { TemplateManage } from "../../UI/Components/Template/TemplateComponent"; import { TemplateManage } from "../../UI/Components/Template/TemplateComponent";
import { TempalteEditorStore } from "../../UI/Store/TemplateEditorStore";
export class ShowTemplate implements Command export class ShowTemplate implements Command
{ {
async exec() async exec()
{ {
app.Editor.ModalManage.RenderModeless(TemplateManage, ModalPosition.Center, {}); let store = TempalteEditorStore.GetInstance() as TempalteEditorStore;
app.Editor.ModalManage.RenderModeless(TemplateManage, ModalPosition.Center, { store });
} }
} }

@ -1,18 +1,27 @@
import * as React from 'react'; import * as React from 'react';
import { Label, Classes, Button, Intent } from '@blueprintjs/core'; import { Label, Classes, Button, Intent, Checkbox } from '@blueprintjs/core';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { Board } from '../../../DatabaseServices/Entity/Board'; import { Board } from '../../../DatabaseServices/Entity/Board';
import { PromptStatus } from '../../../Editor/PromptResult'; import { PromptStatus } from '../../../Editor/PromptResult';
import { EBoardKeyList } from '../../../Common/BoardKeyList'; import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
export interface IGetRoomCabNameProps export interface IGetRoomInfo
{ {
option: { roomName: string, cabName: string } roomName: string;
cabName: string;
isAuto?: boolean;
withName?: boolean;
}
interface IGetRoomCabNameProps
{
option: IGetRoomInfo;
needBoardName?: boolean;
isAuto?: boolean;
} }
@observer @observer
export default class GetRoomCabName extends React.Component<IGetRoomCabNameProps> { export class GetRoomCabName extends React.Component<IGetRoomCabNameProps> {
private getOption = async () => private getOption = async () =>
{ {
app.Editor.ModalManage.ToggleShow(); app.Editor.ModalManage.ToggleShow();
@ -56,7 +65,36 @@ export default class GetRoomCabName extends React.Component<IGetRoomCabNameProps
</Label> </Label>
</div> </div>
<Button text="拾取" intent={Intent.SUCCESS} onClick={this.getOption} /> <Button text="拾取" intent={Intent.SUCCESS} onClick={this.getOption} />
{/* <Checkbox label="智能拾取" inline /> */} <div style={{
marginLeft: 10,
}}>
{
this.props.needBoardName &&
<Checkbox
label="柜名跟随"
defaultChecked={true}
onChange={e =>
{
if (this.props.option.withName !== undefined)
this.props.option.withName = e.currentTarget.checked;
}}
/>
}
{
(this.props.isAuto === undefined || this.props.isAuto) &&
<Checkbox
label="智能识别"
style={{ marginBottom: 0 }}
defaultChecked={true}
onChange={e =>
{
if (this.props.option.isAuto !== undefined)
this.props.option.isAuto = e.currentTarget.checked;
}}
/>
}
</div>
</div> </div>
); );
} }

@ -23,8 +23,9 @@ import { MenuItem } from '../ContextMenu/MenuItem';
import { CommonPanel, IDirectoryProps } from '../SourceManage/CommonPanel'; import { CommonPanel, IDirectoryProps } from '../SourceManage/CommonPanel';
import { HandleDirComponent } from '../SourceManage/HandleDirComponent'; import { HandleDirComponent } from '../SourceManage/HandleDirComponent';
import { AppToaster } from '../Toaster'; import { AppToaster } from '../Toaster';
import GetRoomCabName from './GetRoomCabName'; import { GetRoomCabName, IGetRoomInfo } from './GetRoomCabName';
import { TemplateList } from './TemplateList'; import { TemplateList } from './TemplateList';
import { TempalteEditorStore } from '../../Store/TemplateEditorStore';
export interface INeedUpdateParams export interface INeedUpdateParams
{ {
@ -35,10 +36,12 @@ export interface INeedUpdateParams
} }
@observer @observer
export class TemplateManage extends React.Component<{}, {}> { export class TemplateManage extends React.Component<{ store: TempalteEditorStore }, {}> {
@observable private option = { @observable private option: IGetRoomInfo = {
roomName: "", roomName: "",
cabName: "", cabName: "",
withName: true, //柜名跟随
isAuto: true, //智能识别
}; };
private canCreateTemplate = observable.box(false); private canCreateTemplate = observable.box(false);
@observable private currentProps: INeedUpdateParams[] = []; @observable private currentProps: INeedUpdateParams[] = [];
@ -46,6 +49,7 @@ export class TemplateManage extends React.Component<{}, {}> {
constructor(props) constructor(props)
{ {
super(props); super(props);
this.option.cabName = "标准柜" + this.props.store.cabNameIndex;
} }
private renderNav = () => private renderNav = () =>
{ {
@ -203,13 +207,15 @@ export class TemplateManage extends React.Component<{}, {}> {
app.Editor.ModalManage.ToggleShow(); app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear(); app.Editor.MaskManage.Clear();
CommandWrap(async () => await CommandWrap(async () =>
{ {
if (isByBasePt) if (isByBasePt)
await this.handleInsertByBasePt(); await this.handleInsertByBasePt();
else else
await this.handleInsertBySpace(); await this.handleInsertBySpace();
}, "插入模块"); }, "插入模块");
if (this.option.withName)
this.option.cabName = "标准柜" + (++this.props.store.cabNameIndex);
app.Editor.ModalManage.ToggleShow(); app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask(); app.Editor.MaskManage.ShowMask();
app.Editor.MaskManage.OnFocusEvent(); app.Editor.MaskManage.OnFocusEvent();
@ -271,7 +277,7 @@ export class TemplateManage extends React.Component<{}, {}> {
let seleteBrs = parse.Boards.filter(b => b.Template !== undefined); let seleteBrs = parse.Boards.filter(b => b.Template !== undefined);
if (parse.Boards.length > 0) if (parse.Boards.length > 0 && !this.option.roomName && this.option.isAuto)
{ {
let process = parse.Boards[0].BoardProcessOption; let process = parse.Boards[0].BoardProcessOption;
for (let b of nents) for (let b of nents)
@ -280,6 +286,14 @@ export class TemplateManage extends React.Component<{}, {}> {
b.BoardProcessOption[EBoardKeyList.CabinetName] = process[EBoardKeyList.CabinetName]; b.BoardProcessOption[EBoardKeyList.CabinetName] = process[EBoardKeyList.CabinetName];
} }
} }
else
{
for (let b of nents)
{
b.BoardProcessOption[EBoardKeyList.RoomName] = this.option.roomName;
b.BoardProcessOption[EBoardKeyList.CabinetName] = this.option.cabName;
}
}
if (parse instanceof ClampSpaceParse) if (parse instanceof ClampSpaceParse)
{ {
@ -358,6 +372,7 @@ export class TemplateManage extends React.Component<{}, {}> {
isRename={this.canCreateTemplate} isRename={this.canCreateTemplate}
currentProps={this.currentProps} currentProps={this.currentProps}
info={this.currentTemplateInfo} info={this.currentTemplateInfo}
option={this.option}
/> />
{ {
this.canCreateTemplate.get() && <HandleDirComponent this.canCreateTemplate.get() && <HandleDirComponent
@ -373,6 +388,8 @@ export class TemplateManage extends React.Component<{}, {}> {
<div className={Classes.DIALOG_FOOTER} > <div className={Classes.DIALOG_FOOTER} >
<GetRoomCabName <GetRoomCabName
option={this.option} option={this.option}
needBoardName
isAuto={this.option.roomName === ""}
/> />
<div className={Classes.DIALOG_FOOTER_ACTIONS}> <div className={Classes.DIALOG_FOOTER_ACTIONS}>
<Button <Button

@ -8,6 +8,7 @@ import { TemplateDetail } from './TemplateDetail';
import { ContextMenu, Menu, MenuItem, Popover, Position, Card, Button, Classes, Intent, Checkbox } from '@blueprintjs/core'; import { ContextMenu, Menu, MenuItem, Popover, Position, Card, Button, Classes, Intent, Checkbox } from '@blueprintjs/core';
import { MouseKey } from '../../../Common/KeyEnum'; import { MouseKey } from '../../../Common/KeyEnum';
import { INeedUpdateParams } from './TemplateComponent'; import { INeedUpdateParams } from './TemplateComponent';
import { IGetRoomInfo } from './GetRoomCabName';
export interface ITemplateListProps export interface ITemplateListProps
{ {
@ -18,6 +19,7 @@ export interface ITemplateListProps
currentProps: INeedUpdateParams[]; currentProps: INeedUpdateParams[];
isRename: IObservableValue<boolean>; isRename: IObservableValue<boolean>;
info: { id: string, name: string }; info: { id: string, name: string };
option: IGetRoomInfo;
} }
@observer @observer
@ -105,6 +107,8 @@ export class TemplateList extends React.Component<ITemplateListProps> {
} }
else else
{ {
if (!this.props.option.withName)
this.props.option.cabName = temp.name;
let pars = TemplateParamsIn(JSON.parse(inflate(temp.props))); let pars = TemplateParamsIn(JSON.parse(inflate(temp.props)));
this._params = pars; this._params = pars;
observable(this.props.currentProps).replace(pars.map(p => observable(this.props.currentProps).replace(pars.map(p =>

@ -16,7 +16,7 @@ import { MoveMatrix } from '../../../Geometry/GeUtils';
import { CommonPanel, IDirectoryProps } from '../SourceManage/CommonPanel'; import { CommonPanel, IDirectoryProps } from '../SourceManage/CommonPanel';
import { HandleDirComponent } from '../SourceManage/HandleDirComponent'; import { HandleDirComponent } from '../SourceManage/HandleDirComponent';
import { AppToaster } from '../Toaster'; import { AppToaster } from '../Toaster';
import GetRoomCabName from './GetRoomCabName'; import { GetRoomCabName } from './GetRoomCabName';
import { ToplineList } from './ToplineList'; import { ToplineList } from './ToplineList';
interface ITopllineManageProps interface ITopllineManageProps

@ -0,0 +1,19 @@
import { Singleton } from "../../Common/Singleton";
import { IConfigOption } from "../Components/Board/UserConfig";
import { IConfigStore } from "./BoardStore";
export class TempalteEditorStore extends Singleton implements IConfigStore
{
cabNameIndex = 0;
UpdateOption(cof: IConfigOption)
{
}
SaveConfig()
{
//新的配置
let newConfig: IConfigOption = {};
return newConfig;
}
}
Loading…
Cancel
Save