Change how customizer params are applied (#529)

* Only send customizer params when it's open

* Add customizer reset button and have two modes of customizer vs not

depending of if the customizer is open.

* Remove re-render on customizer open/close in project profile
This commit was merged in pull request #529.
This commit is contained in:
Kurt Hutten
2021-09-28 06:05:22 +10:00
committed by GitHub
parent cc50c984e4
commit 38b905e180
5 changed files with 62 additions and 19 deletions

View File

@@ -33,6 +33,7 @@ interface EditorModel {
export interface State {
ideType: 'INIT' | CadPackageType
viewerContext: 'ide' | 'viewer'
ideGuide?: string
consoleMessages: { type: 'message' | 'error'; message: string; time: Date }[]
code: string
@@ -45,6 +46,7 @@ export interface State {
}
customizerParams: CadhubParams[]
currentParameters?: RawCustomizerParams
isCustomizerOpen: boolean
layout: any
camera: {
dist?: number
@@ -71,6 +73,7 @@ const initialLayout = {
export const initialState: State = {
ideType: 'INIT',
viewerContext: 'ide',
consoleMessages: [
{ type: 'message', message: 'Initialising', time: new Date() },
],
@@ -83,6 +86,7 @@ export const initialState: State = {
quality: 'low',
},
customizerParams: [],
isCustomizerOpen: false,
layout: initialLayout,
camera: {},
viewerSize: { width: 0, height: 0 },
@@ -103,17 +107,28 @@ const reducer = (state: State, { type, payload }): State => {
'',
ideType: payload.cadPackage,
ideGuide: initGuideMap[payload.cadPackage],
viewerContext: payload.viewerContext,
}
case 'updateCode':
return { ...state, code: payload }
case 'resetCustomizer':
const resetParameters = {}
state.customizerParams.forEach(({ name, initial }) => {
resetParameters[name] = initial
})
return {
...state,
currentParameters: resetParameters,
}
case 'healthyRender':
const customizerParams: CadhubParams[] = payload.customizerParams || []
const currentParameters = {}
const customizerParams: CadhubParams[] = payload.customizerParams || []
customizerParams.forEach((param) => {
currentParameters[param.name] =
typeof state?.currentParameters?.[param.name] !== 'undefined'
? state?.currentParameters?.[param.name]
: param.initial
typeof state?.currentParameters?.[param.name] === 'undefined'
? param.initial
: state?.currentParameters?.[param.name]
})
return {
...state,
@@ -143,6 +158,11 @@ const reducer = (state: State, { type, payload }): State => {
...state,
currentParameters: payload,
}
case 'setCustomizerOpenState':
return {
...state,
isCustomizerOpen: payload,
}
case 'setLayout':
return {
...state,
@@ -292,7 +312,7 @@ export const requestRender = ({
return renderFn({
code,
settings: {
parameters,
parameters: state.isCustomizerOpen ? parameters : {},
camera,
viewerSize,
quality,