!1714 修复:保持上次设置,部分配置面板出现错误情况

Merge pull request !1714 from 林三/groove_input_bug
pull/1832/head
林三 3 years ago committed by ChenX
parent a6c993b9e2
commit 4762bd6d78

@ -62,19 +62,21 @@ export class Curve2RecModalStore extends Singleton implements IConfigStore
HasInvailValue() HasInvailValue()
{ {
//如果为空或NaN: 有非法值 //如果为空或NaN: 有非法值
let errMsg = (isNaN(safeEval(this.uiOption.gap))) || (isNaN(safeEval(this.uiOption.width))) ? "间隙和宽度值不能为空" : ""; let errMsg = (isNaN(safeEval(this.uiOption.gap))) || (isNaN(safeEval(this.uiOption.width))) ? "间隙或宽度值错误 " : "";
if (errMsg)
ToasterValueError(errMsg);
return errMsg; return errMsg;
}; };
Cancel() Cancel()
{ {
if (this.HasInvailValue())
this.UpdateOption(this.SaveConfig() as IConfigOption<Curve2RecOption>);
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
} }
OnOk() OnOk()
{ {
let invail = this.HasInvailValue(); let invail = this.HasInvailValue();
if (!invail) if (invail)
ToasterValueError(invail);
else
app.Editor.ModalManage.DestoryAndExec({ Status: ModalState.Ok, Data: { cname: "c2r" } }); app.Editor.ModalManage.DestoryAndExec({ Status: ModalState.Ok, Data: { cname: "c2r" } });
} }
} }
@ -89,6 +91,8 @@ export class Curve2RecModal extends React.Component<{ store: Curve2RecModalStore
if (app.Editor.ModalManage.CurrentModalKey !== GetCompoentObjectIdString(Curve2RecModal)) return; if (app.Editor.ModalManage.CurrentModalKey !== GetCompoentObjectIdString(Curve2RecModal)) return;
if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space) if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space)
this.props.store.OnOk(); this.props.store.OnOk();
else if (e.keyCode === KeyBoard.Escape)
this.props.store.Cancel();
e.stopPropagation(); e.stopPropagation();
return true; return true;
}) })

@ -1,8 +1,10 @@
import { Button, Card, H5, Intent } from '@blueprintjs/core'; import { Button, Card, H5, Intent } from '@blueprintjs/core';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { begin } from 'xaop';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { KeyBoard } from '../../../Common/KeyEnum';
import { Input5Or4Component, Notes, SetBoardDataBlock } from '../../../UI/Components/Board/BoardCommon'; import { Input5Or4Component, Notes, SetBoardDataBlock } from '../../../UI/Components/Board/BoardCommon';
import { BoardModalType } from '../../../UI/Components/Board/BoardModal'; import { BoardModalType } from '../../../UI/Components/Board/BoardModal';
import { CommonModal } from '../../../UI/Components/Modal/ModalContainer'; import { CommonModal } from '../../../UI/Components/Modal/ModalContainer';
@ -21,6 +23,28 @@ const ShrinkPars = [
@observer @observer
export class R2b2Panel extends Component<{ store: R2B2Store; }> export class R2b2Panel extends Component<{ store: R2B2Store; }>
{ {
private event: Function;
componentDidMount()
{
this.event = begin(app.Editor.ModalManage, app.Editor.ModalManage.OnKeyDown, (e: KeyboardEvent) =>
{
if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space)
{
this.confirm();
e.preventDefault();
}
else if (e.keyCode === KeyBoard.Escape)
this.close();
e.stopPropagation();
});
}
componentWillUnmount()
{
this.event();
this.event = null;
}
render() render()
{ {
const { store } = this.props; const { store } = this.props;
@ -83,6 +107,7 @@ export class R2b2Panel extends Component<{ store: R2B2Store; }>
leftKey="sealedLeft" leftKey="sealedLeft"
rightKey="sealedRight" rightKey="sealedRight"
option={store.option} option={store.option}
uiOption={store.uiOption}
isShowEditor={true} isShowEditor={true}
/> />
</div> </div>
@ -97,6 +122,8 @@ export class R2b2Panel extends Component<{ store: R2B2Store; }>
} }
private close = () => private close = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
}; };
private confirm = () => private confirm = () =>

@ -47,6 +47,8 @@ export class Rec2BrModal extends React.Component<{ store: Rec2BrStore; }, {}>
} }
this.props.store.OnOk(ModalState.Ok); this.props.store.OnOk(ModalState.Ok);
}); });
if (e.keyCode === KeyBoard.Escape)
this.props.store.OnOk(ModalState.Cancel);
e.stopPropagation(); e.stopPropagation();
return true; return true;
}) })

@ -1,8 +1,10 @@
import { Button, Card, Checkbox, H5, Intent, Radio, RadioGroup, Tooltip } from "@blueprintjs/core"; import { Button, Card, Checkbox, H5, Intent, Radio, RadioGroup, Tooltip } from "@blueprintjs/core";
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import React, { Component } from 'react'; import React, { Component } from 'react';
import * as xaop from 'xaop';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { CheckObjectType } from "../../Common/CheckoutVaildValue"; import { CheckObjectType } from "../../Common/CheckoutVaildValue";
import { KeyBoard } from "../../Common/KeyEnum";
import { SetBoardDataBlock } from "../../UI/Components/Board/BoardCommon"; import { SetBoardDataBlock } from "../../UI/Components/Board/BoardCommon";
import { BoardModalType } from '../../UI/Components/Board/BoardModal'; import { BoardModalType } from '../../UI/Components/Board/BoardModal';
import { CommonModal } from '../../UI/Components/Modal/ModalContainer'; import { CommonModal } from '../../UI/Components/Modal/ModalContainer';
@ -223,6 +225,28 @@ export class ParseBoardName extends Component<IParseBoardProps>
export class ParseBoardNamePanel extends Component<{ store: ParseBoardNameStore; }> export class ParseBoardNamePanel extends Component<{ store: ParseBoardNameStore; }>
{ {
private event: Function;
componentDidMount()
{
this.event =
xaop.begin(app.Editor.ModalManage, app.Editor.ModalManage.OnKeyDown, (e: KeyboardEvent) =>
{
if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space)
{
this.ok();
e.preventDefault();
}
else if (e.keyCode === KeyBoard.Escape)
this.close();
e.stopPropagation();
});
}
componentWillUnmount()
{
this.event();
this.event = null;
}
render() render()
{ {
return ( return (
@ -242,6 +266,7 @@ export class ParseBoardNamePanel extends Component<{ store: ParseBoardNameStore;
onClick={this.ok} onClick={this.ok}
/> />
<Button <Button
style={{ marginLeft: 3 }}
text="取消" text="取消"
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={this.close} onClick={this.close}
@ -272,6 +297,8 @@ export class ParseBoardNamePanel extends Component<{ store: ParseBoardNameStore;
}; };
private close = () => private close = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
}; };
} }

@ -38,7 +38,8 @@ export class R2BProcessComponent extends React.Component<IR2BProcessComponentPro
<SetBoardDataBlock <SetBoardDataBlock
type={CheckObjectType.R2B} type={CheckObjectType.R2B}
pars={this.m_ScaleParameter} pars={this.m_ScaleParameter}
option={store.m_Option.grooveOption} option={store.grooveOption}
uiOption={store.UiGrooveOption}
className="flexWrap" className="flexWrap"
/> />
<div className="flex br-mat"> <div className="flex br-mat">

@ -3,20 +3,40 @@ import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue"
import { DataAdapter } from "../../Common/DataAdapter"; import { DataAdapter } from "../../Common/DataAdapter";
import { DefaultR2bOption } from "../../Editor/DefaultConfig"; import { DefaultR2bOption } from "../../Editor/DefaultConfig";
import { IConfigOption } from "../../UI/Components/Board/UserConfig"; import { IConfigOption } from "../../UI/Components/Board/UserConfig";
import { IGrooveOption, IUiOption } from "../../UI/Store/BoardInterface";
import { BoardStore } from "../../UI/Store/BoardStore"; import { BoardStore } from "../../UI/Store/BoardStore";
import { updateBoardInfoStore } from "../../UI/Store/UpdateBoardInfoStore"; import { updateBoardInfoStore } from "../../UI/Store/UpdateBoardInfoStore";
import { IRec2BrOption } from "./R2bInterface"; import { IRec2BrOption } from "./R2bInterface";
export class Rec2BrStore extends BoardStore<IRec2BrOption> export class Rec2BrStore extends BoardStore<IRec2BrOption>
{ {
@observable m_Option: IRec2BrOption = { ...DefaultR2bOption, grooveOption: { ...DefaultR2bOption.grooveOption } }; @observable m_Option: IRec2BrOption = { ...DefaultR2bOption };
@observable grooveOption: IGrooveOption = {
grooveAddLength: "0",
grooveAddWidth: "0",
grooveAddDepth: "0",
knifeRadius: "3",
};
private m_UiGrooveOption: IUiOption<IGrooveOption>;
get UiGrooveOption(): IUiOption<IGrooveOption>
{
if (!this.m_UiGrooveOption)
this.m_UiGrooveOption = DataAdapter.ConvertUIData(this.grooveOption);
return this.m_UiGrooveOption;
}
@action @action
InitOption() InitOption()
{ {
let newOption = { ...DefaultR2bOption }; let newOption = { ...DefaultR2bOption };
delete newOption.grooveOption;
Object.assign(this.m_Option, newOption); Object.assign(this.m_Option, newOption);
Object.assign(this.m_Option.grooveOption, DefaultR2bOption.grooveOption); Object.assign(this.m_UiGrooveOption, {
grooveAddLength: "0",
grooveAddWidth: "0",
grooveAddDepth: "0",
knifeRadius: "3",
});
const names = updateBoardInfoStore.configsNames; const names = updateBoardInfoStore.configsNames;
if (names.length > 0 && !names.includes(this.m_Option.configName)) if (names.length > 0 && !names.includes(this.m_Option.configName))
@ -26,13 +46,16 @@ export class Rec2BrStore extends BoardStore<IRec2BrOption>
} }
HasInvailValue() HasInvailValue()
{ {
return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.R2B) || CheckoutValid.HasInvailValue(this.m_Option.grooveOption, CheckObjectType.R2B);;// return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.R2B)
|| CheckoutValid.HasInvailValue(this.grooveOption, CheckObjectType.R2B)
|| CheckoutValid.HasInvailValue(this.UiGrooveOption, CheckObjectType.R2B);
} }
SaveConfig() SaveConfig()
{ {
let newConfig: IConfigOption = {}; let newConfig: IConfigOption = {};
this.m_Option.backBrTemplate = null; this.m_Option.backBrTemplate = null;
newConfig.option = toJS(this.m_Option); newConfig.option = toJS(this.m_Option);
newConfig.grooveData = toJS(this.grooveOption);
return newConfig; return newConfig;
} }
UpdateRemarks(cof: IConfigOption<IRec2BrOption>) UpdateRemarks(cof: IConfigOption<IRec2BrOption>)
@ -73,13 +96,12 @@ export class Rec2BrStore extends BoardStore<IRec2BrOption>
} }
else else
this.m_Option.backBrTemplateId = cof.option.backBrTemplateId; this.m_Option.backBrTemplateId = cof.option.backBrTemplateId;
let grooveOption = cof.option.grooveOption;
delete cof.option.grooveOption;
Object.assign(this.m_Option, cof.option); Object.assign(this.m_Option, cof.option);
Object.assign(this.m_Option.grooveOption, grooveOption);
if (this.m_UiOption)
Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(cof.option)); Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(cof.option));
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(cof.grooveData));
this.UpdateRemarks(cof); this.UpdateRemarks(cof);
const names = updateBoardInfoStore.configsNames; const names = updateBoardInfoStore.configsNames;
if (names.length > 0 && !names.includes(this.m_Option.configName)) if (names.length > 0 && !names.includes(this.m_Option.configName))

@ -21,6 +21,7 @@ export enum CheckObjectType
/**大于0的数字 */ /**大于0的数字 */
GT0Num = "gt0num", GT0Num = "gt0num",
BMP = "batchmodifypanel", BMP = "batchmodifypanel",
BF = "boardFind",//查找修改
} }
export namespace CheckoutValid export namespace CheckoutValid
@ -70,6 +71,8 @@ export namespace CheckoutValid
case CheckObjectType.BMP: case CheckObjectType.BMP:
errMsg = CheckoutBatchModifyPanel(k, obj[k]); errMsg = CheckoutBatchModifyPanel(k, obj[k]);
break; break;
case CheckObjectType.BF:
errMsg = CheckoutBoardFindOption(k, obj[k]);
default: default:
break; break;
} }
@ -107,6 +110,8 @@ export namespace CheckoutValid
return CheckoutRec2BrOption(k, v); return CheckoutRec2BrOption(k, v);
case CheckObjectType.BMP: case CheckObjectType.BMP:
return CheckoutBatchModifyPanel(k, v); return CheckoutBatchModifyPanel(k, v);
case CheckObjectType.BF:
return CheckoutBoardFindOption(k, v);
case CheckObjectType.OnlyNumber: case CheckObjectType.OnlyNumber:
if (!isNum(v)) if (!isNum(v))
return "数值不能为空且必须为数字"; return "数值不能为空且必须为数字";
@ -164,6 +169,8 @@ export namespace CheckoutValid
case "sealedLeft": case "sealedLeft":
case "sealedRight": case "sealedRight":
case "divCount": case "divCount":
case "startDist":
case "endDist":
if (typeof v === "string" && v.includes(','))//v类型不是字符串时,这个代码出错了 if (typeof v === "string" && v.includes(','))//v类型不是字符串时,这个代码出错了
return "表达式不能有逗号"; return "表达式不能有逗号";
if (isNaN(val)) if (isNaN(val))
@ -174,8 +181,10 @@ export namespace CheckoutValid
case "spliteHeight": case "spliteHeight":
case "spliteWidth": case "spliteWidth":
case "spliteThickness": case "spliteThickness":
if (v !== "" && isNaN(safeEval(v, { L: 1, H: 1, W: 1 }, "L"))) if (v && v !== "" && isNaN(safeEval(v, { L: 1, H: 1, W: 1 })))
{
return "表达式错误"; return "表达式错误";
}
return ""; return "";
case "height": case "height":
case "width": case "width":
@ -323,7 +332,6 @@ export namespace CheckoutValid
case "sealedDown": case "sealedDown":
case "sealedLeft": case "sealedLeft":
case "sealedRight": case "sealedRight":
case "knifeRadius":
case "cabinetDeep": case "cabinetDeep":
case "cabinetBrThick": case "cabinetBrThick":
case "backBrThick": case "backBrThick":
@ -336,6 +344,7 @@ export namespace CheckoutValid
return ""; return "";
case "maxThickness": case "maxThickness":
case "footerThickness": case "footerThickness":
case "knifeRadius":
if (isNaN(val)) if (isNaN(val))
return "数值不能为空且必须为数字"; return "数值不能为空且必须为数字";
if (val <= 0) if (val <= 0)
@ -557,6 +566,7 @@ export namespace CheckoutValid
case "boardThick": case "boardThick":
case "brThick2": case "brThick2":
case "gripWidth": case "gripWidth":
case "knifeRadius":
if (!(safeEval(v) > 0)) if (!(safeEval(v) > 0))
return "数值必须大于0"; return "数值必须大于0";
case "followNarrow"://这是个布尔值 不校验它. case "followNarrow"://这是个布尔值 不校验它.
@ -571,8 +581,16 @@ export namespace CheckoutValid
} }
export function CheckoutLatticeOption(k: string, v: string): string export function CheckoutLatticeOption(k: string, v: string): string
{ {
let val = safeEval(v);
switch (k) switch (k)
{ {
case "upCut":
case "downCut":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (!(val >= 0))
return "数值必须大于0";
return "";
case "thickness": case "thickness":
case "gripWidth": case "gripWidth":
case "gripDepth": case "gripDepth":
@ -586,12 +604,16 @@ export namespace CheckoutValid
case "leftSealed": case "leftSealed":
case "rightSealed": case "rightSealed":
case "knifeRad": case "knifeRad":
case "upCut":
case "downCut":
if (v.includes(',')) if (v.includes(','))
return "表达式不能有逗号"; return "表达式不能有逗号";
if (safeEval(v) < 0) if (safeEval(v) < 0)
return "数值不能小于0"; return "数值不能小于0";
case "knifeRadius":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (!(val > 0))
return "数值必须大于0";
return "";
default: default:
if (!(isNum(v))) if (!(isNum(v)))
{ {
@ -600,4 +622,40 @@ export namespace CheckoutValid
return ""; return "";
} }
} }
export function CheckoutBoardFindOption(k: string, v: string): string
{
let val = safeEval(v);
switch (k)
{
case "sealedUp":
case "sealedDown":
case "sealedLeft":
case "sealedRight":
if (v && v !== "" && isNaN(val))
{
return "数值必须为数字";
}
return "";
case "height":
case "width":
case "thickness":
case "knifeRadius":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (!(val > 0))
return "数值必须大于0";
return "";
case "grooveAddLength":
case "grooveAddWidth":
case "grooveAddDepth":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (val < 0)
return "数值必须大于等于0";
return "";
default:
return "";
}
}
} }

@ -71,12 +71,14 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
thick: this.props.store.m_Option.thick, thick: this.props.store.m_Option.thick,
} }
}); });
this.Close(); app.Editor.ModalManage.Destory();
}; };
private Close() private Close = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
} };
private getModifyValue = async (optKey: string) => private getModifyValue = async (optKey: string) =>
{ {
app.Editor.ModalManage.ToggleShow(); app.Editor.ModalManage.ToggleShow();
@ -123,6 +125,8 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space && if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum')))) (el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.Ok(); this.Ok();
else if (e.keyCode === KeyBoard.Escape)
this.Close();
}); });
} }
componentWillUnmount() componentWillUnmount()
@ -222,7 +226,7 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
<Divider /> <Divider />
<div> <div>
<Button intent={Intent.SUCCESS} text="确定" onClick={this.Ok} /> <Button intent={Intent.SUCCESS} text="确定" onClick={this.Ok} />
<Button intent={Intent.DANGER} text="取消" onClick={this.Close} /> <Button style={{ marginLeft: 3 }} intent={Intent.DANGER} text="取消" onClick={this.Close} />
</div> </div>
</footer> </footer>
</div> </div>

@ -43,6 +43,7 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
type={CheckObjectType.BR} type={CheckObjectType.BR}
pars={this.m_ScaleParameter} pars={this.m_ScaleParameter}
option={store.grooveOption} option={store.grooveOption}
uiOption={store.UiGrooveOption}
className="flexWrap" className="flexWrap"
/> />
</div> </div>

@ -1,15 +1,17 @@
import { Button, Checkbox, Classes, HTMLSelect, Intent } from '@blueprintjs/core'; import { Button, Checkbox, Classes, HTMLSelect, Intent } from '@blueprintjs/core';
import { observable } from 'mobx';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { safeEval } from '../../../Common/eval';
import { IBoardFindOption, DRILL_KEYS, ECompareType } from '../../Store/BoardFindInterface';
import { EBoardKeyList } from '../../../Common/BoardKeyList'; import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { IUpdateBoardInfosOption } from './UpdateBoardInfointerface'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { observable } from 'mobx'; import { safeEval } from '../../../Common/eval';
import { GoodsList, IGoodInfo } from '../../MaterialEditor/GoodsList'; import { GoodsList, IGoodInfo } from '../../MaterialEditor/GoodsList';
import { BoardDirectionIcon } from './BoardCommon'; import { DRILL_KEYS, ECompareType, IBoardFindOption } from '../../Store/BoardFindInterface';
import { UpdateBoardInfosStore } from '../../Store/UpdateBoardInfoStore';
import { BoardFindStore } from '../../Store/BoardFindModifyStore'; import { BoardFindStore } from '../../Store/BoardFindModifyStore';
import { UpdateBoardInfosStore } from '../../Store/UpdateBoardInfoStore';
import { ToasterInput } from '../Toaster';
import { BoardDirectionIcon } from './BoardCommon';
import { IUpdateBoardInfosOption } from './UpdateBoardInfointerface';
export interface IBoardProps export interface IBoardProps
{ {
@ -262,10 +264,11 @@ export class SealDrillCom extends React.Component<ISealDrillProps>
this.props.onChange(); this.props.onChange();
}} }}
/> />
<input <ToasterInput
className={Classes.INPUT} type={CheckObjectType.BF}
value={option[EBoardKeyList.UpSealed]} optKey={EBoardKeyList.UpSealed}
onChange={e => this.handleChange(e, EBoardKeyList.UpSealed)} option={option}
uiOption={store.UIOption}
/> />
<HTMLSelect <HTMLSelect
className="select-drillType" className="select-drillType"
@ -297,10 +300,11 @@ export class SealDrillCom extends React.Component<ISealDrillProps>
this.props.onChange(); this.props.onChange();
}} }}
/> />
<input <ToasterInput
className={Classes.INPUT} type={CheckObjectType.BF}
value={option[EBoardKeyList.LeftSealed]} optKey={EBoardKeyList.LeftSealed}
onChange={e => this.handleChange(e, EBoardKeyList.LeftSealed)} option={option}
uiOption={store.UIOption}
/> />
<HTMLSelect <HTMLSelect
className="select-drillType" className="select-drillType"
@ -332,10 +336,11 @@ export class SealDrillCom extends React.Component<ISealDrillProps>
this.props.onChange(); this.props.onChange();
}} }}
/> />
<input <ToasterInput
className={Classes.INPUT} type={CheckObjectType.BF}
value={option[EBoardKeyList.RightSealed]} optKey={EBoardKeyList.RightSealed}
onChange={e => this.handleChange(e, EBoardKeyList.RightSealed)} option={option}
uiOption={store.UIOption}
/> />
<HTMLSelect <HTMLSelect
className="select-drillType" className="select-drillType"
@ -367,10 +372,11 @@ export class SealDrillCom extends React.Component<ISealDrillProps>
this.props.onChange(); this.props.onChange();
}} }}
/> />
<input <ToasterInput
className={Classes.INPUT} type={CheckObjectType.BF}
value={option[EBoardKeyList.DownSealed]} optKey={EBoardKeyList.DownSealed}
onChange={e => this.handleChange(e, EBoardKeyList.DownSealed)} option={option}
uiOption={store.UIOption}
/> />
<HTMLSelect <HTMLSelect
className="select-drillType" className="select-drillType"

@ -1,20 +1,22 @@
import * as React from 'react'; import { Button, Card, Checkbox, Classes, H5, HTMLSelect, Intent, Popover, Position } from '@blueprintjs/core';
import { Classes, Button, H5, Checkbox, HTMLSelect, Popover, Card, Intent, Position } from '@blueprintjs/core'; import { observable } from 'mobx';
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import { BoardFindStore } from '../../Store/BoardFindModifyStore'; import * as React from 'react';
import { BoardFindItem, BoardFindSelectItem, MatColorCom, SealDrillCom } from './BoardFindCommon'; import { begin } from 'xaop';
import { BoardModalType } from './BoardModal';
import { ModalState } from '../Modal/ModalInterface';
import { EFindType, ECompareType, DRILL_KEYS } from '../../Store/BoardFindInterface';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { observable } from 'mobx'; import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { BigFaceSelectOption, ComposingFaceSelectOption, LineTypeSelectOption } from '../../../Common/CommonSelectOption';
import { KeyBoard, KeyCode } from '../../../Common/KeyEnum';
import { userConfig } from '../../../Editor/UserConfig'; import { userConfig } from '../../../Editor/UserConfig';
import { Notes } from './BoardCommon';
import { IGoodInfo } from '../../MaterialEditor/GoodsList'; import { IGoodInfo } from '../../MaterialEditor/GoodsList';
import { DRILL_KEYS, ECompareType, EFindType } from '../../Store/BoardFindInterface';
import { BoardFindStore } from '../../Store/BoardFindModifyStore';
import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { CommonModal } from '../Modal/ModalContainer'; import { CommonModal } from '../Modal/ModalContainer';
import { BigFaceSelectOption, LineTypeSelectOption, ComposingFaceSelectOption } from '../../../Common/CommonSelectOption'; import { ModalState } from '../Modal/ModalInterface';
import { KeyCode } from '../../../Common/KeyEnum'; import { Notes } from './BoardCommon';
import { BoardFindItem, BoardFindSelectItem, MatColorCom, SealDrillCom } from './BoardFindCommon';
import { BoardModalType } from './BoardModal';
interface IBoardFindState interface IBoardFindState
{ {
@ -24,6 +26,7 @@ interface IBoardFindState
@inject('store') @inject('store')
@observer @observer
export default class BoardFindModifyModal extends React.Component<{ store?: BoardFindStore; }, IBoardFindState> { export default class BoardFindModifyModal extends React.Component<{ store?: BoardFindStore; }, IBoardFindState> {
private event: Function;
@observable _brNameList: [string, boolean][] = [ @observable _brNameList: [string, boolean][] = [
["左侧板", false], ["右侧板", false], ["顶板", false], ["底板", false], ["左侧板", false], ["右侧板", false], ["顶板", false], ["底板", false],
["层板", false], ["背板", false], ["地脚线", false], ["层板", false], ["背板", false], ["地脚线", false],
@ -36,6 +39,26 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar
userInputName: "", userInputName: "",
}; };
} }
componentDidMount()
{
this.event =
begin(app.Editor.ModalManage, app.Editor.ModalManage.OnKeyDown, (e: KeyboardEvent) =>
{
if (app.Editor.ModalManage.CurrentModalKey !== GetCompoentObjectIdString(BoardFindModifyModal)) return;
if (e.keyCode === KeyBoard.Escape)
this.props.store.OnOk(ModalState.Cancel);
e.stopPropagation();
return true;
});
}
componentWillUnmount()
{
if (this.event)
{
this.event();
this.event = null;
}
}
private handleSelectAll = () => private handleSelectAll = () =>
{ {
const store = this.props.store; const store = this.props.store;

@ -200,7 +200,7 @@ export class BoardModal extends React.Component<BoardModalProps, {}>
{ {
store.m_BoardProcessOption.useBoardProcessOption = !store.m_BoardProcessOption.useBoardProcessOption; store.m_BoardProcessOption.useBoardProcessOption = !store.m_BoardProcessOption.useBoardProcessOption;
}} /> }} />
<BoardProcessModal opt={store.m_BoardProcessOption} drillOption={store.rectDrillOption} /> <BoardProcessModal opt={store.m_BoardProcessOption} drillOption={store.rectDrillOption} uiOpt={store.UIBoardProcessOption} />
</div> </div>
<div className={Classes.CARD}> <div className={Classes.CARD}>
<Notes remarks={this.props.store.remarks} /> <Notes remarks={this.props.store.remarks} />

@ -18,7 +18,7 @@ import { CommandWrap } from '../../../Editor/CommandMachine';
import { PromptStatus } from '../../../Editor/PromptResult'; import { PromptStatus } from '../../../Editor/PromptResult';
import { TempEditor } from '../../../Editor/TempEditor'; import { TempEditor } from '../../../Editor/TempEditor';
import { GoodsList, IGoodInfo } from '../../MaterialEditor/GoodsList'; import { GoodsList, IGoodInfo } from '../../MaterialEditor/GoodsList';
import { BoardProcessOption, FaceDirection, IHightDrillOption } from '../../Store/BoardInterface'; import { BoardProcessOption, FaceDirection, IHightDrillOption, IUiOption } from '../../Store/BoardInterface';
import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore';
import "../Modal/ModalStyle/BoardProcessModal.less"; import "../Modal/ModalStyle/BoardProcessModal.less";
import { RightTabId } from '../RightPanel/RightPanel'; import { RightTabId } from '../RightPanel/RightPanel';
@ -28,6 +28,7 @@ import { DrillTypeSelectCom, Input5Or4Component, SetBoardDataBlock, SetBoardData
interface BoardProcessProps interface BoardProcessProps
{ {
opt: BoardProcessOption; opt: BoardProcessOption;
uiOpt?: IUiOption<BoardProcessOption>;
isSpecial?: IObservableValue<boolean>; isSpecial?: IObservableValue<boolean>;
br?: Board; br?: Board;
drillOption?: IHightDrillOption; drillOption?: IHightDrillOption;
@ -406,6 +407,7 @@ export class BoardProcessModal extends React.Component<BoardProcessProps, {}>{
leftKey="sealedLeft" leftKey="sealedLeft"
rightKey="sealedRight" rightKey="sealedRight"
option={this.props.opt} option={this.props.opt}
uiOption={this.props.uiOpt}
isShowEditor={true} isShowEditor={true}
highDrillOption={this.props.drillOption} highDrillOption={this.props.drillOption}
/> />

@ -1,15 +1,15 @@
import { Button, Checkbox, H6, Intent, Radio, RadioGroup } from '@blueprintjs/core';
import { action, observable } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { SetBoardDataItem, Input5Or4Component } from '../BoardCommon';
import { CheckObjectType } from '../../../../Common/CheckoutVaildValue'; import { CheckObjectType } from '../../../../Common/CheckoutVaildValue';
import { IDrawerConfigOption, IDoorConfigOption, DoorPosType } from '../../../Store/DoorInterface';
import { IUiOption } from '../../../Store/BoardInterface';
import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore';
import { RadioGroup, Radio, H6, Checkbox, Intent, Button } from '@blueprintjs/core';
import { safeEval } from '../../../../Common/eval'; import { safeEval } from '../../../../Common/eval';
import { observable, action } from 'mobx';
import { observer } from 'mobx-react';
import { ToasterInput, AppToaster } from '../../Toaster';
import { FixedNotZero } from '../../../../Common/Utils'; import { FixedNotZero } from '../../../../Common/Utils';
import { IUiOption } from '../../../Store/BoardInterface';
import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore';
import { DoorPosType, IDoorConfigOption, IDrawerConfigOption } from '../../../Store/DoorInterface';
import { AppToaster, ToasterInput } from '../../Toaster';
import { Input5Or4Component, SetBoardDataItem } from '../BoardCommon';
export interface IUpDownSpaceComponentProps export interface IUpDownSpaceComponentProps
{ {
@ -38,6 +38,7 @@ export class UpDownSpaceComponent extends React.Component<IUpDownSpaceComponentP
type={CheckObjectType.Do} type={CheckObjectType.Do}
optKey="upOffsetExpr" optKey="upOffsetExpr"
option={store.m_Option} option={store.m_Option}
uiOption={store.UIOption}
isUpper isUpper
title="上留空" title="上留空"
onBlur={this.handleTBOffsetBlur} onBlur={this.handleTBOffsetBlur}
@ -58,6 +59,7 @@ export class UpDownSpaceComponent extends React.Component<IUpDownSpaceComponentP
type={CheckObjectType.Do} type={CheckObjectType.Do}
optKey="downOffsetExpr" optKey="downOffsetExpr"
option={store.m_Option} option={store.m_Option}
uiOption={store.UIOption}
title="下留空" title="下留空"
onBlur={this.handleTBOffsetBlur} onBlur={this.handleTBOffsetBlur}
> >

@ -1,20 +1,21 @@
import { Button, Classes, H5 } from '@blueprintjs/core';
import { observable } from 'mobx';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { Button, Classes, H5 } from '@blueprintjs/core'; import { begin } from 'xaop';
import { ModalState } from '../../Modal/ModalInterface'; import { app } from '../../../../ApplicationServices/Application';
import { DoorConfigModal } from './DoorConfigModal'; import { KeyBoard } from '../../../../Common/KeyEnum';
import { DoorPreviewComponent } from './DoorPreviewComponent';
import { BoardModalType } from '../BoardModal';
import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore'; import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore';
import { TemplateDetail } from '../../Template/TemplateDetail';
import { DoorStore } from '../../../Store/DoorDrawerStore/DoorStore'; import { DoorStore } from '../../../Store/DoorDrawerStore/DoorStore';
import { TemplateSelect } from '../../Template/TemplateSelect';
import { observable } from 'mobx';
import { DisableChangeParName } from '../../../Store/DoorInterface'; import { DisableChangeParName } from '../../../Store/DoorInterface';
import { ModalHeader, ModalFooter } from './../../Modal/ModalContainer'; import { ModalState } from '../../Modal/ModalInterface';
import { begin } from 'xaop'; import { TemplateDetail } from '../../Template/TemplateDetail';
import { KeyBoard } from '../../../../Common/KeyEnum'; import { TemplateSelect } from '../../Template/TemplateSelect';
import { app } from '../../../../ApplicationServices/Application'; import { BoardModalType } from '../BoardModal';
import { ModalFooter, ModalHeader } from './../../Modal/ModalContainer';
import { DoorConfigModal } from './DoorConfigModal';
import { DoorPreviewComponent } from './DoorPreviewComponent';
const DoorHelpUrl = "https://cfcad.cn/help/#/ThreeDDrawing/DOOR"; const DoorHelpUrl = "https://cfcad.cn/help/#/ThreeDDrawing/DOOR";
const DrawerHelpUrl = "https://cfcad.cn/help/#/ThreeDDrawing/DRAWER"; const DrawerHelpUrl = "https://cfcad.cn/help/#/ThreeDDrawing/DRAWER";
@ -44,6 +45,11 @@ export class DoorModal extends React.Component<{ store: DoorDrawerStore, type: B
//导致进入交互时,马上有个空格. //导致进入交互时,马上有个空格.
e.preventDefault(); e.preventDefault();
} }
else if (e.keyCode === KeyBoard.Escape)
{
this.props.store.OnOk(ModalState.Cancel);
e.preventDefault();
}
}); });
} }
componentWillUnmount() componentWillUnmount()

@ -31,6 +31,7 @@ export const LayerBoardModal =
pars={m_ScaleParameter} pars={m_ScaleParameter}
option={props.store.grooveOption} option={props.store.grooveOption}
className="flexWrap" className="flexWrap"
uiOption={props.store.UiGrooveOption}
/> />
</div> </div>
<div> <div>

@ -1,16 +1,16 @@
import { Button, Card, H5, Intent, Label } from '@blueprintjs/core';
import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { CommonModal } from '../Modal/ModalContainer'; import { end } from 'xaop';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { Label, H5, Button, Intent, Card } from '@blueprintjs/core';
import { Rect2WinerackStore } from '../../Store/Rect2WinerackStore';
import { ToasterInput } from '../Toaster';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { EBoardKeyList } from '../../../Common/BoardKeyList'; import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { BoardModalType } from './BoardModal'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { end } from 'xaop';
import { KeyBoard } from '../../../Common/KeyEnum'; import { KeyBoard } from '../../../Common/KeyEnum';
import { observer } from 'mobx-react'; import { Rect2WinerackStore } from '../../Store/Rect2WinerackStore';
import { GetCompoentObjectIdString } from '../ComponentObjectId'; import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { CommonModal } from '../Modal/ModalContainer';
import { AppToaster, ToasterInput } from '../Toaster';
import { BoardModalType } from './BoardModal';
interface IRect2WinerackProps interface IRect2WinerackProps
{ {
@ -24,18 +24,25 @@ export class Rect2Winerack extends React.Component<IRect2WinerackProps> {
{ {
this.event = end(app.Editor.ModalManage, app.Editor.ModalManage.OnKeyDown, (e: KeyboardEvent) => this.event = end(app.Editor.ModalManage, app.Editor.ModalManage.OnKeyDown, (e: KeyboardEvent) =>
{ {
app.Editor.ModalManage.stopKeyDownEvent = true;
if (GetCompoentObjectIdString(Rect2Winerack) !== app.Editor.ModalManage.CurrentModalKey) return; if (GetCompoentObjectIdString(Rect2Winerack) !== app.Editor.ModalManage.CurrentModalKey) return;
if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space) if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space)
{ {
this.ok(); this.ok();
e.preventDefault(); e.preventDefault();
} }
else if (e.keyCode === KeyBoard.Escape)
{
this.cancel();
e.preventDefault();
}
e.stopPropagation(); e.stopPropagation();
return true; return true;
}); });
} }
componentWillUnmount() componentWillUnmount()
{ {
app.Editor.ModalManage.stopKeyDownEvent = false;
this.event(); this.event();
this.event = null; this.event = null;
} }
@ -63,7 +70,7 @@ export class Rect2Winerack extends React.Component<IRect2WinerackProps> {
</> </>
} }
> >
<Card className="flex-center" onKeyDown={this.handleKeydown}> <Card className="flex-center">
<div style={{ width: 150 }}> <div style={{ width: 150 }}>
<Label> <Label>
<span style={{ width: 70 }}>:</span> <span style={{ width: 70 }}>:</span>
@ -126,16 +133,25 @@ export class Rect2Winerack extends React.Component<IRect2WinerackProps> {
</CommonModal> </CommonModal>
); );
} }
private handleKeydown = (e: React.KeyboardEvent<HTMLDivElement>) =>
{
console.log(e.keyCode);
};
private ok = () => private ok = () =>
{ {
let error = this.props.store.HasInvailValue();
if (error)
{
AppToaster.show({
message: error,
timeout: 3000,
intent: "danger",
});
return;
}
app.Editor.ModalManage.DestoryAndExec(); app.Editor.ModalManage.DestoryAndExec();
}; };
private cancel = () => private cancel = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
}; };
} }

@ -97,6 +97,7 @@ export const SingleBoardModal =
type={CheckObjectType.BR} type={CheckObjectType.BR}
pars={processPars} pars={processPars}
option={processOpt} option={processOpt}
uiOption={props.store.UIBoardProcessOption}
isInline={true} isInline={true}
/> />
<SetBoardDataBlock <SetBoardDataBlock

@ -1,17 +1,19 @@
import { Button, Classes } from '@blueprintjs/core'; import { Button, Classes } from '@blueprintjs/core';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { begin } from 'xaop';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { KeyBoard } from '../../../Common/KeyEnum';
import { BoardConfigOption } from '../../Store/BoardInterface';
import { SpecialShapeStore } from '../../Store/BoardStore'; import { SpecialShapeStore } from '../../Store/BoardStore';
import { BoardTypeComponent, Notes, SetBoardDataBlock, ItemName, SetBoardDataItem } from './BoardCommon'; import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { BoardProcessModal } from './BoardProcessModal';
import { ToasterValueError } from '../Toaster';
import { CommonModal } from '../Modal/ModalContainer'; import { CommonModal } from '../Modal/ModalContainer';
import { ToasterValueError } from '../Toaster';
import { BoardTypeComponent, ItemName, Notes, SetBoardDataBlock, SetBoardDataItem } from './BoardCommon';
import { BoardModalType } from './BoardModal'; import { BoardModalType } from './BoardModal';
import { begin } from 'xaop'; import { BoardProcessModal } from './BoardProcessModal';
import { KeyBoard } from '../../../Common/KeyEnum'; import { IConfigOption } from './UserConfig';
import { GetCompoentObjectIdString } from '../ComponentObjectId';
@observer @observer
export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShapeStore; }, {}> export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShapeStore; }, {}>
@ -34,6 +36,8 @@ export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShap
if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space && if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum')))) (el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.ok(); this.ok();
else if (e.keyCode === KeyBoard.Escape)
this.cancel();
}); });
} }
componentWillUnmount() componentWillUnmount()
@ -62,7 +66,7 @@ export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShap
onClick={this.ok} onClick={this.ok}
/> />
<Button className={Classes.INTENT_DANGER} text="取消" <Button className={Classes.INTENT_DANGER} text="取消"
onClick={() => app.Editor.ModalManage.Destory()} onClick={this.cancel}
/> />
</> </>
} }
@ -92,13 +96,14 @@ export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShap
type={CheckObjectType.BR} type={CheckObjectType.BR}
pars={this.splitePars} pars={this.splitePars}
option={store.m_BoardProcessOption} option={store.m_BoardProcessOption}
uiOption={store.UIBoardProcessOption}
isInline={true} isInline={true}
className="lr-br" className="lr-br"
/> />
</div> </div>
<div className={Classes.CARD}> <div className={Classes.CARD}>
<h6 className={Classes.HEADING}></h6> <h6 className={Classes.HEADING}></h6>
<BoardProcessModal opt={store.m_BoardProcessOption} /> <BoardProcessModal opt={store.m_BoardProcessOption} uiOpt={store.UIBoardProcessOption} />
</div> </div>
<div className={Classes.CARD}> <div className={Classes.CARD}>
<Notes remarks={store.remarks} /> <Notes remarks={store.remarks} />
@ -117,4 +122,10 @@ export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShap
} }
await app.Editor.ModalManage.DestoryAndExec(); await app.Editor.ModalManage.DestoryAndExec();
}; };
private cancel = () =>
{
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig() as IConfigOption<BoardConfigOption>);
app.Editor.ModalManage.Destory();
};
} }

@ -3,10 +3,12 @@ import { toJS } from 'mobx';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { hot } from 'react-hot-loader/root'; import { hot } from 'react-hot-loader/root';
import { begin } from 'xaop';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { EBoardKeyList } from '../../../Common/BoardKeyList'; import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { BigFaceSelectOption, ComposingFaceSelectOption, LineTypeSelectOption } from '../../../Common/CommonSelectOption'; import { BigFaceSelectOption, ComposingFaceSelectOption, LineTypeSelectOption } from '../../../Common/CommonSelectOption';
import { KeyBoard } from '../../../Common/KeyEnum';
import { Board } from '../../../DatabaseServices/Entity/Board'; import { Board } from '../../../DatabaseServices/Entity/Board';
import { CommandWrap } from '../../../Editor/CommandMachine'; import { CommandWrap } from '../../../Editor/CommandMachine';
import { PromptStatus } from '../../../Editor/PromptResult'; import { PromptStatus } from '../../../Editor/PromptResult';
@ -17,7 +19,7 @@ import { InputSelect } from '../Common';
import { PopoverButton } from '../Common/PopoverButton'; import { PopoverButton } from '../Common/PopoverButton';
import { CommonModal } from '../Modal/ModalContainer'; import { CommonModal } from '../Modal/ModalContainer';
import { ModalState } from '../Modal/ModalInterface'; import { ModalState } from '../Modal/ModalInterface';
import { ToasterInput } from '../Toaster'; import { AppToaster, ToasterInput } from '../Toaster';
import { AutoCutCheckbox, Notes } from './BoardCommon'; import { AutoCutCheckbox, Notes } from './BoardCommon';
import { MatColorCom, SealDrillCom } from './BoardFindCommon'; import { MatColorCom, SealDrillCom } from './BoardFindCommon';
import { BoardModalType } from './BoardModal'; import { BoardModalType } from './BoardModal';
@ -38,6 +40,27 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
[EBoardKeyList.ComposingFace]: ComposingFaceSelectOption, [EBoardKeyList.ComposingFace]: ComposingFaceSelectOption,
[EBoardKeyList.DrillType]: [], [EBoardKeyList.DrillType]: [],
}; };
private event: Function;
registerEvent()
{
this.event =
begin(app.Editor.ModalManage, app.Editor.ModalManage.OnKeyDown, (e: KeyboardEvent) =>
{
if (e.keyCode === KeyBoard.Escape)
this.Cancle();
e.stopPropagation();
});
}
UNSAFE_componentWillMount()
{
this.registerEvent();
}
componentWillUnmount()
{
this.event();
this.event = null;
}
public render() public render()
{ {
const store = this.props.store; const store = this.props.store;
@ -55,7 +78,7 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
<CommonModal <CommonModal
className="update-board" className="update-board"
title="根据板件名修改属性" title="根据板件名修改属性"
close={() => { app.Editor.ModalManage.Destory(); }} close={() => { this.Cancle(); }}
store={store} store={store}
type={BoardModalType.UpdateBoardInfo} type={BoardModalType.UpdateBoardInfo}
isImpExp isImpExp
@ -67,13 +90,13 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
text="单类板件修改" text="单类板件修改"
data-isAll="" data-isAll=""
intent={Intent.SUCCESS} intent={Intent.SUCCESS}
onClick={this.ok} onClick={this.OK}
/> />
<Button <Button
text="修改" text="修改"
intent={Intent.SUCCESS} intent={Intent.SUCCESS}
data-isAll="1" data-isAll="1"
onClick={this.ok} onClick={this.OK}
/> />
</> </>
} }
@ -200,9 +223,10 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
onChange={() => condition[k] = !condition[k]} onChange={() => condition[k] = !condition[k]}
/> />
<ToasterInput <ToasterInput
type={CheckObjectType.BR} type={CheckObjectType.BF}
optKey={k} optKey={k}
option={option} option={option}
uiOption={store.UIOption}
/> />
</div> </div>
); );
@ -216,9 +240,10 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
onChange={() => condition[EBoardKeyList.KnifeRad] = !condition[EBoardKeyList.KnifeRad]} onChange={() => condition[EBoardKeyList.KnifeRad] = !condition[EBoardKeyList.KnifeRad]}
/> />
<ToasterInput <ToasterInput
type={CheckObjectType.BR} type={CheckObjectType.BF}
optKey={EBoardKeyList.KnifeRad} optKey={EBoardKeyList.KnifeRad}
option={option} option={option}
uiOption={store.UIOption}
/> />
</div> </div>
</div> </div>
@ -243,17 +268,33 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
onChange={() => condition.remarks = !condition.remarks} onChange={() => condition.remarks = !condition.remarks}
/> />
<Notes remarks={option.remarks} /> <Notes remarks={option.remarks} />
</div> </div >
</Card> </Card >
</CommonModal> </CommonModal >
); );
} }
private ok = (e: React.MouseEvent<HTMLButtonElement>) => private OK = (e: React.MouseEvent<HTMLButtonElement>) =>
{
let errMsg = this.props.store.HasInvailValue();
if (errMsg)
{ {
AppToaster.show({
message: "存在无效数值,请修正",
timeout: 3000,
intent: Intent.DANGER
});
return;
}
let isAll = !!(e.currentTarget as HTMLButtonElement).getAttribute('data-isAll'); let isAll = !!(e.currentTarget as HTMLButtonElement).getAttribute('data-isAll');
this.props.store.UpdateCurrentOption(); this.props.store.UpdateCurrentOption();
app.Editor.ModalManage.DestoryAndExec({ Status: ModalState.Ok, Data: { isAll } }); app.Editor.ModalManage.DestoryAndExec({ Status: ModalState.Ok, Data: { isAll } });
}; };
private Cancle()
{
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory();
}
private addName = () => private addName = () =>
{ {
const store = this.props.store; const store = this.props.store;

@ -71,6 +71,7 @@ export const VerticalBoardModal =
pars={m_ScaleParameter} pars={m_ScaleParameter}
option={props.store.grooveOption} option={props.store.grooveOption}
className="flexWrap" className="flexWrap"
uiOption={props.store.UiGrooveOption}
/> />
</div> </div>
</> </>

@ -103,6 +103,8 @@ export class WineRackModal extends React.Component<{ store?: WineRackStore; }, {
private handleCancle = () => private handleCancle = () =>
{ {
this.props.store.EditorTemplate = undefined; this.props.store.EditorTemplate = undefined;
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
}; };
componentDidMount() componentDidMount()
@ -118,7 +120,7 @@ export class WineRackModal extends React.Component<{ store?: WineRackStore; }, {
e.preventDefault(); e.preventDefault();
} }
else if (e.keyCode === KeyBoard.Escape) else if (e.keyCode === KeyBoard.Escape)
this.props.store.EditorTemplate = undefined; this.handleCancle();
e.stopPropagation(); e.stopPropagation();
return true; return true;

@ -1,22 +1,22 @@
import React = require("react"); import React = require("react");
import '../Css/batchCurtailModal.less'; import { Button, Card, Checkbox, Classes, Divider, H5, Intent, Label, Radio, RadioGroup } from "@blueprintjs/core";
import { Card, Intent, Button, Label, Classes, Divider, RadioGroup, Radio, H5, Checkbox } from "@blueprintjs/core";
import { app } from "../../ApplicationServices/Application";
import { BoardStore } from "../Store/BoardStore";
import { observable, toJS } from "mobx"; import { observable, toJS } from "mobx";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { ToasterInput, ToasterValueError } from "./Toaster";
import { ModalState } from "./Modal/ModalInterface";
import { IConfigOption, UserConfig } from "./Board/UserConfig";
import { BoardModalType } from "./Board/BoardModal";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { safeEval } from "../../Common/eval";
import { DefaultBoardBatchCurtailOption } from "../../Editor/DefaultConfig";
import { IBoardBatchCurtailOption, CurtailType } from "../Store/BoardInterface";
import { begin } from "xaop"; import { begin } from "xaop";
import { app } from "../../ApplicationServices/Application";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter";
import { safeEval } from "../../Common/eval";
import { KeyBoard } from "../../Common/KeyEnum"; import { KeyBoard } from "../../Common/KeyEnum";
import { DefaultBoardBatchCurtailOption } from "../../Editor/DefaultConfig";
import '../Css/batchCurtailModal.less';
import { CurtailType, IBoardBatchCurtailOption } from "../Store/BoardInterface";
import { BoardStore } from "../Store/BoardStore";
import { BoardModalType } from "./Board/BoardModal";
import { IConfigOption, UserConfig } from "./Board/UserConfig";
import { GetCompoentObjectIdString } from "./ComponentObjectId"; import { GetCompoentObjectIdString } from "./ComponentObjectId";
import { DataAdapter } from "../../Common/DataAdapter"; import { ModalState } from "./Modal/ModalInterface";
import { ToasterInput, ToasterValueError } from "./Toaster";
export interface IBoardBatchCurtailProps export interface IBoardBatchCurtailProps
{ {
@ -90,12 +90,14 @@ export class BoardBatchCurtailModal extends React.Component<IBoardBatchCurtailPr
right: this.props.store.m_Option.right, right: this.props.store.m_Option.right,
} }
}); });
this.Close(); app.Editor.ModalManage.Destory();
}; };
private Close() private Close = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
} };
private CheckFunc(optKey: string, value: string): string private CheckFunc(optKey: string, value: string): string
{ {
let store = this.props.store; let store = this.props.store;
@ -129,6 +131,8 @@ export class BoardBatchCurtailModal extends React.Component<IBoardBatchCurtailPr
if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space && if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum')))) (el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.Ok(); this.Ok();
else if (e.keyCode === KeyBoard.Escape)
this.Close();
}); });
} }
componentWillUnmount() componentWillUnmount()
@ -227,7 +231,7 @@ export class BoardBatchCurtailModal extends React.Component<IBoardBatchCurtailPr
<Divider /> <Divider />
<div> <div>
<Button intent={Intent.SUCCESS} text="确定" onClick={this.Ok} /> <Button intent={Intent.SUCCESS} text="确定" onClick={this.Ok} />
<Button intent={Intent.DANGER} text="取消" onClick={this.Close} /> <Button style={{ marginLeft: 3 }} intent={Intent.DANGER} text="取消" onClick={this.Close} />
</div> </div>
</footer> </footer>
</div> </div>

@ -2,16 +2,16 @@ import { Button, Checkbox, Classes, Colors, H5, Icon, Intent, UL } from '@bluepr
import { IconNames } from '@blueprintjs/icons'; import { IconNames } from '@blueprintjs/icons';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { begin } from 'xaop';
import { app } from '../../../ApplicationServices/Application'; import { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { KeyBoard } from '../../../Common/KeyEnum';
import { ActivityLayerBoardStore } from '../../Store/ActivityLayerBoardStore'; import { ActivityLayerBoardStore } from '../../Store/ActivityLayerBoardStore';
import { SetBoardDataBlock, SetBoardDataItem } from '../Board/BoardCommon'; import { SetBoardDataBlock, SetBoardDataItem } from '../Board/BoardCommon';
import { BoardModalType } from '../Board/BoardModal'; import { BoardModalType } from '../Board/BoardModal';
import { UserConfig } from '../Board/UserConfig'; import { UserConfig } from '../Board/UserConfig';
import { AppToaster, ToasterInput, ToasterValueError } from '../Toaster';
import { begin } from 'xaop';
import { KeyBoard } from '../../../Common/KeyEnum';
import { GetCompoentObjectIdString } from '../ComponentObjectId'; import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { AppToaster, ToasterInput, ToasterValueError } from '../Toaster';
interface IActivityLayerBoardProps interface IActivityLayerBoardProps
{ {
store: ActivityLayerBoardStore; store: ActivityLayerBoardStore;
@ -34,6 +34,8 @@ export class ActivityLayerBoard extends React.Component<IActivityLayerBoardProps
if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space && if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum')))) (el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.ok(); this.ok();
else if (e.keyCode === KeyBoard.Escape)
this.cancel();
}); });
} }
componentWillUnmount() componentWillUnmount()
@ -299,6 +301,8 @@ export class ActivityLayerBoard extends React.Component<IActivityLayerBoardProps
}; };
private cancel = () => private cancel = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
}; };
} }

@ -177,8 +177,7 @@
} }
} }
&>div>input, input {
&>div>div>input {
width : 30px; width : 30px;
padding : 0 2px; padding : 0 2px;
margin-right: 5px; margin-right: 5px;

@ -1,19 +1,19 @@
import { Button, Card, Classes, Intent, Label, Radio, RadioGroup } from '@blueprintjs/core'; import { Button, Card, Classes, Intent, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observable } from 'mobx'; import { observable } from 'mobx';
import * as React from 'react'; import * as React from 'react';
import { begin } from 'xaop';
import { app } from '../../ApplicationServices/Application'; import { app } from '../../ApplicationServices/Application';
import { CheckObjectType, CheckoutValid } from '../../Common/CheckoutVaildValue'; import { CheckObjectType, CheckoutValid } from '../../Common/CheckoutVaildValue';
import { safeEval } from '../../Common/eval'; import { safeEval } from '../../Common/eval';
import { KeyBoard } from '../../Common/KeyEnum';
import { IndexedDbStore, StoreName } from '../../IndexedDb/IndexedDbStore'; import { IndexedDbStore, StoreName } from '../../IndexedDb/IndexedDbStore';
import '../Css/rotateLyModal.less'; import '../Css/rotateLyModal.less';
import { IBaseOption } from '../Store/BoardInterface';
import { BoardStore } from '../Store/BoardStore'; import { BoardStore } from '../Store/BoardStore';
import { SetBoardDataItem } from './Board/BoardCommon'; import { SetBoardDataItem } from './Board/BoardCommon';
import { GetCompoentObjectIdString } from './ComponentObjectId';
import { ModalState } from './Modal/ModalInterface'; import { ModalState } from './Modal/ModalInterface';
import { AppToaster } from './Toaster'; import { AppToaster } from './Toaster';
import { IBaseOption } from '../Store/BoardInterface';
import { begin } from 'xaop';
import { KeyBoard } from '../../Common/KeyEnum';
import { GetCompoentObjectIdString } from './ComponentObjectId';
export interface IRotateLayerBoardProps export interface IRotateLayerBoardProps
{ {
store: RotateLayerBoardStore; store: RotateLayerBoardStore;
@ -81,12 +81,14 @@ export class RotateLayerBoardModal extends React.Component<IRotateLayerBoardProp
backDist: this.props.store.m_Option.backDist, backDist: this.props.store.m_Option.backDist,
} }
}); });
this.Close(); app.Editor.ModalManage.Destory();
}; };
private Close() private Close = () =>
{ {
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
} };
private Save = async () => private Save = async () =>
{ {
let dbstore = await IndexedDbStore.CADStore(); let dbstore = await IndexedDbStore.CADStore();
@ -110,6 +112,8 @@ export class RotateLayerBoardModal extends React.Component<IRotateLayerBoardProp
if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space && if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum')))) (el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.Ok(); this.Ok();
else if (e.keyCode === KeyBoard.Escape)
this.Close();
}); });
} }
componentWillUnmount() componentWillUnmount()

@ -1,11 +1,11 @@
import { BoardStore } from "./BoardStore";
import { LayerNailOption, IShinkOption, IUiOption, INailRule } from "./BoardInterface";
import { DefaultNailOption } from "../../Editor/DefaultConfig";
import { DataAdapter } from "../../Common/DataAdapter";
import { observable, toJS } from "mobx"; import { observable, toJS } from "mobx";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter";
import { DefaultNailOption } from "../../Editor/DefaultConfig";
import { IConfigOption } from "../Components/Board/UserConfig"; import { IConfigOption } from "../Components/Board/UserConfig";
import { CheckoutValid, CheckObjectType } from "../../Common/CheckoutVaildValue";
import { AppConfirm } from "../Components/Common/Confirm"; import { AppConfirm } from "../Components/Common/Confirm";
import { INailRule, IShinkOption, IUiOption, LayerNailOption } from "./BoardInterface";
import { BoardStore } from "./BoardStore";
export class ActivityLayerBoardStore extends BoardStore<IShinkOption> export class ActivityLayerBoardStore extends BoardStore<IShinkOption>
{ {
@ -112,9 +112,11 @@ export class ActivityLayerBoardStore extends BoardStore<IShinkOption>
Object.assign(this.uiNailOption, DataAdapter.ConvertUIData(this.nailOption)); Object.assign(this.uiNailOption, DataAdapter.ConvertUIData(this.nailOption));
if (this.m_UiOption) if (this.m_UiOption)
Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(option)); Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(option));
if (this.uiRule)
Object.assign(this.uiRule, DataAdapter.ConvertUIData(this.currentRule));
} }
HasInvailValue() HasInvailValue()
{ {
return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.uiNailOption, CheckObjectType.BR); return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.uiNailOption, CheckObjectType.BR) || CheckoutValid.HasInvailValue(this.uiRule, CheckObjectType.BR);
} }
} }

@ -1,12 +1,14 @@
import { BoardStore } from "./BoardStore";
import { IBoardFindOption, ECompareType, DRILL_KEYS } from "./BoardFindInterface";
import { observable, toJS } from "mobx"; import { observable, toJS } from "mobx";
import { IConfigOption } from "../Components/Board/UserConfig";
import { app } from "../../ApplicationServices/Application"; import { app } from "../../ApplicationServices/Application";
import { ModalState } from "../Components/Modal/ModalInterface";
import { EBoardKeyList } from "../../Common/BoardKeyList"; import { EBoardKeyList } from "../../Common/BoardKeyList";
import { userConfig } from "../../Editor/UserConfig"; import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter";
import { DefaultBoardFindOption } from "../../Editor/DefaultConfig"; import { DefaultBoardFindOption } from "../../Editor/DefaultConfig";
import { userConfig } from "../../Editor/UserConfig";
import { IConfigOption } from "../Components/Board/UserConfig";
import { ModalState } from "../Components/Modal/ModalInterface";
import { DRILL_KEYS, ECompareType, IBoardFindOption } from "./BoardFindInterface";
import { BoardStore } from "./BoardStore";
export class BoardFindStore extends BoardStore export class BoardFindStore extends BoardStore
{ {
@ -36,6 +38,8 @@ export class BoardFindStore extends BoardStore
{ {
if ((state === ModalState.Cancel)) if ((state === ModalState.Cancel))
{ {
if (this.HasInvailValue())
this.UpdateOption(this.SaveConfig() as IConfigOption<IBoardFindOption>);
app.Editor.ModalManage.Destory(); app.Editor.ModalManage.Destory();
} }
else else
@ -91,6 +95,8 @@ export class BoardFindStore extends BoardStore
} }
Object.assign(this.m_Option, cof.option); Object.assign(this.m_Option, cof.option);
if (this.m_UiOption)
Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(cof.option));
this.SetDrillType(); this.SetDrillType();
this.CheckIsSelectAll(); this.CheckIsSelectAll();
this.isRevSelect = false; this.isRevSelect = false;
@ -104,6 +110,6 @@ export class BoardFindStore extends BoardStore
} }
HasInvailValue() HasInvailValue()
{ {
return ""; return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.BF);
} }
} }

@ -40,6 +40,7 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
EditorTemplate: TemplateRecord; EditorTemplate: TemplateRecord;
@observable m_Option: T; @observable m_Option: T;
protected m_UiOption: IUiOption<T>; protected m_UiOption: IUiOption<T>;
protected ui_BoardProcessOption: IUiOption<BoardProcessOption>;
readonly title: string; readonly title: string;
@observable m_BoardProcessOption: BoardProcessOption = { ...DefaultBoardProcessOption }; @observable m_BoardProcessOption: BoardProcessOption = { ...DefaultBoardProcessOption };
@observable remarks: [string, string][] = Array.from({ length: 12 }, () => ["", ""]); @observable remarks: [string, string][] = Array.from({ length: 12 }, () => ["", ""]);
@ -117,6 +118,12 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
this.SetRemarks(); this.SetRemarks();
return toJS(this.m_BoardProcessOption); return toJS(this.m_BoardProcessOption);
} }
get UIBoardProcessOption(): IUiOption<BoardProcessOption>
{
if (!this.ui_BoardProcessOption)
this.ui_BoardProcessOption = DataAdapter.ConvertUIData(this.BoardProcessOption);
return this.ui_BoardProcessOption;
}
GetBoardProcessOption(br: Board) GetBoardProcessOption(br: Board)
{ {
this.m_BoardProcessOption[EBoardKeyList.RoomName] = br.BoardProcessOption[EBoardKeyList.RoomName]; this.m_BoardProcessOption[EBoardKeyList.RoomName] = br.BoardProcessOption[EBoardKeyList.RoomName];
@ -195,6 +202,9 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
} }
Object.assign(this.m_BoardProcessOption, cof.processData); Object.assign(this.m_BoardProcessOption, cof.processData);
if (this.ui_BoardProcessOption)
Object.assign(this.ui_BoardProcessOption, DataAdapter.ConvertUIData(cof.processData));
if (cof.autoCutOption) if (cof.autoCutOption)
Object.assign(this.autoCutOption, cof.autoCutOption); Object.assign(this.autoCutOption, cof.autoCutOption);
else else
@ -224,7 +234,9 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
} }
HasInvailValue() HasInvailValue()
{ {
return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.BR) || CheckoutValid.HasInvailValue(this.BoardProcessOption, CheckObjectType.BR); return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.BR)
|| CheckoutValid.HasInvailValue(this.BoardProcessOption, CheckObjectType.BR)
|| CheckoutValid.HasInvailValue(this.ui_BoardProcessOption, CheckObjectType.BR);
} }
InitConfigs() { return null; } InitConfigs() { return null; }
} }
@ -330,6 +342,10 @@ export class TopBottomBoardStore extends BoardStore
if (!cof.processData) return; if (!cof.processData) return;
Object.assign(this.m_BoardProcessOption, cof.processData); Object.assign(this.m_BoardProcessOption, cof.processData);
if (this.ui_BoardProcessOption)
Object.assign(this.ui_BoardProcessOption, DataAdapter.ConvertUIData(cof.processData));
this.UpdateRemarks(cof); this.UpdateRemarks(cof);
this.InitDrillType(); this.InitDrillType();
this.InitRectDrillData(cof.processData.highDrill); this.InitRectDrillData(cof.processData.highDrill);
@ -351,7 +367,8 @@ export class TopBottomBoardStore extends BoardStore
{ {
return CheckoutValid.HasInvailValue(this.TopUiOption, CheckObjectType.BR) return CheckoutValid.HasInvailValue(this.TopUiOption, CheckObjectType.BR)
|| CheckoutValid.HasInvailValue(this.BottomUiOption, CheckObjectType.BR) || CheckoutValid.HasInvailValue(this.BottomUiOption, CheckObjectType.BR)
|| CheckoutValid.HasInvailValue(this.m_BoardProcessOption, CheckObjectType.BR); || CheckoutValid.HasInvailValue(this.m_BoardProcessOption, CheckObjectType.BR)
|| CheckoutValid.HasInvailValue(this.ui_BoardProcessOption, CheckObjectType.BR);
} }
} }
@ -366,6 +383,7 @@ export class BehindBoardStore extends BoardStore<BehindBoardOption>
grooveAddDepth: "0", grooveAddDepth: "0",
knifeRadius: "3", knifeRadius: "3",
}; };
private m_UiGrooveOption: IUiOption<IGrooveOption>;
constructor() constructor()
{ {
super(); super();
@ -374,10 +392,18 @@ export class BehindBoardStore extends BoardStore<BehindBoardOption>
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back; this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
this.m_BoardProcessOption.frontDrill = false; this.m_BoardProcessOption.frontDrill = false;
} }
get UiGrooveOption(): IUiOption<IGrooveOption>
{
if (!this.m_UiGrooveOption)
this.m_UiGrooveOption = DataAdapter.ConvertUIData(this.grooveOption);
return this.m_UiGrooveOption;
}
InitOption() InitOption()
{ {
Object.assign(this.m_Option, DefaultBehindBoardConfig); Object.assign(this.m_Option, DefaultBehindBoardConfig);
super.InitOption(); super.InitOption();
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(this.grooveOption));
this.m_BoardProcessOption[EBoardKeyList.RoomName] = "主卧"; this.m_BoardProcessOption[EBoardKeyList.RoomName] = "主卧";
this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜"; this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜";
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back; this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
@ -400,10 +426,14 @@ export class BehindBoardStore extends BoardStore<BehindBoardOption>
} }
super.UpdateOption(cof); super.UpdateOption(cof);
Object.assign(this.grooveOption, cof.grooveData); Object.assign(this.grooveOption, cof.grooveData);
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(cof.grooveData));
} }
HasInvailValue() HasInvailValue()
{ {
return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.grooveOption, CheckObjectType.BR); return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.grooveOption, CheckObjectType.BR) || CheckoutValid.HasInvailValue(this.m_UiGrooveOption, CheckObjectType.BR);
} }
InitConfigs() InitConfigs()
{ {
@ -496,6 +526,7 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
}; };
@observable layerNailOption: LayerNailOption = Object.assign({}, DefaultNailOption); @observable layerNailOption: LayerNailOption = Object.assign({}, DefaultNailOption);
uiLayerNailOption: IUiOption<LayerNailOption>; uiLayerNailOption: IUiOption<LayerNailOption>;
private m_UiGrooveOption: IUiOption<IGrooveOption>;
constructor() constructor()
{ {
super(); super();
@ -503,6 +534,12 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜"; this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜";
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back; this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
} }
get UiGrooveOption(): IUiOption<IGrooveOption>
{
if (!this.m_UiGrooveOption)
this.m_UiGrooveOption = DataAdapter.ConvertUIData(this.grooveOption);
return this.m_UiGrooveOption;
}
get NailUiOption() get NailUiOption()
{ {
if (!this.uiLayerNailOption) if (!this.uiLayerNailOption)
@ -516,6 +553,8 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
super.InitOption(); super.InitOption();
if (this.uiLayerNailOption) if (this.uiLayerNailOption)
Object.assign(this.uiLayerNailOption, DataAdapter.ConvertUIData(this.layerNailOption)); Object.assign(this.uiLayerNailOption, DataAdapter.ConvertUIData(this.layerNailOption));
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(this.grooveOption));
this.m_BoardProcessOption[EBoardKeyList.RoomName] = "主卧"; this.m_BoardProcessOption[EBoardKeyList.RoomName] = "主卧";
this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜"; this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜";
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back; this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
@ -600,13 +639,15 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
else else
Object.assign(this.grooveOption, cof.grooveData); Object.assign(this.grooveOption, cof.grooveData);
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(cof.grooveData));
if (this.uiLayerNailOption) if (this.uiLayerNailOption)
Object.assign(this.uiLayerNailOption, DataAdapter.ConvertUIData(this.layerNailOption)); Object.assign(this.uiLayerNailOption, DataAdapter.ConvertUIData(this.layerNailOption));
super.UpdateOption(cof); super.UpdateOption(cof);
} }
HasInvailValue() HasInvailValue()
{ {
return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.uiLayerNailOption, CheckObjectType.BR); return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.uiLayerNailOption, CheckObjectType.BR) || CheckoutValid.HasInvailValue(this.m_UiGrooveOption, CheckObjectType.BR);;
} }
} }
@ -621,6 +662,13 @@ export class VerticalBoardStore extends BoardStore<VerticalBoardOption>
grooveAddDepth: "0", grooveAddDepth: "0",
knifeRadius: "3", knifeRadius: "3",
}; };
private m_UiGrooveOption: IUiOption<IGrooveOption>;
get UiGrooveOption(): IUiOption<IGrooveOption>
{
if (!this.m_UiGrooveOption)
this.m_UiGrooveOption = DataAdapter.ConvertUIData(this.grooveOption);
return this.m_UiGrooveOption;
}
SaveConfig() SaveConfig()
{ {
let newConfig = super.SaveConfig(); let newConfig = super.SaveConfig();
@ -637,8 +685,9 @@ export class VerticalBoardStore extends BoardStore<VerticalBoardOption>
knifeRadius: "3", knifeRadius: "3",
}; };
Object.assign(this.grooveOption, grooveOption); Object.assign(this.grooveOption, grooveOption);
super.InitOption(); super.InitOption();
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(this.grooveOption));
} }
UpdateOption(cof: IConfigOption<VerticalBoardOption>) UpdateOption(cof: IConfigOption<VerticalBoardOption>)
{ {
@ -670,6 +719,13 @@ export class VerticalBoardStore extends BoardStore<VerticalBoardOption>
Object.assign(this.grooveOption, cof.grooveData); Object.assign(this.grooveOption, cof.grooveData);
super.UpdateOption(cof); super.UpdateOption(cof);
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(cof.grooveData));
}
HasInvailValue()
{
return super.HasInvailValue() || CheckoutValid.HasInvailValue(this.m_UiGrooveOption, CheckObjectType.BR);;
} }
} }

@ -1,10 +1,11 @@
import { IConfigStore } from "./BoardStore";
import { IR2WROption } from "./WineRackInterface";
import { observable, toJS } from "mobx"; import { observable, toJS } from "mobx";
import { EBoardKeyList } from "../../Common/BoardKeyList"; import { EBoardKeyList } from "../../Common/BoardKeyList";
import { IUiOption } from "./BoardInterface"; import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter"; import { DataAdapter } from "../../Common/DataAdapter";
import { IConfigOption } from "../Components/Board/UserConfig"; import { IConfigOption } from "../Components/Board/UserConfig";
import { IUiOption } from "./BoardInterface";
import { IConfigStore } from "./BoardStore";
import { IR2WROption } from "./WineRackInterface";
export class Rect2WinerackStore implements IConfigStore export class Rect2WinerackStore implements IConfigStore
{ {
@ -56,6 +57,10 @@ export class Rect2WinerackStore implements IConfigStore
if (this.uiOption) if (this.uiOption)
Object.assign(this.uiOption, DataAdapter.ConvertUIData(cof.option)); Object.assign(this.uiOption, DataAdapter.ConvertUIData(cof.option));
} }
HasInvailValue()
{
return CheckoutValid.HasInvailValue(this.uiOption, CheckObjectType.WR);
}
} }

@ -1,4 +1,5 @@
import { action, observable, toJS } from "mobx"; import { action, observable, toJS } from "mobx";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DefaultUpdateInfoOption } from "../../Editor/DefaultConfig"; import { DefaultUpdateInfoOption } from "../../Editor/DefaultConfig";
import { userConfig } from "../../Editor/UserConfig"; import { userConfig } from "../../Editor/UserConfig";
import { IUpdateBoardInfosOption } from "../Components/Board/UpdateBoardInfointerface"; import { IUpdateBoardInfosOption } from "../Components/Board/UpdateBoardInfointerface";
@ -88,6 +89,8 @@ export class UpdateBoardInfosStore extends BoardStore
if (!name) name = this.currentBoardName; if (!name) name = this.currentBoardName;
Object.assign(this.m_Option, this.nameOptionMap.get(name)); Object.assign(this.m_Option, this.nameOptionMap.get(name));
this.currentBoardName = name; this.currentBoardName = name;
if (this.UIOption)
Object.assign(this.UIOption, this.m_Option);
} }
SaveConfig() SaveConfig()
{ {
@ -130,6 +133,10 @@ export class UpdateBoardInfosStore extends BoardStore
} }
this.UpdateBoardName(); this.UpdateBoardName();
} }
HasInvailValue()
{
return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.BF);
}
} }
export const updateBoardInfoStore = new UpdateBoardInfosStore(); export const updateBoardInfoStore = new UpdateBoardInfosStore();

Loading…
Cancel
Save