!2538 优化:根据板材改颜色结束后还原颜色

pull/2492/MERGE
张子涵 7 months ago committed by ChenX
parent 9a75fbbe77
commit f9b58b8a56

@ -6,6 +6,7 @@ import { ComposingType } from "../../DatabaseServices/Entity/BoardInterface";
import { Command } from "../../Editor/CommandMachine";
import { PromptStatus } from "../../Editor/PromptResult";
import { AppToaster } from "../../UI/Components/Toaster";
import { ResetColor } from "../ChangeColorByBoard/ResetColor";
export class Command_ChangeBoardColorByPBFace implements Command
{
@ -20,8 +21,10 @@ export class Command_ChangeBoardColorByPBFace implements Command
let ssRes = await app.Editor.GetSelection({ Filter: { filterTypes: [Board] }, UseSelect: true });
if (ssRes.Status !== PromptStatus.OK) return;
let ents = ssRes.SelectSet.SelectEntityList as Board[];
const oldColorMap = new Map<Board, number>();
for (let br of ents)
{
oldColorMap.set(br, br.ColorIndex);
if (br.BoardProcessOption[EBoardKeyList.ComposingFace] === ComposingType.Positive)
br.ColorIndex = 2;
else if (br.BoardProcessOption[EBoardKeyList.ComposingFace] === ComposingType.Reverse)
@ -29,5 +32,6 @@ export class Command_ChangeBoardColorByPBFace implements Command
else
br.ColorIndex = 4;
}
ResetColor(oldColorMap);
}
}

@ -20,6 +20,7 @@ import { DialogUserConfig } from '../../UI/Components/Board/UserConfigComponent'
import { CommonModal } from '../../UI/Components/Modal/ModalContainer';
import { BoardInfoSelectPanel } from './BoardInfoSelectPanel';
import { ChangeColorByBoardMaterialStore } from './CalcBrThicknessConfigStore';
import { ResetColor } from './ResetColor';
export class ChangeColorByMaterial implements Command
{
@ -61,6 +62,7 @@ export class ChangeColorByMaterial implements Command
let boardMap = new Map<number, Board[]>();
let option = store.m_Option;
let colorIndex = 1;
const oldColorMap = new Map<Board, number>();
for (let br of brs)
{
let key: string = `板材料:${br.BoardProcessOption[EBoardKeyList.Mat] !== "" ? br.BoardProcessOption[EBoardKeyList.Mat] : "无"}`;
@ -86,6 +88,7 @@ export class ChangeColorByMaterial implements Command
colorMap.set(key, colorIndex);
colorIndex++;
}
oldColorMap.set(br, br.ColorIndex);
br.ColorIndex = colors[color];
let arr = boardMap.get(color);
@ -106,7 +109,7 @@ export class ChangeColorByMaterial implements Command
boardMapArr.sort((b1, b2) => b1.mtl.localeCompare(b2.mtl));
app.Editor.ModalManage.RenderModeless(BoardColorMaterialMapDialog, { data: boardMapArr }, { canMinimize: false });
app.Editor.ModalManage.RenderModeless(BoardColorMaterialMapDialog, { data: boardMapArr, oldColorMap }, { canMinimize: false });
}
}
@ -117,6 +120,7 @@ interface BoardColorMaterialMapDialogProps
brs: Board[];
color: number;
}[];
oldColorMap: Map<Board, number>;
}
//用显示板材和板件的对应关系,命令根据板件材质改颜色的功能
@ -188,6 +192,7 @@ export class BoardColorMaterialMapDialog extends React.Component<BoardColorMater
{
for (let fun of this.removeAop)
fun();
ResetColor(this.props.oldColorMap);;
}
public render()
@ -197,8 +202,10 @@ export class BoardColorMaterialMapDialog extends React.Component<BoardColorMater
className="boardColorMaterialMap"
title="板材列表"
hasConfig={false}
close={() => app.Editor.ModalManage.Destory()
}
close={() =>
{
app.Editor.ModalManage.Destory();
}}
>
<ul className={Classes.LIST_UNSTYLED + " center brmtlmap"}>
{

@ -0,0 +1,71 @@
import React from "react";
import { Intent } from "../../Common/Toaster";
import { Board } from "../../DatabaseServices/Entity/Board";
import { BoardOpenDir, BoardType } from "../../DatabaseServices/Entity/BoardInterface";
import { CommandWrap } from "../../Editor/CommandMachine";
import { CommandState } from "../../Editor/CommandState";
import { AppToaster } from "../../UI/Components/Toaster";
/** 弹窗-是否要还原颜色 */
export function ResetColor(colorMap: Map<Board, number>)
{
const key = AppToaster.show({
message: <>
<span style={{ marginRight: "5px" }}></span>
<button onClick={() =>
{
if (!CommandState.CommandIng)
CommandWrap(() =>
{
for (let [br, color] of colorMap)
{
br.ColorIndex = color;
}
AppToaster.dismiss(key);
}, "还原上次颜色");
else
AppToaster.show({
message: "命令执行中,请先结束当前命令!",
timeout: 5000,
intent: Intent.WARNING,
});
}}></button>
<button onClick={() =>
{
if (!CommandState.CommandIng)
CommandWrap(() =>
{
for (let [br, color] of colorMap)
{
ResetDefaultColor(br);
}
AppToaster.dismiss(key);
}, "还原初始颜色");
else
AppToaster.show({
message: "命令执行中,请先结束当前命令!",
timeout: 5000,
intent: Intent.WARNING,
});
}}></button>
</>,
timeout: 60000,
});
}
function ResetDefaultColor(br: Board)
{
let boardType = br.BoardType;
if (boardType === BoardType.Layer)
{
br.ColorIndex = 2;
}
else if (boardType === BoardType.Vertical)
{
br.ColorIndex = 11;
}
else
{
br.ColorIndex = br.OpenDir === BoardOpenDir.None ? 3 : 6;
}
}

@ -16,6 +16,7 @@ import { SelectSetBase } from '../../Editor/SelectBase';
import { BoardModalType } from '../../UI/Components/Board/BoardModalType';
import { DialogUserConfig } from '../../UI/Components/Board/UserConfigComponent';
import { CommonModal } from '../../UI/Components/Modal/ModalContainer';
import { ResetColor } from '../ChangeColorByBoard/ResetColor';
import { BoardInfoSelectRoomCabinetPanel } from './BoardInfoSelectRoomCabinetPanel';
import { ChangeColorByRoomOrCabinetStore } from './ChangeColorByRoomOrCabinetStore';
@ -59,6 +60,7 @@ export class ChangeColorByRoomCabinet implements Command
let boardMap = new Map<number, Board[]>();
let option = store.m_Option;
let colorIndex = 1;
const oldColorMap = new Map<Board, number>();
for (let br of brs)
{
let key: string = "";
@ -78,6 +80,7 @@ export class ChangeColorByRoomCabinet implements Command
colorMap.set(key, colorIndex);
colorIndex++;
}
oldColorMap.set(br, br.ColorIndex);
br.ColorIndex = colors[color];
let arr = boardMap.get(color);
@ -98,7 +101,7 @@ export class ChangeColorByRoomCabinet implements Command
boardMapArr.sort((b1, b2) => b1.mtl.localeCompare(b2.mtl));
app.Editor.ModalManage.RenderModeless(BoardColorByRoomOrCabinetDialog, { data: boardMapArr }, { canMinimize: false });
app.Editor.ModalManage.RenderModeless(BoardColorByRoomOrCabinetDialog, { data: boardMapArr, oldColorMap }, { canMinimize: false });
}
}
@ -110,6 +113,7 @@ export class BoardColorByRoomOrCabinetDialog extends React.Component<{
brs: Board[];
color: number;
}[];
oldColorMap: Map<Board, number>;
}, {}> {
//当前选择的板材列表
@ -173,6 +177,7 @@ export class BoardColorByRoomOrCabinetDialog extends React.Component<{
{
for (let fun of this._RemoveFun)
fun();
ResetColor(this.props.oldColorMap);
}
public render()
@ -182,8 +187,10 @@ export class BoardColorByRoomOrCabinetDialog extends React.Component<{
className="boardColorMaterialMap"
title="房间柜体列表"
hasConfig={false}
close={() => app.Editor.ModalManage.Destory()
}
close={() =>
{
app.Editor.ModalManage.Destory();
}}
>
<ul className={Classes.LIST_UNSTYLED + " center brmtlmap"}>
{

Loading…
Cancel
Save