From 1b1810291108fc993041d403e43b753d4aa480b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E6=B3=BD?= <3365712788@qq.com> Date: Wed, 17 Jul 2024 08:06:44 +0000 Subject: [PATCH] =?UTF-8?q?!2800=2002190.=20=E6=9F=A5=E6=89=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=87=E6=B3=A8=E4=BF=A1=E6=81=AF=E6=A8=A1=E7=B3=8A?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/BoardFindModify.ts | 54 +++++++++++++++++-- src/Editor/DefaultConfig.ts | 5 +- src/UI/Components/Board/BoardFindInterface.ts | 5 ++ src/UI/Components/Board/BoardFindModify.tsx | 18 ++++++- src/UI/Store/BoardFindInterface.ts | 2 + src/UI/Store/BoardFindModifyStore.ts | 7 ++- 6 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 src/UI/Components/Board/BoardFindInterface.ts diff --git a/src/Add-on/BoardFindModify.ts b/src/Add-on/BoardFindModify.ts index c120b4cb8..b7c783eb9 100644 --- a/src/Add-on/BoardFindModify.ts +++ b/src/Add-on/BoardFindModify.ts @@ -19,6 +19,7 @@ import { PromptStatus } from "../Editor/PromptResult"; import { SelectSetBase } from "../Editor/SelectBase"; import { equaln } from "../Geometry/GeUtils"; import { IHardwareType, Production } from "../Production/Product"; +import { FindModifyStyle } from "../UI/Components/Board/BoardFindInterface"; import BoardFindModifyModal from "../UI/Components/Board/BoardFindModify"; import { DRILL_KEYS, ECompareType, EFindType, IBoardFindOption, IFindCondition } from "../UI/Store/BoardFindInterface"; import { BoardFindStore } from "../UI/Store/BoardFindModifyStore"; @@ -269,26 +270,69 @@ export class BoardFindModify implements Command isVail = true; break; case "useKeyWord": + let findModifyStyle = option.query; let brRemarks = br.BoardProcessOption.remarks; let remarks: [string, string][] = []; for (let d of option.remarks) { - if (d[0] && d[1]) + if (d[0] || d[1]) remarks.push([d[0], d[1]]); } + //备注全空 + if (!remarks.length && !brRemarks.length) + { + isVail = true; + break; + } + for (let r of brRemarks) { for (let r2 of remarks) { - if (r[0] === r2[0] && r[1] === r2[1]) + switch (findModifyStyle) { - isVail = true; - break; + case FindModifyStyle.PreciseQuery: + if (r2[0] || r2[1]) + { + //两者都有值时 需都相等 + if (r2[0] && r2[1]) + { + if (r[0] === r2[0] && r[1] === r2[1]) + { + isVail = true; + break; + } + } + //其中一个有值时 + else if (r2[0]) + { + if (r[0] === r2[0]) + { + isVail = true; + break; + } + } + else + { + if (r[1] === r2[1]) + { + isVail = true; + break; + } + } + } + break; + case FindModifyStyle.FuzzyQuery: + if (CompareIsEqual(r[0], r2[0], ECompareType.Include) && CompareIsEqual(r[1], r2[1], ECompareType.Include)) + { + isVail = true; + break; + } + break; } } } - break; case "useChaidan": isVail = br.IsChaiDan === option.isChaidan; diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index ee52b294b..f516df7a0 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -5,6 +5,7 @@ import { EBoardKeyList } from "../Common/BoardKeyList"; import { BoardOpenDir, BoardType, BrRelativePos, ComposingType, LinesType } from "../DatabaseServices/Entity/BoardInterface"; import { SpaceParseOption } from "../Geometry/SpaceParse/SpaceParseStore"; import { RenderType } from "../GraphicsSystem/RenderType"; +import { FindModifyStyle } from "../UI/Components/Board/BoardFindInterface"; import { IUpdateBoardInfosOption } from "../UI/Components/Board/UpdateBoardInfointerface"; import { EMetalsType, ICompHardwareOption, ICylMetalsOption, IExtMetalsOption, IToplineOption } from "../UI/Components/RightPanel/RightPanelInterface"; import { IKuGangDrawOption } from "../UI/Components/Template/TemplateInterface"; @@ -334,7 +335,7 @@ export const DefaultClosingStripOption: ClosingStripOption = { Object.freeze(DefaultClosingStripOption); export const DefaultBoardFindOption: IBoardFindOption = { - version: 9, + version: 10, condition: { // layer: false, //这个KEY看起来没用了 height: false, @@ -392,7 +393,6 @@ export const DefaultBoardFindOption: IBoardFindOption = { composingFace: ECompareType.Equal, openDir: ECompareType.Equal, [EBoardKeyList.KnifeRad]: ECompareType.Equal, - }, tolerance: { height: "", @@ -432,6 +432,7 @@ export const DefaultBoardFindOption: IBoardFindOption = { edgeRemarkDown: "", edgeRemarkLeft: "", edgeRemarkRight: "", + query: FindModifyStyle.FuzzyQuery }; Object.freeze(DefaultBoardFindOption); diff --git a/src/UI/Components/Board/BoardFindInterface.ts b/src/UI/Components/Board/BoardFindInterface.ts new file mode 100644 index 000000000..cc7340539 --- /dev/null +++ b/src/UI/Components/Board/BoardFindInterface.ts @@ -0,0 +1,5 @@ +export enum FindModifyStyle +{ + FuzzyQuery = 0,//模糊匹配 + PreciseQuery = 1, //精确匹配 +} diff --git a/src/UI/Components/Board/BoardFindModify.tsx b/src/UI/Components/Board/BoardFindModify.tsx index b647068bf..b6aa3331e 100644 --- a/src/UI/Components/Board/BoardFindModify.tsx +++ b/src/UI/Components/Board/BoardFindModify.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Checkbox, Classes, H5, HTMLSelect, Intent, Popover, Position, Tooltip } from '@blueprintjs/core'; +import { Button, Card, Checkbox, Classes, H5, HTMLSelect, Intent, Popover, Position, Radio, RadioGroup, Tooltip } from '@blueprintjs/core'; import { observable } from 'mobx'; import { inject, observer } from 'mobx-react'; import * as React from 'react'; @@ -17,6 +17,7 @@ import { CommonModal } from '../Modal/ModalContainer'; import { ModalState } from '../Modal/ModalInterface'; import { Notes, openDirOptions } from './BoardCommon'; import { BoardFindItem, BoardFindSelectItem, MatColorCom, SealDrillCom } from './BoardFindCommon'; +import { FindModifyStyle } from './BoardFindInterface'; import { BoardModalType } from "./BoardModalType"; import { Config_ModalType } from './UserConfigComponent'; @@ -30,7 +31,8 @@ interface IBoardFindState @inject('store') @observer -export default class BoardFindModifyModal extends React.Component<{ store?: BoardFindStore; }, IBoardFindState> { +export default class BoardFindModifyModal extends React.Component<{ store?: BoardFindStore; }, IBoardFindState> +{ private event: Function; @observable _brNameList: [string, boolean][] = [ ["左侧板", false], ["右侧板", false], ["顶板", false], ["底板", false], @@ -634,6 +636,18 @@ export default class BoardFindModifyModal extends React.Component<{ store?: Boar onClosed={el => el.onkeydown = null} content={ +
查询方式
+ + { + store.m_Option.query = parseInt(e.currentTarget.value); + }} + > + + + diff --git a/src/UI/Store/BoardFindInterface.ts b/src/UI/Store/BoardFindInterface.ts index e01bd1f21..c98c096f9 100644 --- a/src/UI/Store/BoardFindInterface.ts +++ b/src/UI/Store/BoardFindInterface.ts @@ -1,6 +1,7 @@ import { FaceDirection } from "../../Add-on/DrawDrilling/DrillType"; import { EBoardKeyList } from "../../Common/BoardKeyList"; import { BoardOpenDir, ComposingType, LinesType } from "../../DatabaseServices/Entity/BoardInterface"; +import { FindModifyStyle } from "../Components/Board/BoardFindInterface"; import { IBaseOption } from "./OptionInterface/IOptionInterface"; export const DRILL_KEYS = ["downDrill", "rightDrill", "upDrill", "leftDrill"]; //这个顺序不能变 @@ -38,6 +39,7 @@ export interface IBoardFindOption extends IBaseOption upDownDrill: [boolean, boolean]; isClose: boolean; remarks: [string, string][]; + query: FindModifyStyle; extraRemarks: [string, string][]; isChaidan: boolean; [EBoardKeyList.KnifeRad]: string; diff --git a/src/UI/Store/BoardFindModifyStore.ts b/src/UI/Store/BoardFindModifyStore.ts index 7f78105e5..13f896fc0 100644 --- a/src/UI/Store/BoardFindModifyStore.ts +++ b/src/UI/Store/BoardFindModifyStore.ts @@ -6,6 +6,7 @@ import { DataAdapter } from "../../Common/DataAdapter"; import { BoardOpenDir } from "../../DatabaseServices/Entity/BoardInterface"; import { DefaultBoardFindOption } from "../../Editor/DefaultConfig"; import { userConfig } from "../../Editor/UserConfig"; +import { FindModifyStyle } from "../Components/Board/BoardFindInterface"; import { IConfigOption } from "../Components/Board/UserConfigComponent"; import { ModalState } from "../Components/Modal/ModalInterface"; import { ToasterValueError } from "../Components/Toaster"; @@ -139,7 +140,11 @@ export class BoardFindStore extends BoardStore cof.option.condition.edgeRemarkLeft = false; cof.option.condition.edgeRemarkRight = false; } - + if (cof.option.version < 10) + { + cof.option.version = 10; + cof.option.query = FindModifyStyle.FuzzyQuery; + } Object.assign(this.m_Option, cof.option); if (this.m_UiOption) Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(cof.option));