确定值前判断值是否有效

pull/93/head
Zoe 6 years ago
parent 82a6060cdd
commit 04f6f6db7e

@ -24,10 +24,10 @@ export class DrawLeftRight implements Command
if (state === ModalState.Ok) if (state === ModalState.Ok)
{ {
let data = store.m_BoardOption; let data = store.m_BoardOption;
let lenght = data.height ? parseFloat(data.height) : 0; let lenght = parseFloat(data.height);
let width = data.width ? parseFloat(data.width) : 0; let width = parseFloat(data.width);
let thickness = data.thickness ? parseFloat(data.thickness) : 0; let thickness = parseFloat(data.thickness);
let spacing = data.spaceSize ? parseFloat(data.spaceSize) : 0; let spacing = parseFloat(data.spaceSize);
let leftBarod = Board.CreateBoard(lenght, width, thickness, BoardType.Vertical) let leftBarod = Board.CreateBoard(lenght, width, thickness, BoardType.Vertical)
let rightBoard = Board.CreateBoard(lenght, width, thickness, BoardType.Vertical); let rightBoard = Board.CreateBoard(lenght, width, thickness, BoardType.Vertical);

@ -116,3 +116,14 @@ export async function readClipboardText()
return await navigator["clipboard"].readText(); return await navigator["clipboard"].readText();
return ""; return "";
} }
/**
*
*
* @param {string} v
* @returns
*/
export function isVailInput(v: string, canZero = true)
{
return !(v === "" || isNaN(Number(v)));
}

@ -3,6 +3,8 @@ import * as React from 'react';
import { Checkbox, Classes, Radio, RadioGroup } from '@blueprintjs/core'; import { Checkbox, Classes, Radio, RadioGroup } from '@blueprintjs/core';
import { BrRelativePos, BoardOption, TBBoardOption } from '../../Store/BoardInterface'; import { BrRelativePos, BoardOption, TBBoardOption } from '../../Store/BoardInterface';
import { BoardStore } from '../../Store/BoardStore'; import { BoardStore } from '../../Store/BoardStore';
import { isVailInput } from '../../../Common/Utils';
//设置板件数据组件 //设置板件数据组件
export const SetBoardDataItem = observer(({ k, opt, title, isDisabled = false }: { k: string, title: string, isDisabled?: boolean, opt: BoardOption }) => export const SetBoardDataItem = observer(({ k, opt, title, isDisabled = false }: { k: string, title: string, isDisabled?: boolean, opt: BoardOption }) =>
@ -11,11 +13,19 @@ export const SetBoardDataItem = observer(({ k, opt, title, isDisabled = false }:
{title}: {title}:
</span> </span>
<input <input
className="bp3-input" className={isVailInput(opt[k]) ? "bp3-input" : "bp3-input bp3-intent-danger"}
value={opt[k]} value={opt[k]}
disabled={isDisabled} disabled={isDisabled}
onChange={e => onChange={e =>
{ {
if (!isVailInput(e.target.value))
{
e.target.className += " bp3-intent-danger"
}
else
{
e.target.className = "bp3-input"
}
opt[k] = e.target.value; opt[k] = e.target.value;
}} }}
/> />
@ -26,10 +36,18 @@ export const SetBoardDataItem2 = observer(({ k, opt, title }: { k: string, title
<label className="bp3-label bp3-inline"> <label className="bp3-label bp3-inline">
<span>{title}</span> <span>{title}</span>
<input <input
className="bp3-input" className={isVailInput(opt[k]) ? "bp3-input" : "bp3-input bp3-intent-danger"}
value={opt[k]} value={opt[k]}
onChange={e => onChange={e =>
{ {
if (!isVailInput(e.target.value))
{
e.target.className += " bp3-intent-danger"
}
else
{
e.target.className = "bp3-input"
}
opt[k] = e.target.value; opt[k] = e.target.value;
}} }}
dir="auto" /> dir="auto" />

@ -60,6 +60,11 @@ export class BoardModal extends React.Component<BoardModalProps, BoardModalState
{ {
super(props); super(props);
let store = this.props.store; let store = this.props.store;
this.state = {
configName: "默认",
configs: new Map()
};
this.m_ModalMap = new Map([ this.m_ModalMap = new Map([
[BoardModalType.LR, <LeftRightBoardModal store={store as SideBoardStore} />], [BoardModalType.LR, <LeftRightBoardModal store={store as SideBoardStore} />],
[BoardModalType.TB, <TopBottomBoardModal store={store as TopBottomBoardStore} />], [BoardModalType.TB, <TopBottomBoardModal store={store as TopBottomBoardStore} />],
@ -68,11 +73,7 @@ export class BoardModal extends React.Component<BoardModalProps, BoardModalState
[BoardModalType.Ve, <VerticalBoardModal store={store as VerticalBoardStore} />], [BoardModalType.Ve, <VerticalBoardModal store={store as VerticalBoardStore} />],
[BoardModalType.Sg, <SingleBoardModal store={store as SingleBoardStore} />], [BoardModalType.Sg, <SingleBoardModal store={store as SingleBoardStore} />],
[BoardModalType.Skt, <ClosingStripModal store={store as ClosingStripStore} />], [BoardModalType.Skt, <ClosingStripModal store={store as ClosingStripStore} />],
]) ]);
this.state = {
configName: "默认",
configs: new Map(),
}
} }
//保存配置 //保存配置
handleSaveConfig = async () => handleSaveConfig = async () =>
@ -294,7 +295,12 @@ export class BoardModal extends React.Component<BoardModalProps, BoardModalState
text="确定" text="确定"
onClick={() => onClick={() =>
{ {
store.OnOk(ModalState.Ok, this.props.type != BoardModalType.Skt); if (store.HasInvailValue())
store.OnOk(ModalState.Ok, this.props.type != BoardModalType.Skt);
else
{
alert("请输入有效值")
}
}} /> }} />
<Button className="LeftRightBtn bp3-intent-danger" text="取消" onClick={() => <Button className="LeftRightBtn bp3-intent-danger" text="取消" onClick={() =>

@ -6,6 +6,7 @@ import { KeyBoard } from '../../Common/KeyEnum';
import { ModalState, BoardOption, BehindBoardOption, BehindHeightPositon, BrRelativePos, LayerBoardOption, LayerNailOption, VerticalBoardOption, TBBoardOption, SingleBoardOption, ClosingStripOption, StripType } from './BoardInterface'; import { ModalState, BoardOption, BehindBoardOption, BehindHeightPositon, BrRelativePos, LayerBoardOption, LayerNailOption, VerticalBoardOption, TBBoardOption, SingleBoardOption, ClosingStripOption, StripType } from './BoardInterface';
import { BoardType } from '../../DatabaseServices/Board'; import { BoardType } from '../../DatabaseServices/Board';
import { configOption } from '../Components/Board/BoardModal'; import { configOption } from '../Components/Board/BoardModal';
import { isVailInput } from '../../Common/Utils';
export class BoardStore export class BoardStore
{ {
@ -55,6 +56,22 @@ export class BoardStore
newConfig.boardData = toJS(this.m_BoardOption); newConfig.boardData = toJS(this.m_BoardOption);
return newConfig; return newConfig;
} }
HasInvailValue()
{
return Object.keys(this.m_BoardOption).every(k =>
{
let v = this.m_BoardOption[k]
if (typeof v === "string")
{
if (k === "width" || k === "height" || k === "thickness" || k === "count")
{
if (v === "0") return false;
}
return isVailInput(v);
}
return true;
})
}
} }
export class SideBoardStore extends BoardStore export class SideBoardStore extends BoardStore
@ -101,6 +118,19 @@ export class TopBottomBoardStore extends BoardStore
newConfig.bottomBoardData = toJS(this.bottomBoardOption); newConfig.bottomBoardData = toJS(this.bottomBoardOption);
return newConfig; return newConfig;
} }
HasInvailValue()
{
let values = Object.values(this.topBoardOption).concat(Object.values(this.bottomBoardOption));
return values.every(v =>
{
if (typeof v === "string")
{
return isVailInput(v);
}
return true;
})
}
} }
export class BehindBoardStore extends BoardStore export class BehindBoardStore extends BoardStore
@ -161,6 +191,19 @@ export class LayerBoardStore extends BoardStore
newConfig.nailData = toJS(this.layerNailOption); newConfig.nailData = toJS(this.layerNailOption);
return newConfig; return newConfig;
} }
HasInvailValue()
{
return super.HasInvailValue() && Object.values(this.layerNailOption).every(v =>
{
if (typeof v === "string")
{
return isVailInput(v);
}
return true;
})
}
} }
export class VerticalBoardStore extends BoardStore export class VerticalBoardStore extends BoardStore

Loading…
Cancel
Save