!2277 优化:开门方向与板名称增加对门的校验

pull/2273/MERGE
林伟强 1 year ago committed by ChenX
parent 5fcff095f0
commit 1e8b7a8fea

@ -5,7 +5,7 @@ import * as React from 'react';
import { app } from '../../../ApplicationServices/Application';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { Intent, Toaster } from '../../../Common/Toaster';
import { Intent } from '../../../Common/Toaster';
import { FixedNotZero } from '../../../Common/Utils';
import { safeEval } from '../../../Common/eval';
import { Board } from '../../../DatabaseServices/Entity/Board';
@ -401,34 +401,36 @@ export const ItemName = observer(
onChange={e =>
{
opt.name = e.target.value;
}}
onBlur={() =>
{
if (opt.openDir == null) return;
if (opt.openDir === BoardOpenDir.None)//为非门板且名称中有开门只进行提示
//猜测用户输入的门板类型 非门板 左开门板 ...
let guessDir: BoardOpenDir = BoardOpenDir.None;
if (opt.name.includes("门"))
{
if (opt.name.includes("开门"))
{
Toaster({
message: `当前板类型是非门板,但是板名称为${opt.name},请检查是否正确!`,
timeout: 3000,
intent: Intent.WARNING,
});
return;
}
return;//其余情况不提示
let dir = openDirOptions.find((dir, i) => i !== 0 && opt.name.includes(dir.label));
if (dir)
guessDir = dir.value;
}
for (let dirOption of openDirOptions)
//如果当前的类型和用户输入的不一致
if (guessDir !== opt.openDir)
{
if (opt.name.includes(dirOption.label) && opt.openDir !== dirOption.value)//如果板名称有板方向的值且方向不等于当前方向
{
ShowToasterOpenDirAndNameCheck("更改开门方向", () =>
if (guessDir === BoardOpenDir.None)
ShowToasterOpenDirAndNameCheck(opt, "类型改为非门板", () =>
{
opt.openDir = dirOption.value;
opt.openDir = guessDir;
});
else
ShowToasterOpenDirAndNameCheck(opt, "更改开门方向", () =>
{
opt.openDir = guessDir;
});
break;
}
}
else
AppToaster.dismiss("openDirCheck");
}}
dir="auto" />
</label>
@ -812,49 +814,48 @@ export const BoardOpenDirSelect = observer((data: { opt?: BoardConfigOption, cla
options={openDirOptions}
onChange={e =>
{
const openDir = safeEval(e.target.value);
data.opt.openDir = openDir;
const currentLabel = openDirOptions[openDir];
if (data.opt.name.includes(currentLabel.label)) return;//名字和当前的门板类型一样就不校验
if (openDir === BoardOpenDir.None && openDirOptions.filter((v) => data.opt.name.includes(v.label)).length && data.opt.name)//板名称有方向值,开门方向修改成非门板时有提示
//猜测用户输入的门板类型 非门板 左开门板 ...
let guessDir: BoardOpenDir = BoardOpenDir.None;
if (data.opt.name.includes("门"))
{
ShowToasterOpenDirAndNameCheck("更改板名", () =>
{
data.opt.name = "";
});
return;
let dir = openDirOptions.find((dir, i) => i !== 0 && data.opt.name.includes(dir.label));
if (dir)
guessDir = dir.value;
}
for (let dirName of openDirOptions)
if (openDir !== guessDir)
{
if (dirName.label === openDirOptions[0].label) continue;
const index = data.opt.name.indexOf(dirName.label);
if (index > -1)
if (openDir === BoardOpenDir.None)//板名称有方向值,开门方向修改成非门板时有提示
{
ShowToasterOpenDirAndNameCheck("更改板名", () =>
ShowToasterOpenDirAndNameCheck(data.opt, "更改板名为:", () =>
{
const nameList = data.opt.name.split("");
nameList[index] = currentLabel.label;
data.opt.name = nameList.join("");
data.opt.name = "";
});
break;
}
else
ShowToasterOpenDirAndNameCheck(data.opt, "更改板名为:" + `${currentLabel.label}开门板`, () =>
{
data.opt.name = `${currentLabel.label}开门板`;
});
}
else
AppToaster.dismiss("openDirCheck");
}}
/>
</label>
);
export function ShowToasterOpenDirAndNameCheck(text: string, callback: () => void)
export function ShowToasterOpenDirAndNameCheck(opt: { name: string; openDir?: BoardOpenDir; }, text: string, callback: () => void)
{
AppToaster.show({
message: <>
{"板名称的方向与开门方向不同,请检查"}
{`当前开门方向为${openDirOptions.find(v => v.value === opt.openDir).label},板名称为${opt.name},请检查是否正确`}
&nbsp;&nbsp;
<button
onClick={() =>
@ -865,7 +866,7 @@ export function ShowToasterOpenDirAndNameCheck(text: string, callback: () => voi
{text}
</button>
</>,
timeout: 3000,
timeout: 8000,
intent: Intent.WARNING,
}, "openDirCheck");
}

Loading…
Cancel
Save