From 85f17bbe039233be63d77f0c1a9d73d04a9c5bc2 Mon Sep 17 00:00:00 2001 From: ZoeLeeFZ Date: Fri, 7 Feb 2020 22:11:52 +0800 Subject: [PATCH] =?UTF-8?q?!720=20=E5=8A=A0=E5=85=A5=E9=85=B7=E5=AE=B6?= =?UTF-8?q?=E4=B9=90=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/BoardFindModify.ts | 4 +- src/Add-on/KJLImport.ts | 6 +- src/Common/CheckoutVaildValue.ts | 4 ++ src/Common/StoreageKeys.ts | 1 + src/Editor/UserConfig.ts | 23 +++++- src/UI/Components/Modal/ModalStyle/Modal.less | 21 ++++++ .../Modal/OptionModal/ConfigDialog.tsx | 12 ++-- .../Modal/OptionModal/DrawConfigPanel.tsx | 72 +++++++++++++------ src/UI/Components/Toaster.tsx | 4 +- src/UI/Css/style.less | 4 ++ src/UI/Store/BoardInterface.ts | 2 +- 11 files changed, 118 insertions(+), 35 deletions(-) diff --git a/src/Add-on/BoardFindModify.ts b/src/Add-on/BoardFindModify.ts index a31245a8a..8205c83bf 100644 --- a/src/Add-on/BoardFindModify.ts +++ b/src/Add-on/BoardFindModify.ts @@ -312,8 +312,8 @@ export class BoardFindModify implements Command } private async FindMaxSizeBrs() { - let maxHeight = userConfig.maxHeight; - let maxWidth = userConfig.maxWidth; + let maxHeight = userConfig.maxSize.height; + let maxWidth = userConfig.maxSize.width; const isLongBr = (br: Board) => { diff --git a/src/Add-on/KJLImport.ts b/src/Add-on/KJLImport.ts index bb7e6714e..6691d4435 100644 --- a/src/Add-on/KJLImport.ts +++ b/src/Add-on/KJLImport.ts @@ -189,14 +189,16 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare let bmodel = model as KJL_ParamModel_Board; if (!bmodel.paramPlankPath) return; - + const kjlConfig = userConfig.kjlConfig; let [pls, edgesBandings] = ParsePathOutlineAndHole(bmodel.paramPlankPath.path, edgeBandingAll); let br = new Board(); br.Name = model.modelName; br.BoardProcessOption[EBoardKeyList.RoomName] = roomName; br.BoardProcessOption[EBoardKeyList.CabinetName] = gName; - br.GroovesAddDepth = 1; + br.GroovesAddLength = safeEval(kjlConfig.grooveAddLength); + br.GroovesAddWidth = safeEval(kjlConfig.grooveAddWidth); + br.GroovesAddDepth = safeEval(kjlConfig.grooveAddDepth); br.Thickness = bmodel.thickness; const isInv = pls[0].Area2 < 0; br.ContourCurve = pls[0]; diff --git a/src/Common/CheckoutVaildValue.ts b/src/Common/CheckoutVaildValue.ts index 73b3c3eb7..f40dbd200 100644 --- a/src/Common/CheckoutVaildValue.ts +++ b/src/Common/CheckoutVaildValue.ts @@ -15,6 +15,7 @@ export enum CheckObjectType RLB = "rotateLayerBoard", BBC = "boardbatchcurtail", BBS = "lookoverboardinfos", + OnlyNumber = "onlyNum", } export namespace CheckoutValid @@ -91,6 +92,9 @@ export namespace CheckoutValid return CheckBoardBatchCurtail(k, v); case CheckObjectType.BBS: return CheckLookOverBoardInfos(k, v); + case CheckObjectType.OnlyNumber: + if (!isNum(v)) + return "数值不能为空且必须为数字"; default: return ""; } diff --git a/src/Common/StoreageKeys.ts b/src/Common/StoreageKeys.ts index 79081fcda..1e5b4f9ca 100644 --- a/src/Common/StoreageKeys.ts +++ b/src/Common/StoreageKeys.ts @@ -13,4 +13,5 @@ export enum StoreageKeys Goods = "Goods_", DrillTemp = "drilltemp_", DrillReactor = "drillRreactor", + kjlConfig = "kjl", } diff --git a/src/Editor/UserConfig.ts b/src/Editor/UserConfig.ts index fb6f87989..11b7232a1 100644 --- a/src/Editor/UserConfig.ts +++ b/src/Editor/UserConfig.ts @@ -5,6 +5,13 @@ import { StoreageKeys } from "../Common/StoreageKeys"; import { IWineRackOption } from "../UI/Store/WineRackInterface"; import { PostJson, RequestStatus } from "../Common/Request"; import { ConfigUrls } from "../Common/HostUrl"; +import { IBaseOption, IGrooveOption } from "../UI/Store/BoardInterface"; + +export interface IMaxSizeProps extends IBaseOption +{ + height: number; + width: number; +} /** * TODO:保存用户的配置,先保存在sessionStroage @@ -12,8 +19,10 @@ import { ConfigUrls } from "../Common/HostUrl"; export class UserConfig { _renderType: RenderType = RenderType.Wireframe; - @observable maxHeight = 2440; - @observable maxWidth = 1220; + @observable maxSize: IMaxSizeProps = { + height: 2440, + width: 1220, + } isContinuousDraw = false; //是否连续绘制层板立板背板... @observable private _drillConfigs: Map = new Map(); @observable openDrillingReactor = true; @@ -24,6 +33,11 @@ export class UserConfig userConfigName: { [key: string]: string; } = {}; @observable modeling2HoleRad = 20; //圆造型小于等于该值拆成孔数据 @observable isAdmin = false; + @observable kjlConfig: IGrooveOption = { + grooveAddLength: "0", + grooveAddWidth: "0", + grooveAddDepth: "1", + }; constructor() { this.Init(); @@ -35,6 +49,11 @@ export class UserConfig this._renderType = parseFloat(type); this.openDrillingReactor = !!localStorage.getItem(StoreageKeys.DrillReactor); + + const kjlCof = localStorage.getItem(StoreageKeys.kjlConfig); + if (kjlCof) + Object.assign(this.kjlConfig, JSON.parse(kjlCof)); + } set RenderType(t: RenderType) { diff --git a/src/UI/Components/Modal/ModalStyle/Modal.less b/src/UI/Components/Modal/ModalStyle/Modal.less index cbd4150d4..c102615fa 100644 --- a/src/UI/Components/Modal/ModalStyle/Modal.less +++ b/src/UI/Components/Modal/ModalStyle/Modal.less @@ -195,6 +195,27 @@ } } +#modal #optionModal .kjl-config { + &>label { + width: 50%; + display: flex; + + &>span:first-child { + width: 30%; + } + + &>input, + &>span:last-child { + width: 70%; + + input { + width: 100%; + margin: 0; + } + } + } +} + @import (less) "BoardModal.less"; @import (less) "ArrayModal.less"; @import (less) "DrillModal.less"; diff --git a/src/UI/Components/Modal/OptionModal/ConfigDialog.tsx b/src/UI/Components/Modal/OptionModal/ConfigDialog.tsx index a0b536486..601699368 100644 --- a/src/UI/Components/Modal/OptionModal/ConfigDialog.tsx +++ b/src/UI/Components/Modal/OptionModal/ConfigDialog.tsx @@ -1,6 +1,6 @@ import React = require("react"); import { Button, Card, Classes, H4, Icon, Intent, Tab, Tabs } from "@blueprintjs/core"; -import { observable } from "mobx"; +import { observable, toJS } from "mobx"; import { observer } from "mobx-react"; import { Color } from "three"; import { begin } from "xaop"; @@ -12,6 +12,7 @@ import { userConfig } from "../../../../Editor/UserConfig"; import { DisplayConfigPanel } from "./DisplayConfigPanel"; import { DrawConfigPanel } from "./DrawConfigPanel"; import { SystemConfigPanel } from "../SystemConfig"; +import { StoreageKeys } from "../../../../Common/StoreageKeys"; export enum EOptionTabId { @@ -33,12 +34,13 @@ export class ConfigStore extends Singleton app.Editor.ModalManage.Clear(); app.Viewer.Renderer.setClearColor(new Color(this.bgColor), 1); app.Viewer.UpdateRender(); - } + }; OnOK = () => { this.oldBgcolor = this.bgColor; + localStorage.setItem(StoreageKeys.kjlConfig, JSON.stringify(toJS(userConfig.kjlConfig))); app.Editor.ModalManage.Clear(); - } + }; } /** @@ -79,7 +81,7 @@ export class ConfigDialog extends React.Component this.curFileTitle = fserver.currentFileInfo.name; else this.curFileTitle = "新图纸"; - } + }; render() { const store = ConfigStore.GetInstance() as ConfigStore; @@ -131,6 +133,6 @@ export class ConfigDialog extends React.Component - ) + ); } } diff --git a/src/UI/Components/Modal/OptionModal/DrawConfigPanel.tsx b/src/UI/Components/Modal/OptionModal/DrawConfigPanel.tsx index f2cb7cece..2a613d14e 100644 --- a/src/UI/Components/Modal/OptionModal/DrawConfigPanel.tsx +++ b/src/UI/Components/Modal/OptionModal/DrawConfigPanel.tsx @@ -2,9 +2,13 @@ import { Card, Checkbox, Classes, H5, Label } from '@blueprintjs/core'; import { observer } from 'mobx-react'; import * as React from 'react'; import { app } from '../../../../ApplicationServices/Application'; -import { UserConfig } from '../../../../Editor/UserConfig'; -import { safeEval } from '../../../../Common/eval'; +import { UserConfig, IMaxSizeProps } from '../../../../Editor/UserConfig'; import { StoreageKeys } from '../../../../Common/StoreageKeys'; +import { observable, has } from 'mobx'; +import { DataAdapter } from './../../../../Common/DataAdapter'; +import { ToasterInput } from '../../Toaster'; +import { CheckObjectType } from '../../../../Common/CheckoutVaildValue'; +import { IUiOption } from '../../../Store/BoardInterface'; interface IConfigProps { @@ -13,6 +17,7 @@ interface IConfigProps @observer export class DrawConfigPanel extends React.Component { + @observable maxSizeConfig: IUiOption; private toggleDrillingReactor = () => { const userConfig = this.props.store; @@ -26,10 +31,15 @@ export class DrawConfigPanel extends React.Component { userConfig.openAutoCuttingReactor = !userConfig.openAutoCuttingReactor; app._autoCuttingReactor.Enable = userConfig.openAutoCuttingReactor; }; + UNSAFE_componentWillMount() + { + const cof = this.props.store; + this.maxSizeConfig = DataAdapter.ConvertUIData(cof.maxSize); + } public render() { const userConfig = this.props.store; - + const { kjlConfig } = userConfig; return (
排钻配置
@@ -45,24 +55,44 @@ export class DrawConfigPanel extends React.Component { onChange={this.toggleAutoCuttingReactor} />
板件超长
- - + { + [["板长", "height"], ["板宽", "width"]].map(([t, k]) => + + ) + } +
酷家乐导入配置
+
+ { + [["槽加长", "grooveAddLength"], ["槽加宽", "grooveAddWidth"], ["槽加深", "grooveAddDepth"]].map(([t, k]) => + + ) + } +
); } diff --git a/src/UI/Components/Toaster.tsx b/src/UI/Components/Toaster.tsx index fcc1d391a..cb30c8079 100644 --- a/src/UI/Components/Toaster.tsx +++ b/src/UI/Components/Toaster.tsx @@ -13,7 +13,7 @@ export const AppToaster = Toaster.create({ interface IToasterInputProps extends ISetItemOption { inputClassName?: string; - onBlur?(e?); + onBlur?(e?, hasError?: boolean); onClick?(e?); callback?: Function; } @@ -82,7 +82,7 @@ export class ToasterInput extends React.Component this.hideErrorMsg = true; if (this.props.onBlur) { - this.props.onBlur(e); + this.props.onBlur(e, this.errorMsg !== ""); this.getErrorMsg(this.showData[this.props.optKey]); } }; diff --git a/src/UI/Css/style.less b/src/UI/Css/style.less index 8e60a40a4..fd159a90a 100644 --- a/src/UI/Css/style.less +++ b/src/UI/Css/style.less @@ -616,3 +616,7 @@ img { .right{ text-align: right; } +.flex-wrap{ + .flex(); + flex-wrap: wrap; +} diff --git a/src/UI/Store/BoardInterface.ts b/src/UI/Store/BoardInterface.ts index 92690a977..9d5b115b0 100644 --- a/src/UI/Store/BoardInterface.ts +++ b/src/UI/Store/BoardInterface.ts @@ -250,7 +250,7 @@ export interface IGrooveOption extends IBaseOption grooveAddLength: string;//槽加长/宽/高 grooveAddWidth: string; grooveAddDepth: string; - knifeRadius: string; + knifeRadius?: string; } export interface IShinkOption extends IBaseOption