!1681 新增:收口条,单板,层板,左右侧板,板件属性界面等添加尺寸拾取功能

pull/1720/head
黄诗津 3 years ago committed by ChenX
parent 83690b5e3b
commit 9c98cdd38f

@ -7,6 +7,7 @@ import { app } from "../../ApplicationServices/Application";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue"; import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter"; import { DataAdapter } from "../../Common/DataAdapter";
import { KeyBoard } from "../../Common/KeyEnum"; import { KeyBoard } from "../../Common/KeyEnum";
import { FixedNotZero } from "../../Common/Utils";
import { Board } from "../../DatabaseServices/Entity/Board"; import { Board } from "../../DatabaseServices/Entity/Board";
import { DefaultBatchModifyPanelOption } from "../../Editor/DefaultConfig"; import { DefaultBatchModifyPanelOption } from "../../Editor/DefaultConfig";
import { PromptStatus } from "../../Editor/PromptResult"; import { PromptStatus } from "../../Editor/PromptResult";
@ -86,13 +87,9 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
if (distRes.Status === PromptStatus.OK) if (distRes.Status === PromptStatus.OK)
{ {
const store = this.props.store; const store = this.props.store;
let dist = distRes.Distance; let dist = Math.abs(distRes.Distance);
if (optKey === "length") if (dist !== 0)
store.m_Option.length = dist.toFixed(2); store.m_Option[optKey] = FixedNotZero(dist, 2);
else if (optKey === "width")
store.m_Option.width = dist.toFixed(2);
else if (optKey === "thick")
store.m_Option.thick = dist.toFixed(2);
store.UpdateOption({ option: toJS(store.m_Option) }); store.UpdateOption({ option: toJS(store.m_Option) });
} }
app.Editor.ModalManage.ToggleShow(); app.Editor.ModalManage.ToggleShow();

@ -1,11 +1,14 @@
import { Classes, Radio, RadioGroup } from '@blueprintjs/core'; import { Button, Classes, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observable } from 'mobx'; 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 { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { FixedNotZero } from '../../../Common/Utils';
import { PromptStatus } from '../../../Editor/PromptResult';
import { BehindHeightPositon, BrRelativePos } from '../../Store/BoardInterface'; import { BehindHeightPositon, BrRelativePos } from '../../Store/BoardInterface';
import { BehindBoardStore } from '../../Store/BoardStore'; import { BehindBoardStore } from '../../Store/BoardStore';
import { BoardDirectionIcon, ItemName, SetBoardDataBlock, SetBoardDataItem, BoardRePosBlock } from './BoardCommon'; import { BoardDirectionIcon, BoardRePosBlock, ItemName, SetBoardDataBlock, SetBoardDataItem } from './BoardCommon';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
@observer @observer
export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore; }, {}> export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore; }, {}>
@ -76,23 +79,41 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
<Radio label="靠上" value={BehindHeightPositon.ForTop} /> <Radio label="靠上" value={BehindHeightPositon.ForTop} />
<Radio label="靠下" value={BehindHeightPositon.ForBottom} /> <Radio label="靠下" value={BehindHeightPositon.ForBottom} />
</RadioGroup> </RadioGroup>
<div className="flexWrap"> <div >
<SetBoardDataItem <div className="pick-br">
type={CheckObjectType.BR} <Label >
optKey="calcHeight" <SetBoardDataItem
option={store.m_Option} type={CheckObjectType.BR}
uiOption={store.UIOption} optKey="calcHeight"
title="板高" option={store.m_Option}
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight} uiOption={store.UIOption}
/> title="板高"
<SetBoardDataItem isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
type={CheckObjectType.BR} />
optKey="calcMoveDist" <Button
option={store.m_Option} icon="arrow-right"
uiOption={store.UIOption} onClick={() => this.getSizeValue("calcHeight")}
title={this.moveDir} disabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight} />
/> </Label>
</div>
<div className="pick-br">
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey="calcMoveDist"
option={store.m_Option}
uiOption={store.UIOption}
title={this.moveDir}
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
<Button
icon="arrow-right"
onClick={() => this.getSizeValue("calcMoveDist")}
disabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
</Label>
</div>
</div> </div>
</div> </div>
<BoardRePosBlock <BoardRePosBlock
@ -140,4 +161,20 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
</> </>
); );
} }
private getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist = distRes.Distance;
this.props.store.m_Option[optKey] = FixedNotZero(dist, 2);
this.props.store.UIOption[optKey] = FixedNotZero(dist, 2);
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
} }

@ -1,12 +1,13 @@
import { Button, Checkbox, Classes, HTMLSelect, Intent, Radio, RadioGroup } from '@blueprintjs/core'; import { Button, Checkbox, Classes, HTMLSelect, Intent, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
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 { safeEval } from '../../../Common/eval'; import { safeEval } from '../../../Common/eval';
import { GetEntity } from '../../../Common/Utils'; import { FixedNotZero, GetEntity } from '../../../Common/Utils';
import { Board } from '../../../DatabaseServices/Entity/Board'; import { Board } from '../../../DatabaseServices/Entity/Board';
import { PromptStatus } from '../../../Editor/PromptResult';
import { TempEditor } from '../../../Editor/TempEditor'; import { TempEditor } from '../../../Editor/TempEditor';
import { userConfig } from '../../../Editor/UserConfig'; import { userConfig } from '../../../Editor/UserConfig';
import { AnyObject, BoardConfigOption, BoardProcessOption, BoardType, BrRelativePos, DrillType, IBaseOption, IDrawBoardAutoCutOption, IHightDrillOption, IUiOption, TBBoardOption } from '../../Store/BoardInterface'; import { AnyObject, BoardConfigOption, BoardProcessOption, BoardType, BrRelativePos, DrillType, IBaseOption, IDrawBoardAutoCutOption, IHightDrillOption, IUiOption, TBBoardOption } from '../../Store/BoardInterface';
@ -51,6 +52,7 @@ interface ISetBlockOption
} }
interface TBProps interface TBProps
{ {
par: string[][];
pars: string[][]; pars: string[][];
option: TBBoardOption; option: TBBoardOption;
uiOption: Object; uiOption: Object;
@ -114,6 +116,22 @@ export const SetBoardDataBlock = observer(
export const TBBoardDataBlock = observer( export const TBBoardDataBlock = observer(
(props: TBProps) => (props: TBProps) =>
{ {
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist = distRes.Distance;
props.option[optKey] = parseFloat(dist.toFixed(2));
(props.uiOption as TBBoardOption)[optKey] = parseFloat(dist.toFixed(2));
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
return ( return (
<div className="pt-card pt-elevation-0 tb-br"> <div className="pt-card pt-elevation-0 tb-br">
<Checkbox <Checkbox
@ -135,27 +153,52 @@ export const TBBoardDataBlock = observer(
<Radio className="widthHalf" label={props.istop ? "侧包顶" : "侧包底"} value="0" /> <Radio className="widthHalf" label={props.istop ? "侧包顶" : "侧包底"} value="0" />
<Radio className="widthHalf" label={props.istop ? "顶包侧" : "底包侧"} value="1" /> <Radio className="widthHalf" label={props.istop ? "顶包侧" : "底包侧"} value="1" />
</RadioGroup> </RadioGroup>
<div className="flexWrap"> <div >
{ <>
props.pars.map(([k, v]) => <div className="pick-br">
{ {
if (k === "offset" && !props.istop) props.par.map(([k, v]) =>
v = "下留"; {
return ( if (k === "offset" && !props.istop)
<SetBoardDataItem v = "下留";
type={CheckObjectType.BR} return (
title={v} <Label >
optKey={k} <SetBoardDataItem
key={k} type={CheckObjectType.BR}
option={props.option} optKey={k}
uiOption={props.uiOption} option={props.option}
isDisabled={ uiOption={props.uiOption}
((k === "rightExt" || k === "leftExt") && !props.option.isWrapSide) || title={v}
(k === "offset" && props.option.isWrapSide) isDisabled={k === "offset" && props.option.isWrapSide}
} /> />
); <Button
}) icon="arrow-right"
} onClick={() => getSizeValue(k)}
disabled={k === "offset" && props.option.isWrapSide}
/>
</Label>
);
})}
</div>
<div className="flexWrap">
{
props.pars.map(([k, v]) =>
{
return (
<SetBoardDataItem
type={CheckObjectType.BR}
title={v}
optKey={k}
key={k}
option={props.option}
uiOption={props.uiOption}
isDisabled={(k === "rightExt" || k === "leftExt") && !props.option.isWrapSide}
/>
);
})}
</div>
</>
</div> </div>
</div> </div>
); );
@ -181,8 +224,7 @@ interface BroadPosProps
@observer @observer
export class BoardRePosBlock extends React.Component<BroadPosProps> { export class BoardRePosBlock extends React.Component<BroadPosProps> {
private pars = private pars = [["calcSpaceSize", "空间"], ["thickness", "板厚"]];
[["calcSpaceSize", "空间"], ["count", "板数"], ["thickness", "板厚"]];
private spaceSizeInputEl: HTMLInputElement; private spaceSizeInputEl: HTMLInputElement;
private countInputEl: HTMLInputElement; private countInputEl: HTMLInputElement;
private updateFocus = (k: string) => private updateFocus = (k: string) =>
@ -224,6 +266,34 @@ export class BoardRePosBlock extends React.Component<BroadPosProps> {
} }
}, 0); }, 0);
}; };
private getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let option = this.props.option;
let uiOption = this.props.uiOption;
let dist: number;
if (optKey === "calcSpaceSize")
{
dist = distRes.Distance;
option.calcSpaceSize = dist.toFixed(2);
uiOption.calcSpaceSize = FixedNotZero(dist, 2);
}
else if (optKey === "thickness")
{
dist = Math.abs(distRes.Distance);
option.thickness = parseFloat(dist.toFixed(2));
uiOption.thickness = option.thickness.toString();
}
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
componentDidMount() componentDidMount()
{ {
setTimeout(() => setTimeout(() =>
@ -249,28 +319,47 @@ export class BoardRePosBlock extends React.Component<BroadPosProps> {
} }
<Radio label="等分" value={BrRelativePos.Div} /> <Radio label="等分" value={BrRelativePos.Div} />
</RadioGroup> </RadioGroup>
<div className="flexWrap"> <div >
{ <div className="pick-br">
this.pars.map(([k, v]) => {
<SetBoardDataItem this.pars.map(([k, v]) =>
inputRef={el => <Label>
{ <SetBoardDataItem
if (k === "calcSpaceSize") inputRef={el =>
this.spaceSizeInputEl = el; {
else if (k === 'count') if (k === "calcSpaceSize")
this.countInputEl = el; this.spaceSizeInputEl = el;
}} }}
type={CheckObjectType.BR} type={CheckObjectType.BR}
key={k} key={k}
optKey={k} optKey={k}
uiOption={this.props.uiOption} uiOption={this.props.uiOption}
option={this.props.option} option={this.props.option}
title={v} title={v}
isDisabled={(k === "calcSpaceSize" && this.props.option.boardRelative === BrRelativePos.Div)} isDisabled={(k === "calcSpaceSize" && this.props.option.boardRelative === BrRelativePos.Div)}
mounted={() => this.updateFocus(k)} mounted={() => this.updateFocus(k)}
/> />
) <Button
} icon="arrow-right"
onClick={() => this.getSizeValue(k)}
disabled={(k === "calcSpaceSize" && this.props.option.boardRelative === BrRelativePos.Div)}
/>
</Label>
)
}
</div>
<div>
<SetBoardDataItem
inputRef={el => { this.countInputEl = el; }}
type={CheckObjectType.BR}
key={"count"}
optKey={"count"}
uiOption={this.props.uiOption}
option={this.props.option}
title={"数量"}
mounted={() => this.updateFocus("count")}
/>
</div>
</div> </div>
</div> </div>
); );

@ -1,4 +1,4 @@
import { Button, Checkbox, Intent } from "@blueprintjs/core"; import { Button, Checkbox, Intent, Label } from "@blueprintjs/core";
import { IObservableValue } from "mobx"; import { IObservableValue } from "mobx";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import * as React from 'react'; import * as React from 'react';
@ -20,6 +20,7 @@ import { Polyline } from "../../../DatabaseServices/Entity/Polyline";
import { Region } from "../../../DatabaseServices/Entity/Region"; import { Region } from "../../../DatabaseServices/Entity/Region";
import { CommandWrap } from "../../../Editor/CommandMachine"; import { CommandWrap } from "../../../Editor/CommandMachine";
import { JigUtils } from "../../../Editor/JigUtils"; import { JigUtils } from "../../../Editor/JigUtils";
import { PromptStatus } from "../../../Editor/PromptResult";
import { SelectBox, SelectType } from "../../../Editor/SelectBox"; import { SelectBox, SelectType } from "../../../Editor/SelectBox";
import { CreateContours } from "../../../Geometry/CreateContour2"; import { CreateContours } from "../../../Geometry/CreateContour2";
import { ContourTreeNode } from "../../../Geometry/ExtrudeEdgeGeometry2"; import { ContourTreeNode } from "../../../Geometry/ExtrudeEdgeGeometry2";
@ -29,7 +30,7 @@ import { RightPanelStore } from "../../Store/RightPanelStore/RightPanelStore";
import { RightTabId } from "../RightPanel/RightPanel"; import { RightTabId } from "../RightPanel/RightPanel";
import { AppToaster } from "../Toaster"; import { AppToaster } from "../Toaster";
import { TempEditor } from './../../../Editor/TempEditor'; import { TempEditor } from './../../../Editor/TempEditor';
import { BoardTypeComponent, ItemName, SetBoardDataBlock } from "./BoardCommon"; import { BoardTypeComponent, ItemName, SetBoardDataBlock, SetBoardDataItem } from "./BoardCommon";
import { LastExtractBoardContour } from "./LastExtractBoardContour"; import { LastExtractBoardContour } from "./LastExtractBoardContour";
interface BoardConfigProps interface BoardConfigProps
@ -80,13 +81,25 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
<div> <div>
<BoardTypeComponent opt={boardConfig} className="long-select" /> <BoardTypeComponent opt={boardConfig} className="long-select" />
<ItemName title="板名称" opt={boardConfig} className="br-name" /> <ItemName title="板名称" opt={boardConfig} className="br-name" />
<SetBoardDataBlock <div className="pick-br">
type={CheckObjectType.BR} {
className="flexWrap" this.pars.map(([k, v]) =>
pars={this.pars} <Label >
option={boardConfig} <SetBoardDataItem
uiOption={this.props.uiBoardConfig} type={CheckObjectType.BR}
/> optKey={k}
option={boardConfig}
uiOption={this.props.uiBoardConfig}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => this.getSizeValue(k)}
/>
</Label>
)
}
</div>
<SetBoardDataBlock <SetBoardDataBlock
type={CheckObjectType.BR} type={CheckObjectType.BR}
className="flexWrap" className="flexWrap"
@ -165,6 +178,30 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
</div> </div>
); );
} }
/**
*
*/
private getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入",
});
if (distRes.Status === PromptStatus.OK)
{
let dist = Math.abs(distRes.Distance);
if (dist !== 0)
{
let boardConfig = this.props.boardConfig;
let uiBoardConfig = this.props.uiBoardConfig;
boardConfig[optKey] = parseFloat(dist.toFixed(2));
uiBoardConfig[optKey] = parseFloat(dist.toFixed(2));
}
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
/** /**
* *
*/ */

@ -1,12 +1,14 @@
import { Button, Checkbox, Classes, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { ClosingStripStore } from '../../Store/BoardStore'; import { app } from '../../../ApplicationServices/Application';
import { Classes, RadioGroup, Radio, Checkbox } from '@blueprintjs/core';
import { BrRelativePos, StripType } from '../../Store/BoardInterface';
import { SetBoardDataBlock } from './BoardCommon';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { EBoardKeyList } from '../../../Common/BoardKeyList'; import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { ClosingStripReg } from '../../../Common/Utils'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { ClosingStripReg, FixedNotZero } from '../../../Common/Utils';
import { PromptStatus } from '../../../Editor/PromptResult';
import { BrRelativePos, StripType } from '../../Store/BoardInterface';
import { ClosingStripStore } from '../../Store/BoardStore';
import { SetBoardDataItem } from './BoardCommon';
export const ClosingStripModal = export const ClosingStripModal =
@ -18,6 +20,30 @@ export const ClosingStripModal =
let pars = [["width", "宽度"], ["thickness", "厚度"], ["frontShrink", "前缩"]]; let pars = [["width", "宽度"], ["thickness", "厚度"], ["frontShrink", "前缩"]];
let pars2 = [["fzWidth", "宽度"], ["fzThickness", "厚度"]]; let pars2 = [["fzWidth", "宽度"], ["fzThickness", "厚度"]];
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist: number;
if (optKey === "frontShrink")
dist = distRes.Distance;
else
dist = Math.abs(distRes.Distance);
if (optKey === "frontShrink" || dist !== 0)
{
opt[optKey] = parseFloat(dist.toFixed(2));
uiOption[optKey] = FixedNotZero(dist, 2);
}
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
const processOption = store.m_BoardProcessOption; const processOption = store.m_BoardProcessOption;
return ( return (
<div> <div>
@ -58,24 +84,50 @@ export const ClosingStripModal =
</RadioGroup> </RadioGroup>
</div> </div>
<h6 className={Classes.HEADING}></h6> <h6 className={Classes.HEADING}></h6>
<SetBoardDataBlock <div className="pick-br">
type={CheckObjectType.BR} {
pars={pars} pars.map(([k, v]) =>
option={opt} <Label >
uiOption={uiOption} <SetBoardDataItem
/> type={CheckObjectType.BR}
optKey={k}
option={opt}
uiOption={uiOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
<h6></h6> <h6></h6>
<Checkbox <Checkbox
label="是否绘制" label="是否绘制"
checked={opt.isDrawFuZhu} checked={opt.isDrawFuZhu}
onChange={() => opt.isDrawFuZhu = !opt.isDrawFuZhu} onChange={() => opt.isDrawFuZhu = !opt.isDrawFuZhu}
/> />
<SetBoardDataBlock <div className="pick-br">
type={CheckObjectType.BR} {
pars={pars2} pars2.map(([k, v]) =>
option={opt} <Label >
uiOption={uiOption} <SetBoardDataItem
/> type={CheckObjectType.BR}
optKey={k}
option={opt}
uiOption={uiOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
</div> </div>
); );
})); }));

@ -1,15 +1,20 @@
import { Button, Label } from "@blueprintjs/core";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import * as React from 'react'; import * as React from 'react';
import { DataAdapter } from '../../../Common/DataAdapter'; import { app } from "../../../ApplicationServices/Application";
import { SingleBoardStore } from "../../Store/BoardStore";
import { BoardTypeComponent, ItemName, SetBoardDataBlock } from "./BoardCommon";
import { CheckObjectType } from "../../../Common/CheckoutVaildValue"; import { CheckObjectType } from "../../../Common/CheckoutVaildValue";
import { Board } from "../../../DatabaseServices/Entity/Board";
import { PromptStatus } from "../../../Editor/PromptResult";
import { SingleBoardStore } from "../../Store/BoardStore";
import { BoardTypeComponent, ItemName, SetBoardDataBlock, SetBoardDataItem } from "./BoardCommon";
export const SingleBoardModal = export const SingleBoardModal =
(observer((props: { store?: SingleBoardStore; }) => (observer((props: { store?: SingleBoardStore; }) =>
{ {
let pars = [["height", "板高"], ["width", "板宽"], ["thickness", "板厚"], let pars = [["height", "板高"], ["width", "板宽"], ["thickness", "板厚"],
["rotateX", "旋转X"], ["rotateY", "旋转Y"], ["rotateZ", "旋转Z"] ];
let rotatePars = [
["rotateX", "旋转X"], ["rotateY", "旋转Y"], ["rotateZ", "旋转Z"]
]; ];
let processPars = [ let processPars = [
["spliteHeight", "拆单高"], ["spliteWidth", "拆单宽"], ["spliteThickness", "拆单厚"] ["spliteHeight", "拆单高"], ["spliteWidth", "拆单宽"], ["spliteThickness", "拆单厚"]
@ -18,13 +23,72 @@ export const SingleBoardModal =
let opt = props.store.m_Option; let opt = props.store.m_Option;
let uiOpt = props.store.UIOption; let uiOpt = props.store.UIOption;
let processOpt = props.store.m_BoardProcessOption; let processOpt = props.store.m_BoardProcessOption;
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
const store = props.store;
let dist = Math.abs(distRes.Distance);
if (dist !== 0)
store.m_Option[optKey] = parseFloat(dist.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
let getlrBoardValue = async () =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
const store = props.store;
let brRes = await app.Editor.GetEntity({ Msg: "选择板件", NotNone: true, Filter: { filterTypes: [Board] } });
if (brRes.Status === PromptStatus.OK)
{
let br = brRes.Entity as Board;
store.m_Option.height = parseFloat(br.Height.toFixed(2));
store.m_Option.width = parseFloat(br.Width.toFixed(2));
store.m_Option.thickness = parseFloat(br.Thickness.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
return ( return (
<div> <div>
<BoardTypeComponent opt={opt} /> <BoardTypeComponent opt={opt} />
<ItemName title="板名称" opt={props.store.m_Option} /> <ItemName title="板名称" opt={props.store.m_Option} />
<div className="br-lkg">
<div >
{
pars.map(([k, v]) =>
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={props.store.m_Option}
uiOption={props.store.UIOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
<Button text="拾取" intent="success" onClick={() => getlrBoardValue()} />
</div>
<SetBoardDataBlock <SetBoardDataBlock
type={CheckObjectType.BR} type={CheckObjectType.BR}
pars={pars} pars={rotatePars}
option={opt} option={opt}
uiOption={uiOpt} uiOption={uiOpt}
isInline={true} isInline={true}

@ -10,8 +10,9 @@ export const TopBottomBoardModal =
{ {
let store = props.store; let store = props.store;
let par = [["offset", "上留"]];
let pars = [ let pars = [
["offset", "上留"], ["frontDist", "前缩"], ["behindDistance", "后缩"], ["frontDist", "前缩"], ["behindDistance", "后缩"],
["leftExt", "左延伸"], ["rightExt", "右延伸"] ["leftExt", "左延伸"], ["rightExt", "右延伸"]
]; ];
@ -21,12 +22,14 @@ export const TopBottomBoardModal =
<TBBoardDataBlock <TBBoardDataBlock
option={store.topBoardOption} option={store.topBoardOption}
uiOption={store.TopUiOption} uiOption={store.TopUiOption}
par={par}
pars={pars} pars={pars}
istop={true} istop={true}
/> />
<TBBoardDataBlock <TBBoardDataBlock
option={store.bottomBoardOption} option={store.bottomBoardOption}
uiOption={store.BottomUiOption} uiOption={store.BottomUiOption}
par={par}
pars={pars} pars={pars}
istop={false} istop={false}
/> />

@ -1,21 +1,107 @@
import { Button, Label } from '@blueprintjs/core';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { SideBoardStore } from '../../Store/BoardStore'; import { app } from '../../../ApplicationServices/Application';
import { SetBoardDataBlock } from './BoardCommon';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { Board } from '../../../DatabaseServices/Entity/Board';
import { PromptStatus } from '../../../Editor/PromptResult';
import { SideBoardStore } from '../../Store/BoardStore';
import { SetBoardDataBlock, SetBoardDataItem } from './BoardCommon';
export const LeftRightBoardModal = export const LeftRightBoardModal =
(observer((props: { store?: SideBoardStore; }) => (observer((props: { store?: SideBoardStore; }) =>
{ {
let pars = [["height", "柜高"], ["width", "柜深"], ["thickness", "板厚"], ["spaceSize", "总宽"], ["leftShrink", "左内缩"], ["rightShrink", "右内缩"]]; let sizepars = [["height", "柜高"], ["width", "柜深"], ["thickness", "板厚"]];
let pars = [["leftShrink", "左内缩"], ["rightShrink", "右内缩"]];
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist: number;
if (optKey === "spaceSize")
dist = distRes.Distance;
else
dist = Math.abs(distRes.Distance);
const store = props.store;
if (optKey === 'spaceSize' || dist !== 0)
store.m_Option[optKey] = parseFloat(dist.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
let getlrBoardValue = async () =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
const store = props.store;
let brRes = await app.Editor.GetEntity({ Msg: "选择板件", NotNone: true, Filter: { filterTypes: [Board] } });
if (brRes.Status === PromptStatus.OK)
{
let br = brRes.Entity as Board;
store.m_Option.height = parseFloat(br.Height.toFixed(2));
store.m_Option.width = parseFloat(br.Width.toFixed(2));
store.m_Option.thickness = parseFloat(br.Thickness.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
return ( return (
<SetBoardDataBlock <div >
type={CheckObjectType.BR} <div className="br-lkg">
pars={pars} <div >
uiOption={props.store.UIOption} {
option={props.store.m_Option} sizepars.map(([k, v]) =>
className="lr-br" <Label >
/> <SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={props.store.m_Option}
uiOption={props.store.UIOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
<Button text="拾取" intent="success" onClick={() => getlrBoardValue()} />
</div>
<div>
<Label className="interval">
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={"spaceSize"}
option={props.store.m_Option}
uiOption={props.store.UIOption}
title={"总宽"}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue("spaceSize")}
/>
</Label>
</div>
<div>
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars}
uiOption={props.store.UIOption}
option={props.store.m_Option}
className="lr-br"
/>
</div>
</div>
); );
})); }));

@ -7,6 +7,30 @@
width: @infoSelectWidth; width: @infoSelectWidth;
} }
/*板件属性尺寸拾取*/
.br-size{
.bp3-label{
display: flex;
margin-bottom: 0;
&>div{
display: flex;
:last-child{
margin-top: 0;
width: 60px;
}
}
.bp3-button {
min-height: 10px;
width: 45px;
height: 17px;
margin-left: 5px;
}
}
}
.board-info>.bp3-label input { .board-info>.bp3-label input {
width: @infoSelectWidth; width: @infoSelectWidth;
} }
@ -91,13 +115,90 @@
/* 板材信息 */ /* 板材信息 */
#commonModal { #commonModal {
.bp3-input, .bp3-input,
.lr-br .bp3-input { .lr-br .bp3-input {
width: @inputWidth; width: @inputWidth;
}
.boardSize .bp3-input {
width: 3rem;
}
}
/* 板长宽厚尺寸拾取,板件拾取*/
#commonModal {
.br-lkg{
display: flex;
&>div{
.bp3-label{
display: flex;
margin-bottom: 0;
&>div{
display: flex;
:last-child{
margin-top: 0;
}
}
.bp3-button {
min-height: 10px;
width: 30px;
height: 17px;
margin-left: 3px;
margin-right: 5px;
}
}
}
&>button{
width: 2rem;
height: 75px;
}
} }
.boardSize .bp3-input { .interval{
width: 3rem; display: flex;
&>div{
display: flex;
margin-bottom: 5px;
:last-child{
margin-top: 0;
}
}
.bp3-button {
min-height: 10px;
width: 30px;
height: 17px;
margin-left: 3px;
margin-right: 5px;
}
}
}
/* 尺寸拾取*/
#modal .pick-br{
.bp3-label{
display: flex;
&>div{
display: flex;
margin-bottom: 0;
:last-child{
margin-top: 0;
}
}
.bp3-button {
min-height: 10px;
width: 30px;
height: 17px;
margin-left: 3px;
}
} }
} }

@ -1,5 +1,5 @@
import { Intent, IToastOptions, Position, Toaster, Tooltip } from "@blueprintjs/core"; import { Intent, IToastOptions, Position, Toaster, Tooltip } from "@blueprintjs/core";
import { observable } from "mobx"; import { autorun, observable } from "mobx";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import * as React from 'react'; import * as React from 'react';
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue"; import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
@ -63,6 +63,7 @@ export class ToasterInput extends React.Component<IToasterInputProps, {}>
static defaultProps = { static defaultProps = {
isUpper: false isUpper: false
}; };
getErrorMsg = (v: string) => getErrorMsg = (v: string) =>
{ {
this.errorMsg = CheckoutValid.CheckOption(this.props.type, this.props.optKey, v); this.errorMsg = CheckoutValid.CheckOption(this.props.type, this.props.optKey, v);
@ -90,14 +91,14 @@ export class ToasterInput extends React.Component<IToasterInputProps, {}>
{ {
e.target.classList.remove("bp3-intent-danger"); e.target.classList.remove("bp3-intent-danger");
} }
if (typeof this.showData[this.props.optKey] === "number") // if (typeof this.showData[this.props.optKey] === "number")
{ // {
let val = safeEval(newVal); // let val = safeEval(newVal);
if (!isNaN(val)) // if (!isNaN(val))
this.showData[this.props.optKey] = val; // this.showData[this.props.optKey] = val;
} // }
else // else
this.showData[this.props.optKey] = newVal; this.showData[this.props.optKey] = newVal;
if (this.hideErrorMsg && typeof this.props.option[this.props.optKey] === 'number') if (this.hideErrorMsg && typeof this.props.option[this.props.optKey] === 'number')
{ {
@ -148,10 +149,23 @@ export class ToasterInput extends React.Component<IToasterInputProps, {}>
intent: Intent.DANGER, intent: Intent.DANGER,
}); });
} }
private DisposeMobxAutorun: Function;
componentDidMount() componentDidMount()
{ {
this.getErrorMsg(this.showData[this.props.optKey]); this.DisposeMobxAutorun = autorun(() =>
{
this.getErrorMsg(this.showData[this.props.optKey]);
});
}
componentWillUnmount()
{
if (this.DisposeMobxAutorun) this.DisposeMobxAutorun();
this.DisposeMobxAutorun = undefined;
} }
UNSAFE_componentWillReceiveProps(nextProps) UNSAFE_componentWillReceiveProps(nextProps)
{ {
if (this.props.type === CheckObjectType.BBS) if (this.props.type === CheckObjectType.BBS)

Loading…
Cancel
Save