From 118c68c9dac3d27724dc92411a39ce978607b087 Mon Sep 17 00:00:00 2001 From: Davor Hrg Date: Sun, 22 Aug 2021 00:53:30 +0200 Subject: [PATCH] types and converter for choice input --- .../Customizer/customizerConverter.ts | 25 ++++++++++++++ .../helpers/cadPackages/jsCad/jscadParams.ts | 34 ++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/app/web/src/components/Customizer/customizerConverter.ts b/app/web/src/components/Customizer/customizerConverter.ts index fee6128..7409c17 100644 --- a/app/web/src/components/Customizer/customizerConverter.ts +++ b/app/web/src/components/Customizer/customizerConverter.ts @@ -2,11 +2,22 @@ type CadhubTypeNames = 'number' | 'string' | 'boolean' +export interface CadhubStringOption { + name: string + value: string +} + +export interface CadhubNumberOption { + name: string + value: number +} + interface CadhubParamBase { type: CadhubTypeNames caption: string name: string } + export interface CadhubStringParam extends CadhubParamBase { type: 'string' initial: string @@ -25,11 +36,25 @@ export interface CadhubNumberParam extends CadhubParamBase { step?: number decimal?: number } +export interface CadhubStringChoiceParam extends CadhubParamBase { + type: 'string' + input: 'choice' + initial: string + options: Array | Array +} +export interface CadhubNumberChoiceParam extends CadhubParamBase { + type: 'number' + input: 'choice' + initial: number + options: Array | Array +} export type CadhubParams = | CadhubStringParam | CadhubBooleanParam | CadhubNumberParam + | CadhubStringChoiceParam + | CadhubNumberChoiceParam // OpenSCAD const openscadValues = ` diff --git a/app/web/src/helpers/cadPackages/jsCad/jscadParams.ts b/app/web/src/helpers/cadPackages/jsCad/jscadParams.ts index df8eb04..417aa82 100644 --- a/app/web/src/helpers/cadPackages/jsCad/jscadParams.ts +++ b/app/web/src/helpers/cadPackages/jsCad/jscadParams.ts @@ -1,4 +1,4 @@ -import { CadhubParams } from 'src/components/Customizer/customizerConverter' +import { CadhubNumberChoiceParam, CadhubNumberOption, CadhubParams, CadhubStringChoiceParam, CadhubStringOption } from 'src/components/Customizer/customizerConverter' type JscadTypeNames = | 'group' @@ -124,6 +124,38 @@ export function jsCadToCadhubParams(input: JsCadParams[]): CadhubParams[] { name: param.name, initial: !!param.initial, } + case 'choice': + if(typeof param.values[0] === 'number'){ + let options:Array = [] + let captions = param.captions || param.values + param.values.forEach((value,i)=>{ + options[i] = {name:String(captions[i]), value:Number(value)} + }) + return { + type: 'number', + input: 'choice', + caption: param.caption, + name: param.name, + initial: Number(param.initial), + options + } + }else{ + let options:Array = [] + let captions = param.captions || param.values + param.values.forEach((value,i)=>{ + options[i] = {name:String(captions[i]), value:String(value)} + }) + return { + type: 'string', + input: 'choice', + caption: param.caption, + name: param.name, + initial: String(param.initial), + options + } + } + + } }) .filter((a) => a)