From 540054aa4cf7b1772a08d17a097492df5d4153f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=AF=97=E6=B4=A5?= <2723065175@qq.com> Date: Mon, 1 Aug 2022 01:30:05 +0000 Subject: [PATCH] =?UTF-8?q?!1974=20=E4=BC=98=E5=8C=96:=E4=BF=9D=E5=AD=98BB?= =?UTF-8?q?S=E8=BE=93=E5=85=A5=E6=A1=86=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Editor/UserConfig.ts | 11 ++++- src/UI/Components/BBS/BBSCommon.tsx | 45 ++++++++++++++++++-- src/UI/Components/BBS/LookOverBoardInfos.tsx | 12 ++++++ 3 files changed, 63 insertions(+), 5 deletions(-) diff --git a/src/Editor/UserConfig.ts b/src/Editor/UserConfig.ts index 9c82e71b2..d7ec9a688 100644 --- a/src/Editor/UserConfig.ts +++ b/src/Editor/UserConfig.ts @@ -36,7 +36,7 @@ export interface IUCSGridConfig extends IBaseOption export class UserConfig implements IConfigStore { - private readonly _version = 29; //🌟🌟每次更新必须向上添加一次版本号🌟🌟 + private readonly _version = 30; //🌟🌟每次更新必须向上添加一次版本号🌟🌟 _renderType: RenderType = RenderType.Wireframe; @observable maxSize: IMaxSizeProps = { isShow: false, @@ -86,6 +86,7 @@ export class UserConfig implements IConfigStore @observable cabinetSpacing: number = 1000; //柜子移动到0点配置 柜子间距 @observable ConceptualEdgeColor = 7;//概念线框的颜色 @observable Physical2EdgeColor = 7;//真实视图带线框的线框颜色 默认白色 + @observable titleWidthMap: Map = new Map();//保存BBS输入框宽度,刷新后重置 @observable autoSaveConfig = { enable: true, time: 1, @@ -229,6 +230,7 @@ export class UserConfig implements IConfigStore this.isOpenAxisSwitch = true; this.isOpenCameraSetting = true; this.dxfImportBlock = false; + this.titleWidthMap = new Map(); } SaveConfig() { @@ -274,7 +276,8 @@ export class UserConfig implements IConfigStore UCSGridConfig: toJS(this.UCSGridConfig), isOpenAxisSwitch: this.isOpenAxisSwitch, isOpenCameraSetting: this.isOpenCameraSetting, - dxfImportBlock: this.dxfImportBlock + dxfImportBlock: this.dxfImportBlock, + titleWidthMap: Object.fromEntries(this.titleWidthMap.entries()) } }; } @@ -407,6 +410,10 @@ export class UserConfig implements IConfigStore this.ConceptualEdgeColor = config.option.ConceptualEdgeColor; this.Physical2EdgeColor = config.option.Physical2EdgeColor; } + if (config.option.version > 29) + { + this.titleWidthMap = new Map(Object.entries(config.option.titleWidthMap)); + } } } diff --git a/src/UI/Components/BBS/BBSCommon.tsx b/src/UI/Components/BBS/BBSCommon.tsx index 295596b31..3bb1a9fc4 100644 --- a/src/UI/Components/BBS/BBSCommon.tsx +++ b/src/UI/Components/BBS/BBSCommon.tsx @@ -13,6 +13,7 @@ import { ProcessingGroupRecord } from '../../../DatabaseServices/ProcessingGroup import { TemplateLatticeRecord } from '../../../DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord'; import { TemplateWineRackRecord } from '../../../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord'; import { TemplateRecord } from '../../../DatabaseServices/Template/TemplateRecord'; +import { userConfig } from '../../../Editor/UserConfig'; import { IHardwareType } from '../../../Production/Product'; import { bbsEditorStore, TotalTabbarTitlesInfos } from '../../Store/BBSEditorStore'; import { LinesType } from '../../Store/BoardInterface'; @@ -27,10 +28,34 @@ export interface SortBtnData export const SelectElementIndex = [6, 22, 23, 27]; +interface ITitleBannerProps +{ + sortBtnData: SortBtnData[], + style: any, + handleOrder: Function, + AutoWidth: (title: [string, string]) => void, + TitleResize: (e: React.PointerEvent, title: string) => void; +} @observer -export class TitleBanner extends React.Component<{ sortBtnData: SortBtnData[], style: any, handleOrder: Function, AutoWidth: (title: [string, string]) => void, TitleResize: (e: React.PointerEvent, title: string) => void; }, {}> +export class TitleBanner extends React.Component { icon: IconName; + titleRef = React.createRef(); + componentDidMount() + { + for (let index of bbsEditorStore.tabbarIndexs) + { + if (bbsEditorStore.noResize.some(i => i === index)) continue; + let title = TotalTabbarTitlesInfos[index][1]; + if (!userConfig.titleWidthMap.has(title)) + { + let titleElement = this.titleRef.current.getElementsByClassName(title); + let width = (titleElement[0] as HTMLDivElement).offsetWidth; + userConfig.titleWidthMap.set(title, width); + } + } + } + getBtnData = (data: string) => { let btn = this.props.sortBtnData.find((d) => d.text === data.trim()); @@ -39,10 +64,24 @@ export class TitleBanner extends React.Component<{ sortBtnData: SortBtnData[], s this.icon = btn.icon; return true; }; + + getWidthStyle = (title: string, index: number): React.CSSProperties => + { + return SelectElementIndex.includes(index) ? + { + minWidth: 73, + display: "flex" + } : + { + minWidth: 62, + display: "flex", + width: userConfig.titleWidthMap.has(title) ? userConfig.titleWidthMap.get(title) : "auto" + }; + }; render() { return ( -
+
序号
{ bbsEditorStore.tabbarIndexs.map((index) => @@ -95,7 +134,7 @@ export class TitleBanner extends React.Component<{ sortBtnData: SortBtnData[], s
{ this.getBtnData(TotalTabbarTitlesInfos[index][0]) ? diff --git a/src/UI/Components/BBS/LookOverBoardInfos.tsx b/src/UI/Components/BBS/LookOverBoardInfos.tsx index 240067c32..650375ddf 100644 --- a/src/UI/Components/BBS/LookOverBoardInfos.tsx +++ b/src/UI/Components/BBS/LookOverBoardInfos.tsx @@ -31,11 +31,14 @@ import { TemplateWineRackRecord } from "../../../DatabaseServices/Template/Progr import { TemplateRecord } from "../../../DatabaseServices/Template/TemplateRecord"; import { CommandWrap } from "../../../Editor/CommandMachine"; import { SelectSetBase } from "../../../Editor/SelectBase"; +import { userConfig } from "../../../Editor/UserConfig"; import { equaln } from "../../../Geometry/GeUtils"; import { IHardwareType } from "../../../Production/Product"; import { bbsEditorStore, TotalTabbarTitlesInfos } from "../../Store/BBSEditorStore"; import { EFindType } from "../../Store/BoardFindInterface"; import { ComposingType, FaceDirection, LinesType } from "../../Store/BoardInterface"; +import { userConfigStore } from "../../Store/UserConfigStore"; +import { BoardModalType } from "../Board/BoardModalType"; import { InitRectBoardDrillOption, SetRectHighDrill } from "../Board/CommonBoardOption"; import { GetCompoentObjectIdString } from "../ComponentObjectId"; import { ModalFooter, ModalHeader } from "../Modal/ModalContainer"; @@ -305,6 +308,7 @@ export class LookOverBoardInfosModal extends React.Component { + this.SetTitleWidthMap(title, (titleElement[0] as HTMLDivElement).offsetWidth); ismove = false; clearTimeout(timer); target.releasePointerCapture(e.pointerId); @@ -877,6 +882,13 @@ export class LookOverBoardInfosModal extends React.Component + { + if (userConfig.titleWidthMap.get(title) !== value) + userConfig.titleWidthMap.set(title, value); }; getCalcStyles = (key: string): React.CSSProperties =>