Skip to content

Commit e893a8e

Browse files
authored
Merge pull request #300 from neuroglia-io/fix-graph-state-transition
Updating state references (transition/compensation) when its name has been change in the editor
2 parents 65fa0d7 + c8dba83 commit e893a8e

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/dashboard/Synapse.Dashboard/Features/Workflows/WorkflowEditor/StateEditor.razor

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<td>Name</td>
3636
<td>
3737
<input name="name" type="text" placeholder="Name" required class="form-control" value="@state.Name"
38-
@onchange="async e => await OnPropertyChangedAsync(nameof(state.Name), s => s.Name = (string)e.Value!)" />
38+
@onchange="async e => await OnPropertyChangedAsync(nameof(state.Name), this.PatchStateName(e))" />
3939
</td>
4040
</tr>
4141
<tr>
@@ -190,6 +190,28 @@
190190
}
191191
}
192192

193+
protected virtual Action<StateDefinition> PatchStateName(ChangeEventArgs e) {
194+
return (StateDefinition state) => {
195+
var previousName = state.Name;
196+
state.Name = (string)e.Value!;
197+
if (this.Workflow.StartStateName == previousName) {
198+
this.Workflow.StartStateName = state.Name;
199+
}
200+
this.Workflow.States.ForEach(s =>
201+
{
202+
if (!state.UsedForCompensation) {
203+
if (s.TransitionToStateName == previousName) {
204+
s.TransitionToStateName = state.Name;
205+
}
206+
}
207+
else if (s.CompensatedBy == previousName) {
208+
s.CompensatedBy = state.Name;
209+
}
210+
// todo: update conditions when errors/timeout are implemented
211+
});
212+
};
213+
}
214+
193215
protected virtual async Task OnStateTypeChangedAsync(StateType stateType)
194216
{
195217
var stateIndex = this.Workflow.States.IndexOf(this.state);

0 commit comments

Comments
 (0)