types and converter for choice input
This commit is contained in:
@@ -2,11 +2,22 @@
|
|||||||
|
|
||||||
type CadhubTypeNames = 'number' | 'string' | 'boolean'
|
type CadhubTypeNames = 'number' | 'string' | 'boolean'
|
||||||
|
|
||||||
|
export interface CadhubStringOption {
|
||||||
|
name: string
|
||||||
|
value: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CadhubNumberOption {
|
||||||
|
name: string
|
||||||
|
value: number
|
||||||
|
}
|
||||||
|
|
||||||
interface CadhubParamBase {
|
interface CadhubParamBase {
|
||||||
type: CadhubTypeNames
|
type: CadhubTypeNames
|
||||||
caption: string
|
caption: string
|
||||||
name: string
|
name: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CadhubStringParam extends CadhubParamBase {
|
export interface CadhubStringParam extends CadhubParamBase {
|
||||||
type: 'string'
|
type: 'string'
|
||||||
initial: string
|
initial: string
|
||||||
@@ -25,11 +36,25 @@ export interface CadhubNumberParam extends CadhubParamBase {
|
|||||||
step?: number
|
step?: number
|
||||||
decimal?: 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 =
|
export type CadhubParams =
|
||||||
| CadhubStringParam
|
| CadhubStringParam
|
||||||
| CadhubBooleanParam
|
| CadhubBooleanParam
|
||||||
| CadhubNumberParam
|
| CadhubNumberParam
|
||||||
|
| CadhubStringChoiceParam
|
||||||
|
| CadhubNumberChoiceParam
|
||||||
|
|
||||||
// OpenSCAD
|
// OpenSCAD
|
||||||
const openscadValues = `
|
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 =
|
type JscadTypeNames =
|
||||||
| 'group'
|
| 'group'
|
||||||
@@ -124,6 +124,38 @@ export function jsCadToCadhubParams(input: JsCadParams[]): CadhubParams[] {
|
|||||||
name: param.name,
|
name: param.name,
|
||||||
initial: !!param.initial,
|
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)
|
.filter((a) => a)
|
||||||
|
|||||||
Reference in New Issue
Block a user