Adding point and click revolve workflow for sketch and axis selection (#4687)
* selection stuff
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)
* trigger CI
* fix bugs
* some edge cut stuff
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores)
* trigger CI
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest-8-cores)
* fix sketch mode issues
* fix more tests, selection in sketch related
* more test fixing
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest-8-cores)
* Trigger ci
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest-8-cores)
* Trigger ci
* more sketch mode selection fixes
* fix unit tests
* rename function
* remove .only
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* lint
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* fix bad pathToNode issue
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest-8-cores)
* fix sketch on face
* migrate a more selections types
* migrate a more selections types
* fix code selection of fillets
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* migrate a more selections types
* fix bad path to node, looks like a race
* migrate a more selections types
* migrate a more selections types
* fix cmd bar selections
* fix cmd bar selections
* fix display issues
* feat: implementing axis selection for point and click revolve
* feat: enforcing selection of 2 options for axis rotation
* feat: added negative rotations for the revolve
* fix: fmt, tsc fixes
* migrate a more selections types
* Revert "migrate a more selections types"
This reverts commit 0d0e453bbb
.
* migrate a more selections types
* clean up1
* clean up 2
* chore: improving the copy after discussing with Frank
* fix: merge main fixes
* chore: was able to add a seg to a line. Does not check if one exists already
* saving off some code
* chore: moving revolveSketch into own file for readability, improving variable names instead of node1
* chore: renaming more variables for readability
* chore: more renaming
* fix: allows creating a custom rotation on axis
* fix: added opposite edge logic and adj, need to error handle still
* fix: use other import
* feat: point and click on edges, crude implementation
* feat: implemented toast message and returned error message from validation
* fix: auto linter
* fix: addressing tsc errors
* fix: fighting typescript
* fix: cleaning up PR
* fix: trying to resolve more typescript issues
* fix: save off tsc fixes
* fix: adding comments
* fix: resolving tsc errors
* fix: tsc errors
* fix: auto linter fixes and tsc fixes
* fix:??
* fix: revolve ast works with declaration
* fix: retry logic to make sure the disable dry run actually runs
* fix: codespell typo
---------
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
@ -8,6 +8,7 @@ import {
|
||||
import { Selections__old } from 'lib/selections'
|
||||
import { getCommandArgumentKclValuesOnly } from 'lib/commandUtils'
|
||||
import { MachineManager } from 'components/MachineManagerProvider'
|
||||
import toast from 'react-hot-toast'
|
||||
|
||||
export type CommandBarContext = {
|
||||
commands: Command[]
|
||||
@ -247,14 +248,69 @@ export const commandBarMachine = setup({
|
||||
'All arguments are skippable': () => false,
|
||||
},
|
||||
actors: {
|
||||
'Validate argument': fromPromise(({ input }) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
// TODO: figure out if we should validate argument data here or in the form itself,
|
||||
// and if we should support people configuring a argument's validation function
|
||||
'Validate argument': fromPromise(
|
||||
({
|
||||
input,
|
||||
}: {
|
||||
input: {
|
||||
context: CommandBarContext | undefined
|
||||
event: CommandBarMachineEvent | undefined
|
||||
}
|
||||
}) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!input || input?.event?.type !== 'Submit argument') {
|
||||
toast.error(`Unable to validate, wrong event type.`)
|
||||
return reject(`Unable to validate, wrong event type`)
|
||||
}
|
||||
|
||||
resolve(input)
|
||||
})
|
||||
}),
|
||||
const context = input?.context
|
||||
|
||||
if (!context) {
|
||||
toast.error(`Unable to validate, wrong argument.`)
|
||||
return reject(`Unable to validate, wrong argument`)
|
||||
}
|
||||
|
||||
const data = input.event.data
|
||||
const argName = context.currentArgument?.name
|
||||
const args = context?.selectedCommand?.args
|
||||
const argConfig = args && argName ? args[argName] : undefined
|
||||
// Only do a validation check if the argument, selectedCommand, and the validation function are defined
|
||||
if (
|
||||
context.currentArgument &&
|
||||
context.selectedCommand &&
|
||||
argConfig?.inputType === 'selection' &&
|
||||
argConfig?.validation
|
||||
) {
|
||||
argConfig
|
||||
.validation({ context, data })
|
||||
.then((result) => {
|
||||
if (typeof result === 'boolean' && result === true) {
|
||||
return resolve(data)
|
||||
} else {
|
||||
// validation failed
|
||||
if (typeof result === 'string') {
|
||||
// The result of the validation is the error message
|
||||
toast.error(result)
|
||||
return reject(
|
||||
`unable to validate ${argName}, Message: ${result}`
|
||||
)
|
||||
} else {
|
||||
// Default message if there is not a custom one sent
|
||||
toast.error(`Unable to validate ${argName}`)
|
||||
return reject(`unable to validate ${argName}}`)
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
return reject(`unable to validate ${argName}}`)
|
||||
})
|
||||
} else {
|
||||
// Missing several requirements for validate argument, just bypass
|
||||
return resolve(data)
|
||||
}
|
||||
})
|
||||
}
|
||||
),
|
||||
'Validate all arguments': fromPromise(
|
||||
({ input }: { input: CommandBarContext }) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -449,9 +505,10 @@ export const commandBarMachine = setup({
|
||||
invoke: {
|
||||
src: 'Validate argument',
|
||||
id: 'validateSingleArgument',
|
||||
input: ({ event }) => {
|
||||
if (event.type !== 'Submit argument') return {}
|
||||
return event.data
|
||||
input: ({ event, context }) => {
|
||||
if (event.type !== 'Submit argument')
|
||||
return { event: undefined, context: undefined }
|
||||
return { event, context }
|
||||
},
|
||||
onDone: {
|
||||
target: '#Command Bar.Checking Arguments',
|
||||
|
Reference in New Issue
Block a user