mirror of https://gitee.com/cf-fz/WebCAD.git
!2611 新增:增加自动设置孔面命令配置,设置不受分界高度影响的排钻类型
parent
eb921eab79
commit
87b7379013
@ -0,0 +1,190 @@
|
||||
import { Button, Checkbox, Classes, Intent, Label, Position, Tooltip } from "@blueprintjs/core";
|
||||
import { toJS } from "mobx";
|
||||
import { observer } from "mobx-react";
|
||||
import React, { useState } from "react";
|
||||
import { AutoHoleFaceSettingStore } from "../../Add-on/AutoHoleFaceSetting";
|
||||
import { app } from "../../ApplicationServices/Application";
|
||||
import { CheckObjectType } from "../../Common/CheckoutVaildValue";
|
||||
import { LogType } from "../../Common/Log";
|
||||
import { PromptStatus } from "../../Editor/PromptResult";
|
||||
import { userConfig } from "../../Editor/UserConfig";
|
||||
import "../Css/filterDrillModal.less";
|
||||
import { SetBoardDataItem } from "./Board/BoardCommon";
|
||||
import { BoardModalType } from "./Board/BoardModalType";
|
||||
import { Config_ModalType } from "./Board/UserConfigComponent";
|
||||
import { CommonModal } from "./Modal/ModalContainer";
|
||||
import { ModalState } from "./Modal/ModalInterface";
|
||||
import { ToasterValueError } from "./Toaster";
|
||||
|
||||
|
||||
export const FilterDrillModal = (observer((props: { store?: AutoHoleFaceSettingStore; }) =>
|
||||
{
|
||||
|
||||
const store = props.store;
|
||||
|
||||
const [filterDrillArray, setFilterDrillArray] = useState([]);
|
||||
|
||||
let drillArray = [...(userConfig.DrillConfigs.keys())];
|
||||
|
||||
const inputDrillStr = store.option.filterDrill;
|
||||
|
||||
const Ok = () =>
|
||||
{
|
||||
const errMsg = props.store.HasInvailValue();
|
||||
if (errMsg)
|
||||
{
|
||||
ToasterValueError(errMsg);
|
||||
return;
|
||||
}
|
||||
app.Editor.ModalManage.m_PromisRes({
|
||||
Status: ModalState.Ok,
|
||||
});
|
||||
|
||||
app.Editor.ModalManage.Destory();
|
||||
};
|
||||
|
||||
const Close = () =>
|
||||
{
|
||||
app.Editor.ModalManage.Destory();
|
||||
};
|
||||
|
||||
const getHeightValue = async () =>
|
||||
{
|
||||
app.Editor.ModalManage.ToggleShow();
|
||||
app.Editor.MaskManage.Clear();
|
||||
let ret = await app.Editor.GetDistance({ Msg: "点取距离或者输入" });
|
||||
if (ret.Status === PromptStatus.OK)
|
||||
{
|
||||
if (ret.Distance <= 0 || isNaN(ret.Distance))
|
||||
{
|
||||
app.Editor.Prompt("请输入为正数的高度!", LogType.Warning);
|
||||
}
|
||||
let hight = Math.abs(Number(ret.Distance.toFixed(2)));
|
||||
props.store.UpdateOption({ option: { hight: toJS(hight) } });
|
||||
}
|
||||
app.Editor.ModalManage.ToggleShow();
|
||||
app.Editor.MaskManage.ShowMask();
|
||||
};
|
||||
|
||||
const changeDrill = (item) =>
|
||||
{
|
||||
if (filterDrillArray.indexOf(item) === -1)
|
||||
{
|
||||
setFilterDrillArray([...filterDrillArray, item]);
|
||||
}
|
||||
else
|
||||
{
|
||||
let newFilterDrillArray = [...filterDrillArray];
|
||||
newFilterDrillArray = newFilterDrillArray.filter(ele => ele !== item);
|
||||
setFilterDrillArray(newFilterDrillArray);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const handleInputChange = (e) =>
|
||||
{
|
||||
const newValue = e.target.value;
|
||||
let newValueString = '';
|
||||
if (newValue.trim() !== '')
|
||||
{
|
||||
newValueString = newValue.trim();
|
||||
}
|
||||
store.option.filterDrill = newValueString;
|
||||
};
|
||||
|
||||
const handleApplySelected = () =>
|
||||
{
|
||||
const newItems = filterDrillArray.filter(item => !inputDrillStr.includes(item));
|
||||
let updatedInputDrillArray = inputDrillStr + (inputDrillStr && !inputDrillStr.endsWith(',') ? ',' : '') + newItems.join(',');
|
||||
if (updatedInputDrillArray && !updatedInputDrillArray.endsWith(','))
|
||||
{
|
||||
updatedInputDrillArray += ',';
|
||||
}
|
||||
store.option.filterDrill = updatedInputDrillArray;
|
||||
};
|
||||
|
||||
return (
|
||||
<CommonModal
|
||||
title="自动设置孔面"
|
||||
close={() => Close()}
|
||||
store={store}
|
||||
configType={Config_ModalType.ConfigListModal}
|
||||
type={BoardModalType.AutoHoleFaceSetting}
|
||||
footerChildren={
|
||||
<>
|
||||
<Button
|
||||
intent={Intent.SUCCESS}
|
||||
text="确定"
|
||||
onClick={() => Ok()}
|
||||
/>
|
||||
<Button
|
||||
style={{ marginLeft: 3 }}
|
||||
intent={Intent.DANGER}
|
||||
text="取消"
|
||||
onClick={() => Close()}
|
||||
/>
|
||||
</>
|
||||
}
|
||||
>
|
||||
<div className="filterDrillModal-body bp3-card">
|
||||
<div className="size-input">
|
||||
<Label>
|
||||
<SetBoardDataItem
|
||||
titleStyle={{ width: "3rem" }}
|
||||
type={CheckObjectType.OnlyNumber}
|
||||
optKey={'hight'}
|
||||
option={store.option}
|
||||
uiOption={store.UiOption}
|
||||
title={'高度'}
|
||||
/>
|
||||
</Label>
|
||||
<Button
|
||||
icon="arrow-right"
|
||||
onClick={() => getHeightValue()}
|
||||
/>
|
||||
</div>
|
||||
<h5>选择不受分界高度影响的排钻类型</h5>
|
||||
<div style={{ border: '1px solid #ccc', padding: '15px' }}>
|
||||
<div style={{ minHeight: 200 }}>
|
||||
|
||||
<div className="drillModal-boder">
|
||||
<div className="filterDrillModal-checkbox">
|
||||
<div className="drillModal-title">
|
||||
<Tooltip
|
||||
position={Position.TOP}>
|
||||
排钻名称
|
||||
</Tooltip>
|
||||
</div>
|
||||
{
|
||||
drillArray.map((item, index) => (
|
||||
<div className="drill-list-info drill-border" key={index}>
|
||||
<Checkbox checked={filterDrillArray.indexOf(item) !== -1}
|
||||
onChange={() => changeDrill(item)}
|
||||
/>
|
||||
<div>
|
||||
{item}
|
||||
</div>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="application-selected">
|
||||
<Button
|
||||
text="应用选中"
|
||||
intent={Intent.PRIMARY}
|
||||
onClick={() => handleApplySelected()}
|
||||
/>
|
||||
<span style={{ marginLeft: 5 }}>用逗号分割排钻名称</span>
|
||||
</div>
|
||||
<input
|
||||
className={`${Classes.INPUT} filterDrill-input`}
|
||||
style={{ height: '2.5rem' }}
|
||||
value={store.option.filterDrill}
|
||||
onChange={(e) => handleInputChange(e)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</CommonModal>);
|
||||
}));
|
@ -0,0 +1,101 @@
|
||||
#modal .filterDrillModal-body {
|
||||
padding: 20px;
|
||||
width: 300px;
|
||||
|
||||
h5 {
|
||||
margin: 7px 0;
|
||||
}
|
||||
|
||||
.size-input {
|
||||
display: flex;
|
||||
|
||||
.bp3-label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 0;
|
||||
|
||||
.br-set {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&>:first-child {
|
||||
margin-bottom: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.bp3-popover-wrapper {
|
||||
margin-top: 0;
|
||||
|
||||
input {
|
||||
margin: 10px 0;
|
||||
width: 6.5rem;
|
||||
height: 24px;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bp3-button {
|
||||
margin: 10px 0 10px 20px;
|
||||
min-height: 10px;
|
||||
width: 56px;
|
||||
height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.bp3-control {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.filterDrillModal-checkbox {
|
||||
min-height: 200px;
|
||||
overflow-y: scroll;
|
||||
max-height: 204px;
|
||||
}
|
||||
|
||||
.drill-list-info {
|
||||
border: 1px solid #ccc;
|
||||
display: grid;
|
||||
align-items: center;
|
||||
grid-template-columns: 70px 1fr 0 0;
|
||||
padding: 5px 0;
|
||||
|
||||
&> :nth-child(1) {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
&> :nth-child(2) {
|
||||
margin-left: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.drillModal-title {
|
||||
border: 1px solid #ccc;
|
||||
padding: 5px 37px 5px 5px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.drillModal-boder {
|
||||
border: 1px solid #ccc;
|
||||
padding: 8px 0px 8px 8px;
|
||||
}
|
||||
|
||||
.drill-list-info.drill-border {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.filterDrill-input {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.bp3-input:not([type=search]) {
|
||||
height: 2.5rem;
|
||||
}
|
||||
|
||||
.application-selected {
|
||||
margin: 12px 0;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue