Clean up 'prompt user for info' modals (#58)

This commit is contained in:
Kurt Hutten
2023-03-13 09:22:05 +11:00
committed by GitHub
parent eebddb0ce2
commit 1de21b8bdd
6 changed files with 491 additions and 309 deletions

View File

@ -12,7 +12,7 @@ import {
getTransformInfos,
transformAstSketchLines,
} from '../../lang/std/sketchcombos'
import { SetAngleLengthModal } from '../SetAngleModal'
import { SetAngleLengthModal } from '../SetAngleLengthModal'
import {
createIdentifier,
createVariableDeclaration,
@ -69,18 +69,12 @@ export const SetAngleLength = ({
programMemory,
referenceSegName: '',
})
const availableVarInfo = findAllPreviousVariables(
modifiedAst,
programMemory,
selectionRanges[0]
)
try {
const { valueNode, variableName } = await getModalInfo({
value: valueUsedInTransform,
prevVariables: availableVarInfo.variables,
valueName: angleOrLength === 'setAngle' ? 'angle' : 'length',
} as any)
const { valueNode, variableName, newVariableInsertIndex } =
await getModalInfo({
value: valueUsedInTransform,
valueName: angleOrLength === 'setAngle' ? 'angle' : 'length',
} as any)
const { modifiedAst: _modifiedAst } = transformAstSketchLines({
ast: JSON.parse(JSON.stringify(ast)),
@ -95,7 +89,7 @@ export const SetAngleLength = ({
if (variableName) {
const newBody = [..._modifiedAst.body]
newBody.splice(
availableVarInfo.insertIndex,
newVariableInsertIndex,
0,
createVariableDeclaration(variableName, valueNode)
)

View File

@ -12,8 +12,11 @@ import {
transformSecondarySketchLinesTagFirst,
getTransformInfos,
} from '../../lang/std/sketchcombos'
import { GetInfoModal } from '../GetInfoModal'
import { createLiteral } from '../../lang/modifyAst'
import { GetInfoModal } from '../SetHorVertDistanceModal'
import {
createIdentifier,
createVariableDeclaration,
} from '../../lang/modifyAst'
const getModalInfo = create(GetInfoModal as any)
@ -87,25 +90,50 @@ export const SetHorzDistance = ({
transformInfos,
programMemory,
})
const { segName, value }: { segName: string; value: number } =
await getModalInfo({
segName: tagInfo?.tag,
isSegNameEditable: !tagInfo?.isTagExisting,
value: valueUsedInTransform,
} as any)
const {
segName,
value,
valueNode,
variableName,
newVariableInsertIndex,
}: {
segName: string
value: number
valueNode: Value
variableName?: string
newVariableInsertIndex: number
} = await getModalInfo({
segName: tagInfo?.tag,
isSegNameEditable: !tagInfo?.isTagExisting,
value: valueUsedInTransform,
initialVariableName:
horOrVert === 'setHorzDistance' ? 'xDis' : 'yDis',
} as any)
if (segName === tagInfo?.tag && value === valueUsedInTransform) {
updateAst(modifiedAst)
} else {
// transform again but forcing certain values
const { modifiedAst } = transformSecondarySketchLinesTagFirst({
ast,
selectionRanges,
transformInfos,
programMemory,
forceSegName: segName,
forceValueUsedInTransform: createLiteral(value),
})
updateAst(modifiedAst)
const { modifiedAst: _modifiedAst } =
transformSecondarySketchLinesTagFirst({
ast,
selectionRanges,
transformInfos,
programMemory,
forceSegName: segName,
forceValueUsedInTransform: variableName
? createIdentifier(variableName)
: valueNode,
})
if (variableName) {
const newBody = [..._modifiedAst.body]
newBody.splice(
newVariableInsertIndex,
0,
createVariableDeclaration(variableName, valueNode)
)
_modifiedAst.body = newBody
}
updateAst(_modifiedAst)
}
}
}}