!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()
{
//如果为空或NaN: 有非法值
let errMsg = (isNaN(safeEval(this.uiOption.gap))) || (isNaN(safeEval(this.uiOption.width))) ? "间隙和宽度值不能为空" : "";
if (errMsg)
ToasterValueError(errMsg);
let errMsg = (isNaN(safeEval(this.uiOption.gap))) || (isNaN(safeEval(this.uiOption.width))) ? "间隙或宽度值错误 " : "";
return errMsg;
};
Cancel()
{
if (this.HasInvailValue())
this.UpdateOption(this.SaveConfig() as IConfigOption<Curve2RecOption>);
app.Editor.ModalManage.Destory();
}
OnOk()
{
let invail = this.HasInvailValue();
if (!invail)
if (invail)
ToasterValueError(invail);
else
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 (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space)
this.props.store.OnOk();
else if (e.keyCode === KeyBoard.Escape)
this.props.store.Cancel();
e.stopPropagation();
return true;
})

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

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

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

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

@ -3,20 +3,40 @@ import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue"
import { DataAdapter } from "../../Common/DataAdapter";
import { DefaultR2bOption } from "../../Editor/DefaultConfig";
import { IConfigOption } from "../../UI/Components/Board/UserConfig";
import { IGrooveOption, IUiOption } from "../../UI/Store/BoardInterface";
import { BoardStore } from "../../UI/Store/BoardStore";
import { updateBoardInfoStore } from "../../UI/Store/UpdateBoardInfoStore";
import { IRec2BrOption } from "./R2bInterface";
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
InitOption()
{
let newOption = { ...DefaultR2bOption };
delete newOption.grooveOption;
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;
if (names.length > 0 && !names.includes(this.m_Option.configName))
@ -26,13 +46,16 @@ export class Rec2BrStore extends BoardStore<IRec2BrOption>
}
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()
{
let newConfig: IConfigOption = {};
this.m_Option.backBrTemplate = null;
newConfig.option = toJS(this.m_Option);
newConfig.grooveData = toJS(this.grooveOption);
return newConfig;
}
UpdateRemarks(cof: IConfigOption<IRec2BrOption>)
@ -73,13 +96,12 @@ export class Rec2BrStore extends BoardStore<IRec2BrOption>
}
else
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.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);
const names = updateBoardInfoStore.configsNames;
if (names.length > 0 && !names.includes(this.m_Option.configName))

@ -21,6 +21,7 @@ export enum CheckObjectType
/**大于0的数字 */
GT0Num = "gt0num",
BMP = "batchmodifypanel",
BF = "boardFind",//查找修改
}
export namespace CheckoutValid
@ -70,6 +71,8 @@ export namespace CheckoutValid
case CheckObjectType.BMP:
errMsg = CheckoutBatchModifyPanel(k, obj[k]);
break;
case CheckObjectType.BF:
errMsg = CheckoutBoardFindOption(k, obj[k]);
default:
break;
}
@ -107,6 +110,8 @@ export namespace CheckoutValid
return CheckoutRec2BrOption(k, v);
case CheckObjectType.BMP:
return CheckoutBatchModifyPanel(k, v);
case CheckObjectType.BF:
return CheckoutBoardFindOption(k, v);
case CheckObjectType.OnlyNumber:
if (!isNum(v))
return "数值不能为空且必须为数字";
@ -164,6 +169,8 @@ export namespace CheckoutValid
case "sealedLeft":
case "sealedRight":
case "divCount":
case "startDist":
case "endDist":
if (typeof v === "string" && v.includes(','))//v类型不是字符串时,这个代码出错了
return "表达式不能有逗号";
if (isNaN(val))
@ -174,8 +181,10 @@ export namespace CheckoutValid
case "spliteHeight":
case "spliteWidth":
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 "";
case "height":
case "width":
@ -323,7 +332,6 @@ export namespace CheckoutValid
case "sealedDown":
case "sealedLeft":
case "sealedRight":
case "knifeRadius":
case "cabinetDeep":
case "cabinetBrThick":
case "backBrThick":
@ -336,6 +344,7 @@ export namespace CheckoutValid
return "";
case "maxThickness":
case "footerThickness":
case "knifeRadius":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (val <= 0)
@ -557,6 +566,7 @@ export namespace CheckoutValid
case "boardThick":
case "brThick2":
case "gripWidth":
case "knifeRadius":
if (!(safeEval(v) > 0))
return "数值必须大于0";
case "followNarrow"://这是个布尔值 不校验它.
@ -571,8 +581,16 @@ export namespace CheckoutValid
}
export function CheckoutLatticeOption(k: string, v: string): string
{
let val = safeEval(v);
switch (k)
{
case "upCut":
case "downCut":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (!(val >= 0))
return "数值必须大于0";
return "";
case "thickness":
case "gripWidth":
case "gripDepth":
@ -586,12 +604,16 @@ export namespace CheckoutValid
case "leftSealed":
case "rightSealed":
case "knifeRad":
case "upCut":
case "downCut":
if (v.includes(','))
return "表达式不能有逗号";
if (safeEval(v) < 0)
return "数值不能小于0";
case "knifeRadius":
if (isNaN(val))
return "数值不能为空且必须为数字";
if (!(val > 0))
return "数值必须大于0";
return "";
default:
if (!(isNum(v)))
{
@ -600,4 +622,40 @@ export namespace CheckoutValid
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,
}
});
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();
}
};
private getModifyValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
@ -123,6 +125,8 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
if (e.keyCode === KeyBoard.Enter || (e.keyCode === KeyBoard.Space &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.Ok();
else if (e.keyCode === KeyBoard.Escape)
this.Close();
});
}
componentWillUnmount()
@ -222,7 +226,7 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
<Divider />
<div>
<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>
</footer>
</div>

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

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

@ -1,20 +1,22 @@
import * as React from 'react';
import { Classes, Button, H5, Checkbox, HTMLSelect, Popover, Card, Intent, Position } from '@blueprintjs/core';
import { Button, Card, Checkbox, Classes, H5, HTMLSelect, Intent, Popover, Position } from '@blueprintjs/core';
import { observable } from 'mobx';
import { inject, observer } from 'mobx-react';
import { BoardFindStore } from '../../Store/BoardFindModifyStore';
import { BoardFindItem, BoardFindSelectItem, MatColorCom, SealDrillCom } from './BoardFindCommon';
import { BoardModalType } from './BoardModal';
import { ModalState } from '../Modal/ModalInterface';
import { EFindType, ECompareType, DRILL_KEYS } from '../../Store/BoardFindInterface';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import * as React from 'react';
import { begin } from 'xaop';
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 { Notes } from './BoardCommon';
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 { BigFaceSelectOption, LineTypeSelectOption, ComposingFaceSelectOption } from '../../../Common/CommonSelectOption';
import { KeyCode } from '../../../Common/KeyEnum';
import { ModalState } from '../Modal/ModalInterface';
import { Notes } from './BoardCommon';
import { BoardFindItem, BoardFindSelectItem, MatColorCom, SealDrillCom } from './BoardFindCommon';
import { BoardModalType } from './BoardModal';
interface IBoardFindState
{
@ -24,6 +26,7 @@ interface IBoardFindState
@inject('store')
@observer
export default class BoardFindModifyModal extends React.Component<{ store?: BoardFindStore; }, IBoardFindState> {
private event: Function;
@observable _brNameList: [string, boolean][] = [
["左侧板", false], ["右侧板", false], ["顶板", false], ["底板", false],
["层板", false], ["背板", false], ["地脚线", false],
@ -36,6 +39,26 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar
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 = () =>
{
const store = this.props.store;
@ -371,7 +394,7 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar
onClick={this.handleApplyBrName}
/>
</div>
</div>
<input
className={Classes.INPUT}
value={this.state.userInputName}

@ -200,7 +200,7 @@ export class BoardModal extends React.Component<BoardModalProps, {}>
{
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 className={Classes.CARD}>
<Notes remarks={this.props.store.remarks} />

@ -18,7 +18,7 @@ import { CommandWrap } from '../../../Editor/CommandMachine';
import { PromptStatus } from '../../../Editor/PromptResult';
import { TempEditor } from '../../../Editor/TempEditor';
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 "../Modal/ModalStyle/BoardProcessModal.less";
import { RightTabId } from '../RightPanel/RightPanel';
@ -28,6 +28,7 @@ import { DrillTypeSelectCom, Input5Or4Component, SetBoardDataBlock, SetBoardData
interface BoardProcessProps
{
opt: BoardProcessOption;
uiOpt?: IUiOption<BoardProcessOption>;
isSpecial?: IObservableValue<boolean>;
br?: Board;
drillOption?: IHightDrillOption;
@ -406,6 +407,7 @@ export class BoardProcessModal extends React.Component<BoardProcessProps, {}>{
leftKey="sealedLeft"
rightKey="sealedRight"
option={this.props.opt}
uiOption={this.props.uiOpt}
isShowEditor={true}
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 { SetBoardDataItem, Input5Or4Component } from '../BoardCommon';
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 { observable, action } from 'mobx';
import { observer } from 'mobx-react';
import { ToasterInput, AppToaster } from '../../Toaster';
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
{
@ -38,6 +38,7 @@ export class UpDownSpaceComponent extends React.Component<IUpDownSpaceComponentP
type={CheckObjectType.Do}
optKey="upOffsetExpr"
option={store.m_Option}
uiOption={store.UIOption}
isUpper
title="上留空"
onBlur={this.handleTBOffsetBlur}
@ -58,6 +59,7 @@ export class UpDownSpaceComponent extends React.Component<IUpDownSpaceComponentP
type={CheckObjectType.Do}
optKey="downOffsetExpr"
option={store.m_Option}
uiOption={store.UIOption}
title="下留空"
onBlur={this.handleTBOffsetBlur}
>

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

@ -31,6 +31,7 @@ export const LayerBoardModal =
pars={m_ScaleParameter}
option={props.store.grooveOption}
className="flexWrap"
uiOption={props.store.UiGrooveOption}
/>
</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 { CommonModal } from '../Modal/ModalContainer';
import { end } from 'xaop';
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 { BoardModalType } from './BoardModal';
import { end } from 'xaop';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { KeyBoard } from '../../../Common/KeyEnum';
import { observer } from 'mobx-react';
import { Rect2WinerackStore } from '../../Store/Rect2WinerackStore';
import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { CommonModal } from '../Modal/ModalContainer';
import { AppToaster, ToasterInput } from '../Toaster';
import { BoardModalType } from './BoardModal';
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) =>
{
app.Editor.ModalManage.stopKeyDownEvent = true;
if (GetCompoentObjectIdString(Rect2Winerack) !== app.Editor.ModalManage.CurrentModalKey) return;
if (e.keyCode === KeyBoard.Enter || e.keyCode === KeyBoard.Space)
{
this.ok();
e.preventDefault();
}
else if (e.keyCode === KeyBoard.Escape)
{
this.cancel();
e.preventDefault();
}
e.stopPropagation();
return true;
});
}
componentWillUnmount()
{
app.Editor.ModalManage.stopKeyDownEvent = false;
this.event();
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 }}>
<Label>
<span style={{ width: 70 }}>:</span>
@ -126,16 +133,25 @@ export class Rect2Winerack extends React.Component<IRect2WinerackProps> {
</CommonModal>
);
}
private handleKeydown = (e: React.KeyboardEvent<HTMLDivElement>) =>
{
console.log(e.keyCode);
};
private ok = () =>
{
let error = this.props.store.HasInvailValue();
if (error)
{
AppToaster.show({
message: error,
timeout: 3000,
intent: "danger",
});
return;
}
app.Editor.ModalManage.DestoryAndExec();
};
private cancel = () =>
{
if (this.props.store.HasInvailValue())
this.props.store.UpdateOption(this.props.store.SaveConfig());
app.Editor.ModalManage.Destory();
};
}

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

@ -1,17 +1,19 @@
import { Button, Classes } from '@blueprintjs/core';
import { observer } from 'mobx-react';
import * as React from 'react';
import { begin } from 'xaop';
import { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { KeyBoard } from '../../../Common/KeyEnum';
import { BoardConfigOption } from '../../Store/BoardInterface';
import { SpecialShapeStore } from '../../Store/BoardStore';
import { BoardTypeComponent, Notes, SetBoardDataBlock, ItemName, SetBoardDataItem } from './BoardCommon';
import { BoardProcessModal } from './BoardProcessModal';
import { ToasterValueError } from '../Toaster';
import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { CommonModal } from '../Modal/ModalContainer';
import { ToasterValueError } from '../Toaster';
import { BoardTypeComponent, ItemName, Notes, SetBoardDataBlock, SetBoardDataItem } from './BoardCommon';
import { BoardModalType } from './BoardModal';
import { begin } from 'xaop';
import { KeyBoard } from '../../../Common/KeyEnum';
import { GetCompoentObjectIdString } from '../ComponentObjectId';
import { BoardProcessModal } from './BoardProcessModal';
import { IConfigOption } from './UserConfig';
@observer
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 &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.ok();
else if (e.keyCode === KeyBoard.Escape)
this.cancel();
});
}
componentWillUnmount()
@ -62,7 +66,7 @@ export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShap
onClick={this.ok}
/>
<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}
pars={this.splitePars}
option={store.m_BoardProcessOption}
uiOption={store.UIBoardProcessOption}
isInline={true}
className="lr-br"
/>
</div>
<div className={Classes.CARD}>
<h6 className={Classes.HEADING}></h6>
<BoardProcessModal opt={store.m_BoardProcessOption} />
<BoardProcessModal opt={store.m_BoardProcessOption} uiOpt={store.UIBoardProcessOption} />
</div>
<div className={Classes.CARD}>
<Notes remarks={store.remarks} />
@ -117,4 +122,10 @@ export class SpecialShapeBoardModal extends React.Component<{ store: SpecialShap
}
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 * as React from 'react';
import { hot } from 'react-hot-loader/root';
import { begin } from 'xaop';
import { app } from '../../../ApplicationServices/Application';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { BigFaceSelectOption, ComposingFaceSelectOption, LineTypeSelectOption } from '../../../Common/CommonSelectOption';
import { KeyBoard } from '../../../Common/KeyEnum';
import { Board } from '../../../DatabaseServices/Entity/Board';
import { CommandWrap } from '../../../Editor/CommandMachine';
import { PromptStatus } from '../../../Editor/PromptResult';
@ -17,7 +19,7 @@ import { InputSelect } from '../Common';
import { PopoverButton } from '../Common/PopoverButton';
import { CommonModal } from '../Modal/ModalContainer';
import { ModalState } from '../Modal/ModalInterface';
import { ToasterInput } from '../Toaster';
import { AppToaster, ToasterInput } from '../Toaster';
import { AutoCutCheckbox, Notes } from './BoardCommon';
import { MatColorCom, SealDrillCom } from './BoardFindCommon';
import { BoardModalType } from './BoardModal';
@ -38,6 +40,27 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
[EBoardKeyList.ComposingFace]: ComposingFaceSelectOption,
[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()
{
const store = this.props.store;
@ -55,7 +78,7 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
<CommonModal
className="update-board"
title="根据板件名修改属性"
close={() => { app.Editor.ModalManage.Destory(); }}
close={() => { this.Cancle(); }}
store={store}
type={BoardModalType.UpdateBoardInfo}
isImpExp
@ -67,13 +90,13 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
text="单类板件修改"
data-isAll=""
intent={Intent.SUCCESS}
onClick={this.ok}
onClick={this.OK}
/>
<Button
text="修改"
intent={Intent.SUCCESS}
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]}
/>
<ToasterInput
type={CheckObjectType.BR}
type={CheckObjectType.BF}
optKey={k}
option={option}
uiOption={store.UIOption}
/>
</div>
);
@ -216,9 +240,10 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
onChange={() => condition[EBoardKeyList.KnifeRad] = !condition[EBoardKeyList.KnifeRad]}
/>
<ToasterInput
type={CheckObjectType.BR}
type={CheckObjectType.BF}
optKey={EBoardKeyList.KnifeRad}
option={option}
uiOption={store.UIOption}
/>
</div>
</div>
@ -243,17 +268,33 @@ export class UpdateBoardInfoModal extends React.Component<IUpdateBoardInfoModalP
onChange={() => condition.remarks = !condition.remarks}
/>
<Notes remarks={option.remarks} />
</div>
</Card>
</CommonModal>
</div >
</Card >
</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');
this.props.store.UpdateCurrentOption();
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 = () =>
{
const store = this.props.store;

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

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

@ -1,22 +1,22 @@
import React = require("react");
import '../Css/batchCurtailModal.less';
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 { Button, Card, Checkbox, Classes, Divider, H5, Intent, Label, Radio, RadioGroup } from "@blueprintjs/core";
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 { safeEval } from "../../Common/eval";
import { DefaultBoardBatchCurtailOption } from "../../Editor/DefaultConfig";
import { IBoardBatchCurtailOption, CurtailType } from "../Store/BoardInterface";
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 { 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 { DataAdapter } from "../../Common/DataAdapter";
import { ModalState } from "./Modal/ModalInterface";
import { ToasterInput, ToasterValueError } from "./Toaster";
export interface IBoardBatchCurtailProps
{
@ -90,12 +90,14 @@ export class BoardBatchCurtailModal extends React.Component<IBoardBatchCurtailPr
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();
}
};
private CheckFunc(optKey: string, value: string): string
{
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 &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.Ok();
else if (e.keyCode === KeyBoard.Escape)
this.Close();
});
}
componentWillUnmount()
@ -227,7 +231,7 @@ export class BoardBatchCurtailModal extends React.Component<IBoardBatchCurtailPr
<Divider />
<div>
<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>
</footer>
</div>

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

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

@ -1,19 +1,19 @@
import { Button, Card, Classes, Intent, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observable } from 'mobx';
import * as React from 'react';
import { begin } from 'xaop';
import { app } from '../../ApplicationServices/Application';
import { CheckObjectType, CheckoutValid } from '../../Common/CheckoutVaildValue';
import { safeEval } from '../../Common/eval';
import { KeyBoard } from '../../Common/KeyEnum';
import { IndexedDbStore, StoreName } from '../../IndexedDb/IndexedDbStore';
import '../Css/rotateLyModal.less';
import { IBaseOption } from '../Store/BoardInterface';
import { BoardStore } from '../Store/BoardStore';
import { SetBoardDataItem } from './Board/BoardCommon';
import { GetCompoentObjectIdString } from './ComponentObjectId';
import { ModalState } from './Modal/ModalInterface';
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
{
store: RotateLayerBoardStore;
@ -81,12 +81,14 @@ export class RotateLayerBoardModal extends React.Component<IRotateLayerBoardProp
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();
}
};
private Save = async () =>
{
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 &&
(el.nodeName !== "INPUT" || el.type !== "text" || !el.getAttribute('data-isNum'))))
this.Ok();
else if (e.keyCode === KeyBoard.Escape)
this.Close();
});
}
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 { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter";
import { DefaultNailOption } from "../../Editor/DefaultConfig";
import { IConfigOption } from "../Components/Board/UserConfig";
import { CheckoutValid, CheckObjectType } from "../../Common/CheckoutVaildValue";
import { AppConfirm } from "../Components/Common/Confirm";
import { INailRule, IShinkOption, IUiOption, LayerNailOption } from "./BoardInterface";
import { BoardStore } from "./BoardStore";
export class ActivityLayerBoardStore extends BoardStore<IShinkOption>
{
@ -112,9 +112,11 @@ export class ActivityLayerBoardStore extends BoardStore<IShinkOption>
Object.assign(this.uiNailOption, DataAdapter.ConvertUIData(this.nailOption));
if (this.m_UiOption)
Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(option));
if (this.uiRule)
Object.assign(this.uiRule, DataAdapter.ConvertUIData(this.currentRule));
}
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 { IConfigOption } from "../Components/Board/UserConfig";
import { app } from "../../ApplicationServices/Application";
import { ModalState } from "../Components/Modal/ModalInterface";
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 { 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
{
@ -36,6 +38,8 @@ export class BoardFindStore extends BoardStore
{
if ((state === ModalState.Cancel))
{
if (this.HasInvailValue())
this.UpdateOption(this.SaveConfig() as IConfigOption<IBoardFindOption>);
app.Editor.ModalManage.Destory();
}
else
@ -91,6 +95,8 @@ export class BoardFindStore extends BoardStore
}
Object.assign(this.m_Option, cof.option);
if (this.m_UiOption)
Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(cof.option));
this.SetDrillType();
this.CheckIsSelectAll();
this.isRevSelect = false;
@ -104,6 +110,6 @@ export class BoardFindStore extends BoardStore
}
HasInvailValue()
{
return "";
return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.BF);
}
}

@ -40,6 +40,7 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
EditorTemplate: TemplateRecord;
@observable m_Option: T;
protected m_UiOption: IUiOption<T>;
protected ui_BoardProcessOption: IUiOption<BoardProcessOption>;
readonly title: string;
@observable m_BoardProcessOption: BoardProcessOption = { ...DefaultBoardProcessOption };
@observable remarks: [string, string][] = Array.from({ length: 12 }, () => ["", ""]);
@ -117,6 +118,12 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
this.SetRemarks();
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)
{
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);
if (this.ui_BoardProcessOption)
Object.assign(this.ui_BoardProcessOption, DataAdapter.ConvertUIData(cof.processData));
if (cof.autoCutOption)
Object.assign(this.autoCutOption, cof.autoCutOption);
else
@ -224,7 +234,9 @@ export class BoardStore<T = IBaseOption> extends Singleton implements IConfigSto
}
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; }
}
@ -330,6 +342,10 @@ export class TopBottomBoardStore extends BoardStore
if (!cof.processData) return;
Object.assign(this.m_BoardProcessOption, cof.processData);
if (this.ui_BoardProcessOption)
Object.assign(this.ui_BoardProcessOption, DataAdapter.ConvertUIData(cof.processData));
this.UpdateRemarks(cof);
this.InitDrillType();
this.InitRectDrillData(cof.processData.highDrill);
@ -351,7 +367,8 @@ export class TopBottomBoardStore extends BoardStore
{
return CheckoutValid.HasInvailValue(this.TopUiOption, 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",
knifeRadius: "3",
};
private m_UiGrooveOption: IUiOption<IGrooveOption>;
constructor()
{
super();
@ -374,10 +392,18 @@ export class BehindBoardStore extends BoardStore<BehindBoardOption>
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
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()
{
Object.assign(this.m_Option, DefaultBehindBoardConfig);
super.InitOption();
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(this.grooveOption));
this.m_BoardProcessOption[EBoardKeyList.RoomName] = "主卧";
this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜";
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
@ -400,10 +426,14 @@ export class BehindBoardStore extends BoardStore<BehindBoardOption>
}
super.UpdateOption(cof);
Object.assign(this.grooveOption, cof.grooveData);
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(cof.grooveData));
}
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()
{
@ -496,6 +526,7 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
};
@observable layerNailOption: LayerNailOption = Object.assign({}, DefaultNailOption);
uiLayerNailOption: IUiOption<LayerNailOption>;
private m_UiGrooveOption: IUiOption<IGrooveOption>;
constructor()
{
super();
@ -503,6 +534,12 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
this.m_BoardProcessOption[EBoardKeyList.CabinetName] = "下柜";
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()
{
if (!this.uiLayerNailOption)
@ -516,6 +553,8 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
super.InitOption();
if (this.uiLayerNailOption)
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.CabinetName] = "下柜";
this.m_BoardProcessOption[EBoardKeyList.BigHole] = FaceDirection.Back;
@ -600,13 +639,15 @@ export class LayerBoardStore extends BoardStore<LayerBoardOption>
else
Object.assign(this.grooveOption, cof.grooveData);
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(cof.grooveData));
if (this.uiLayerNailOption)
Object.assign(this.uiLayerNailOption, DataAdapter.ConvertUIData(this.layerNailOption));
super.UpdateOption(cof);
}
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",
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()
{
let newConfig = super.SaveConfig();
@ -637,8 +685,9 @@ export class VerticalBoardStore extends BoardStore<VerticalBoardOption>
knifeRadius: "3",
};
Object.assign(this.grooveOption, grooveOption);
super.InitOption();
if (this.m_UiGrooveOption)
Object.assign(this.m_UiGrooveOption, DataAdapter.ConvertUIData(this.grooveOption));
}
UpdateOption(cof: IConfigOption<VerticalBoardOption>)
{
@ -670,6 +719,13 @@ export class VerticalBoardStore extends BoardStore<VerticalBoardOption>
Object.assign(this.grooveOption, cof.grooveData);
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 { EBoardKeyList } from "../../Common/BoardKeyList";
import { IUiOption } from "./BoardInterface";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter";
import { IConfigOption } from "../Components/Board/UserConfig";
import { IUiOption } from "./BoardInterface";
import { IConfigStore } from "./BoardStore";
import { IR2WROption } from "./WineRackInterface";
export class Rect2WinerackStore implements IConfigStore
{
@ -56,6 +57,10 @@ export class Rect2WinerackStore implements IConfigStore
if (this.uiOption)
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 { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DefaultUpdateInfoOption } from "../../Editor/DefaultConfig";
import { userConfig } from "../../Editor/UserConfig";
import { IUpdateBoardInfosOption } from "../Components/Board/UpdateBoardInfointerface";
@ -88,6 +89,8 @@ export class UpdateBoardInfosStore extends BoardStore
if (!name) name = this.currentBoardName;
Object.assign(this.m_Option, this.nameOptionMap.get(name));
this.currentBoardName = name;
if (this.UIOption)
Object.assign(this.UIOption, this.m_Option);
}
SaveConfig()
{
@ -130,6 +133,10 @@ export class UpdateBoardInfosStore extends BoardStore
}
this.UpdateBoardName();
}
HasInvailValue()
{
return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.BF);
}
}
export const updateBoardInfoStore = new UpdateBoardInfosStore();

Loading…
Cancel
Save