types and converter for choice input
This commit is contained in:
@@ -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<string> | Array<CadhubStringOption>
|
||||
}
|
||||
export interface CadhubNumberChoiceParam extends CadhubParamBase {
|
||||
type: 'number'
|
||||
input: 'choice'
|
||||
initial: number
|
||||
options: Array<number> | Array<CadhubNumberOption>
|
||||
}
|
||||
|
||||
export type CadhubParams =
|
||||
| CadhubStringParam
|
||||
| CadhubBooleanParam
|
||||
| CadhubNumberParam
|
||||
| CadhubStringChoiceParam
|
||||
| CadhubNumberChoiceParam
|
||||
|
||||
// OpenSCAD
|
||||
const openscadValues = `
|
||||
|
||||
@@ -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<CadhubNumberOption> = []
|
||||
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<CadhubStringOption> = []
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user