Skip to content

Instantly share code, notes, and snippets.

@sebastiancarlsson
Last active September 27, 2021 09:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebastiancarlsson/ff237011372f08f72f55127dc48f4239 to your computer and use it in GitHub Desktop.
Save sebastiancarlsson/ff237011372f08f72f55127dc48f4239 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const EVENTS = {
// User action
CHANGE_TAB: 'change_tab',
PREV_STEP: 'prev_step',
NEXT_STEP: 'next_step',
UPDATE_SETTING: 'update_setting',
UPDATE_NAME: 'update_name',
CREATE_CUSTOM_EXPERIMENT: 'create_custom_experiment',
CREATE_EXPERIMENT_WITH_SETTINGS: 'create_experiment_with_settings',
CANCEL: 'cancel'
};
const STATES = {
INITIAL: 'initial',
FETCHING_SETTINGS: 'fetching_settings',
IDLE: 'idle',
CREATING_EXPERIMENT: 'creating_experiment',
CREATING_CUSTOM_EXPERIMENT: 'creating_custom_experiment',
FINAL: 'final'
};
const wizardMachine = Machine({
id: 'ExperimentWizardDialog',
context: {
settings: [
{"groupId":"wizardDataset"},
{"groupId":"inputsTargetSettings"},
{"groupId":"problemType"},
],
diagnostics: [],
parameterConfigs: [],
activeSettingsGroupId: "wizardDataset"
},
initial: STATES.INITIAL,
states: {
[STATES.INITIAL]: {
invoke: {
id: 'initWizard',
src: 'initService',
onDone: {
target: STATES.IDLE,
actions: [
'settingsFetched'
]
}
}
},
[STATES.FETCHING_SETTINGS]: {
invoke: {
id: 'buildWizard',
src: 'buildService',
onDone: {
target: STATES.IDLING,
actions: [
'settingsFetched'
]
}
}
},
[STATES.IDLE]: {
on: {
[EVENTS.UPDATE_SETTING]: STATES.FETCHING_SETTINGS,
[EVENTS.UPDATE_NAME]: {
actions: 'updateName'
},
[EVENTS.CHANGE_TAB]: {
actions: 'changeTab'
},
[EVENTS.PREV_STEP]: {
actions: 'prevTab'
},
[EVENTS.NEXT_STEP]: [{
cond: ({ settings, activeSettingsGroupId }) => settings[settings.length - 1].groupId === activeSettingsGroupId,
target: STATES.CREATING_EXPERIMENT
}, {
actions: 'nextTab'
}],
[EVENTS.CREATE_CUSTOM_EXPERIMENT]: STATES.CREATING_CUSTOM_EXPERIMENT,
[EVENTS.CANCEL]: {
target: STATES.FINAL,
actions: 'trackCancelExperiment'
}
}
},
[STATES.CREATING_CUSTOM_EXPERIMENT]: {
invoke: {
id: 'finalizeWizard',
src: 'finalizeService',
onDone: {
target: STATES.FINAL,
actions: 'navigateToNewExperiment'
}
}
},
[STATES.CREATING_EXPERIMENT]: {
invoke: {
id: 'finalizeWizard',
src: 'finalizeService',
onDone: {
target: STATES.FINAL,
actions: 'navigateToNewExperiment'
}
}
},
[STATES.FINAL]: {
type: 'final'
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment