You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/src/Common/CheckoutVaildValue.ts

346 lines
11 KiB

import { EBoardKeyList } from "./BoardKeyList";
import { safeEval } from "./eval";
5 years ago
import { isNum } from "./Utils";
export enum CheckObjectType
{
BR = "board",
DR = "drill",
AR = "array",
Do = "door",
RC = "referenceCutting",
WR = "winerack",
Lat = "lattice",
RLB = "rotateLayerBoard",
BBC = "boardbatchcurtail",
BBS = "lookoverboardinfos",
}
export namespace CheckoutValid
{
export function HasInvailValue(obj: Object, objType: CheckObjectType)
{
switch (objType)
{
case CheckObjectType.BR:
return !Object.keys(obj).every(k =>
CheckoutBoardOption(k, obj[k]) === ""
)
case CheckObjectType.AR:
return !Object.keys(obj).every(k =>
CheckoutArrayOption(k, obj[k]) === ""
)
case CheckObjectType.Do:
return !Object.keys(obj).every(k =>
CheckoutDoorOption(k, obj[k]) === ""
)
case CheckObjectType.RC:
return !Object.keys(obj).every(k =>
CheckOutReferenceCuttingOption(k, obj[k]) === ""
)
case CheckObjectType.WR:
return !Object.keys(obj).every(k =>
CheckoutWineRackOption(k, obj[k]) === ""
)
case CheckObjectType.Lat:
return !Object.keys(obj).every(k =>
CheckoutLatticeOption(k, obj[k]) === ""
)
case CheckObjectType.RLB:
return !Object.keys(obj).every(k =>
CheckoutRotateLayerBoardOption(k, obj[k]) === ""
)
case CheckObjectType.BBC:
return !Object.keys(obj).every(k =>
CheckBoardBatchCurtail(k, obj[k]) === ""
)
case CheckObjectType.BBS:
return !Object.keys(obj).every(k =>
CheckLookOverBoardInfos(k, obj[k]) === ""
)
default:
return true;
}
}
export function CheckOption(type: CheckObjectType, k: string, v: string)
{
switch (type)
{
case CheckObjectType.BR:
return CheckoutBoardOption(k, v);
case CheckObjectType.DR:
return CheckoutDrillOption(k, v);
case CheckObjectType.AR:
return CheckoutArrayOption(k, v);
case CheckObjectType.Do:
return CheckoutDoorOption(k, v);
case CheckObjectType.RC:
return CheckOutReferenceCuttingOption(k, v);
case CheckObjectType.WR:
return CheckoutWineRackOption(k, v);
case CheckObjectType.Lat:
return CheckoutLatticeOption(k, v);
case CheckObjectType.RLB:
return CheckoutRotateLayerBoardOption(k, v);
case CheckObjectType.BBC:
return CheckBoardBatchCurtail(k, v);
case CheckObjectType.BBS:
return CheckLookOverBoardInfos(k, v);
default:
return "";
}
}
export function CheckoutBoardOption(k: string, v: string): string
{
switch (k)
{
case "calcHeight":
case "calcWidth":
if (isNaN(safeEval(v, { L: 1, H: 1, W: 1 })))
return "表达式错误";
return "";
case "name":
case "boardPosition":
case "boardRelative":
case "type":
case "roomName":
case "cabinetName":
case "boardName":
case "material":
case "color":
case "striptype":
case "spliteHeight":
case "spliteWidth":
case "spliteThickness":
return "";
case "sealedUp":
case "sealedDown":
case "sealedLeft":
case "sealedRight":
if (!(safeEval(v) >= 0))
return "数值必须大于等于0";
return "";
case "height":
case "width":
case "count":
case "divCount":
case "thickness":
case "footThickness":
if (!(safeEval(v) > 0))
return "数值必须大于0";
default:
if (!isNum(v))
return "数值不能为空且必须为数字"
}
return "";
}
export function CheckoutDrillOption(k: string, v: string): string
{
switch (k)
{
case "ljgPos":
case "woodPinPos":
if (isNaN(safeEval(v, { L: 1, H: 1, W: 1 })))
return "表达式错误";
return "";
case "name":
case "spacing":
return "";
case "pxlOffset":
case "collsionDist":
case "tHoleOffset":
if (v === "")
return "不能为空";
return "";
case "pxlRad":
case "wbHoleRad":
if (!(isNum(v)))
return "数值不能为空且必须为数字";
else if ((safeEval(v) < 0))
return "数值不能小于0";
else
return "";
case "pxlDepth":
case "ljgRad":
case "ljgLength":
case "ymjRad":
case "ymjDepth":
case "wbHoleDepth":
case "wsHoleLength":
case "wdepth":
case "originDist":
case "retDist":
default:
if (!(isNum(v)))
return "数值不能为空且必须为数字";
else if (!(safeEval(v) > 0))
return "数值必须大于0";
}
return "";
}
export function CheckoutArrayOption(k: string, v: string): string
{
switch (k)
{
case "type":
case "method":
case "isCorrect":
return "";
}
if (!isNum(v))
return "数值不能为空且必须为数字";
switch (k)
{
case "row":
case "col":
if (safeEval(v) > 32767 || safeEval(v) < 1 || safeEval(v) % 1 !== 0)
return "请输入1-32767间的整数";
case "itemTotal":
if (safeEval(v) > 32767 || safeEval(v) < 2 || safeEval(v) % 1 !== 0)
return "请输入2-32767间整数";
case "betweenAngle":
if (safeEval(v) < 0)
return "数值不可小于0";
case "fillAngle":
if (safeEval(v) === 0)
return "数值不可等于0";
case "arrayAngle":
if (Math.abs(safeEval(v)) > 360)
return "角度不可大于360";
default:
}
return "";//ok
}
export function CheckoutDoorOption(k: string, v: string): string
{
switch (k)
{
case "row":
case "col":
let val = safeEval(v);
if (!isNaN(val) && val !== Math.floor(val))
return "数值必须1~20整数";
default:
return CheckoutBoardOption(k, v);
}
}
export function CheckoutRotateLayerBoardOption(k: string, v: string): string
{
switch (k)
{
case "angle":
let angle = safeEval(v);
if (!(Math.abs(angle) <= 45))
return "数值必须为±45间的整数";
case "length":
case "frontDist":
case "backDist":
default:
if (!isNum(v))
return "数值不能为空且必须为数字";
return "";
}
}
export function CheckBoardBatchCurtail(k: string, v: string): string
{
switch (k)
{
case "front":
case "back":
case "left":
case "right":
default:
if (!isNum(v))
return "数值不能为空且必须为数字";
return "";
}
}
export function CheckLookOverBoardInfos(k: string, v: string): string
{
switch (k)
{
case EBoardKeyList.Height:
case EBoardKeyList.Width:
case EBoardKeyList.Thick:
case EBoardKeyList.UpSealed:
case EBoardKeyList.DownSealed:
case EBoardKeyList.LeftSealed:
case EBoardKeyList.RightSealed:
if (!isNum(v))
return "数值不能为空且必须为数字";
default:
return "";
}
}
export function CheckOutReferenceCuttingOption(k: string, v: string): string
{
switch (k)
{
case "offset":
if (!isNum(v))
return "数值不能为空且必须为数字";
default:
return "";
}
}
export function CheckoutWineRackOption(k: string, v: string): string
{
switch (k)
{
case "calcDepth":
if (isNaN(safeEval(v, { L: 1, H: 1, W: 1 })))
return "表达式错误";
return "";
case "heightCount":
case "widthCount":
case "leftEdge":
case "rightEdge":
case "topEdge":
case "bottomEdge":
case "boardThick":
case "brThick2":
case "gripWidth":
if (!(safeEval(v) > 0))
return "数值必须大于0";
default:
if (!isNum(v))
{
return "数值不能为空且必须为数字"
}
return "";
}
}
export function CheckoutLatticeOption(k: string, v: string): string
{
switch (k)
{
case "thickness":
case "gripWidth":
case "gripDepth":
case "arcLen":
if (safeEval(v) <= 0)
return "数值必须大于0";
case "widthCount":
case "depthCount":
case "upSealed":
case "downSealed":
case "leftSealed":
case "rightSealed":
case "knifeRad":
case "upCut":
case "downCut":
if (safeEval(v) < 0)
return "数值不能小于0";
default:
if (!(isNum(v)))
{
return "数值不能为空且必须为数字"
}
return "";
}
}
}