diff --git a/src/Add-on/BoardFindModify.ts b/src/Add-on/BoardFindModify.ts index 1bbf026a6..3babc5c33 100644 --- a/src/Add-on/BoardFindModify.ts +++ b/src/Add-on/BoardFindModify.ts @@ -56,6 +56,9 @@ export class BoardFindModify implements Command case EFindType.GetOption: await this.GetBoardOption(store.m_Option, res, store.UIOption); break; + case EFindType.GetHardWareOption: + await this.GetHardWareOption(store.m_Option, res, store.UIOption); + break; case EFindType.RemoveModeling: case EFindType.RemoveSpecialShape: case EFindType.RemoveModelingAndSpecial: @@ -561,6 +564,20 @@ export class BoardFindModify implements Command UIOption[data.key] = option[data.key]; } } + private async GetHardWareOption(option: IBoardFindOption, data: { key: string, content: string; }, UIOption: any) + { + let hwRes = await app.Editor.GetEntity({ + Msg: data.content, + Filter: { filterTypes: [HardwareCompositeEntity] } + }); + + if (hwRes.Status === PromptStatus.OK) + { + let hw = hwRes.Entity as HardwareCompositeEntity; + option[data.key] = hw.HardwareOption.name; + UIOption[data.key] = option[data.key]; + } + } private async RemoveBoardModelingOrSpecialShape(removeType: EFindType) { let brs = await this.GetBoards() as Board[]; @@ -601,6 +618,9 @@ export class BoardFindModify implements Command case EBoardKeyList.CabinetName: en.HardwareOption[EBoardKeyList.CabinetName] = option[EBoardKeyList.CabinetName]; break; + case "hardwareName": + en.HardwareOption.name = option.hardwareName; + break; default: break; } @@ -639,6 +659,13 @@ export class BoardFindModify implements Command value = option[i]; isVail = this.CompareIsEqual(brValue, value, option.compareType[i]); break; + case "hardwareName": + brValue = br.HardwareOption.name; + let names = option[i].split(","); + if (arrayLast(names) === "") + names.pop(); + isVail = names.some(n => this.CompareIsEqual(brValue, n, option.compareType[i])); + break; default: isVail = false; break; diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index f32e0fef5..196f2684b 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -296,7 +296,7 @@ export const DefaultClosingStripOption: ClosingStripOption = { Object.freeze(DefaultClosingStripOption); export const DefaultBoardFindOption: IBoardFindOption = { - version: 5, + version: 6, condition: { layer: false, height: false, @@ -310,6 +310,7 @@ export const DefaultBoardFindOption: IBoardFindOption = { useSpecial: false, useModeling: false, roomName: false, + hardwareName: false, cabinetName: false, brName: false, material: false, @@ -337,6 +338,7 @@ export const DefaultBoardFindOption: IBoardFindOption = { roomName: ECompareType.Equal, cabinetName: ECompareType.Equal, brName: ECompareType.Equal, + hardwareName: ECompareType.Equal, [EBoardKeyList.Mat]: ECompareType.Equal, [EBoardKeyList.Color]: ECompareType.Equal, [EBoardKeyList.BrMat]: ECompareType.Equal, @@ -360,6 +362,7 @@ export const DefaultBoardFindOption: IBoardFindOption = { roomName: "", cabinetName: "", brName: "", + hardwareName: "", [EBoardKeyList.BrMat]: "", material: "", color: "", diff --git a/src/UI/Components/Board/BoardFindModify.tsx b/src/UI/Components/Board/BoardFindModify.tsx index 35ec508d9..038b08325 100644 --- a/src/UI/Components/Board/BoardFindModify.tsx +++ b/src/UI/Components/Board/BoardFindModify.tsx @@ -23,6 +23,7 @@ import { Config_ModalType } from './UserConfig'; interface IBoardFindState { userInputName: string; + hardwareInput: string; } @inject('store') @@ -33,12 +34,16 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar ["左侧板", false], ["右侧板", false], ["顶板", false], ["底板", false], ["层板", false], ["背板", false], ["地脚线", false], ]; + @observable _hardwareNameList: [string, boolean][] = [ + ["无盖铰链", false], ["半盖铰链", false], ["全盖铰链", false], + ]; private showShops = observable.box(false); constructor(props) { super(props); this.state = { userInputName: "", + hardwareInput: "", }; } componentDidMount() @@ -110,6 +115,14 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar app.Editor.ModalManage.ToggleShow(); app.Editor.MaskManage.ShowMask(); } + private async getHardWareOption(key: string, content: string) + { + app.Editor.MaskManage.Clear(); + app.Editor.ModalManage.ToggleShow(); + await app.Editor.ModalManage.ExecCmd({ type: EFindType.GetHardWareOption, key, content }); + app.Editor.ModalManage.ToggleShow(); + app.Editor.MaskManage.ShowMask(); + } private handleApplyBrName = () => { let name = this.state.userInputName; @@ -123,6 +136,19 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar }); this.setState({ userInputName: name }); }; + private handleApplyBrHardWare = () => + { + let name = this.state.hardwareInput; + if (name) + name += ","; + + this._hardwareNameList.forEach(v => + { + if (v[1]) + name += v[0] + ","; + }); + this.setState({ hardwareInput: name }); + }; private handleSelectGoods = (good: IGoodInfo) => { const option = this.props.store.m_Option; @@ -367,7 +393,11 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar option.brName = e.target.value} + onChange={e => + { + option.brName = e.target.value; + this.setState({ userInputName: e.target.value }); + }} />
+
+ + { + option.condition.hardwareName = !option.condition.hardwareName; + this.handleIsSelectAll(); + }} + /> + + { + option.compareType.hardwareName = e.target.value as ECompareType; + }} + /> + + { + option.hardwareName = e.target.value; + this.setState({ hardwareInput: e.target.value }); + }} + /> +
+
+ this.setState({ hardwareInput: e.target.value })} + /> +
+
+ } + target={
+