Fixed new object request node and allowed multiple classes with dot notation
All checks were successful
Build / build (push) Successful in 39s
All checks were successful
Build / build (push) Successful in 39s
This commit is contained in:
@@ -97,6 +97,7 @@ namespace Nodify.Calculator.NodeHandlers
|
||||
TakeOperationViewModel => _handlers.OfType<TakeHandler>().FirstOrDefault(),
|
||||
ForEachOperationViewModel => _handlers.OfType<ForEachHandler>().FirstOrDefault(),
|
||||
AssertOperationViewModel => _handlers.OfType<AssertHandler>().FirstOrDefault(),
|
||||
NewObjectOperationViewModel => _handlers.OfType<NewObjectHandler>().FirstOrDefault(),
|
||||
APIOperationViewModel => _handlers.OfType<ApiHandler>().FirstOrDefault(),
|
||||
ExpandoOperationViewModel => _handlers.OfType<ExpandoHandler>().FirstOrDefault(),
|
||||
CalculatorOperationViewModel => _handlers.OfType<NormalHandler>().FirstOrDefault(),
|
||||
|
||||
@@ -82,40 +82,41 @@ namespace Nodify.Calculator.NodeHandlers
|
||||
|
||||
public OperationViewModel Create(OperationInfoViewModel info)
|
||||
{
|
||||
var op = new SystemOperationViewModel
|
||||
{
|
||||
Title = info.Title ?? "New Object",
|
||||
SystemOperationType = SystemOperations.NEW_OBJECT
|
||||
};
|
||||
var op = new NewObjectOperationViewModel();
|
||||
op.Input.Add(new ConnectorViewModel { Title = "", Shape = ConnectorShape.Triangle });
|
||||
op.Output.Add(new ConnectorViewModel { Title = "", Shape = ConnectorShape.Triangle, IsInput = false });
|
||||
op.Input.Add(new ConnectorViewModel { Title = "", Shape = ConnectorShape.Square, ConnectorColor = Color.MediumPurple });
|
||||
op.Output.Add(new ConnectorViewModel { Title = "Object", IsInput = false, Shape = ConnectorShape.Square, ConnectorColor = Color.MediumPurple, DataType = "object" });
|
||||
return op;
|
||||
}
|
||||
|
||||
public OperationViewModel Restore(NodeData data)
|
||||
{
|
||||
var op = (SystemOperationViewModel)Create(new OperationInfoViewModel { Title = data.Title, Type = OperationType.System, sysOp = SystemOperations.NEW_OBJECT });
|
||||
var op = new NewObjectOperationViewModel();
|
||||
op.Input.Add(new ConnectorViewModel { Title = "", Shape = ConnectorShape.Triangle });
|
||||
op.Output.Add(new ConnectorViewModel { Title = "", Shape = ConnectorShape.Triangle, IsInput = false });
|
||||
op.Output.Add(new ConnectorViewModel { Title = "Object", IsInput = false, Shape = ConnectorShape.Square, ConnectorColor = Color.MediumPurple, DataType = "object" });
|
||||
|
||||
// Restore dynamic property inputs (keep triangle + square, replace the rest)
|
||||
var dynamicInputs = op.Input.Where(i => i.Shape != ConnectorShape.Triangle && i.Shape != ConnectorShape.Square).ToList();
|
||||
foreach (var d in dynamicInputs) op.Input.Remove(d);
|
||||
|
||||
foreach (var ic in data.InputConnectors)
|
||||
// Restore selected model (triggers RebuildInputs via property setter)
|
||||
if (!string.IsNullOrEmpty(data.ClassName))
|
||||
{
|
||||
if (ic.Shape == "Triangle" || ic.Shape == "Square") continue;
|
||||
op.Input.Add(NodeHandlerRegistry.DeserializeConnector(ic, true));
|
||||
op.RefreshAvailableModels();
|
||||
op.SelectedModel = data.ClassName;
|
||||
}
|
||||
|
||||
// Restore output connector metadata (Square model output)
|
||||
var savedModelOutput = data.OutputConnectors.FirstOrDefault(o => o.Shape == "Square");
|
||||
var modelOutput = op.Output.FirstOrDefault(o => o.Shape == ConnectorShape.Square);
|
||||
if (savedModelOutput != null && modelOutput != null)
|
||||
else
|
||||
{
|
||||
modelOutput.Title = savedModelOutput.Title;
|
||||
modelOutput.DataType = savedModelOutput.DataType;
|
||||
modelOutput.ConnectorColor = Color.FromArgb(savedModelOutput.ColorArgb);
|
||||
// Legacy: restore from saved input connectors
|
||||
var dynamicInputs = data.InputConnectors.Where(ic => ic.Shape != "Triangle").ToList();
|
||||
foreach (var ic in dynamicInputs)
|
||||
op.Input.Add(NodeHandlerRegistry.DeserializeConnector(ic, true));
|
||||
|
||||
var savedModelOutput = data.OutputConnectors.FirstOrDefault(o => o.Shape == "Square");
|
||||
var modelOutput = op.Output.FirstOrDefault(o => o.Shape == ConnectorShape.Square);
|
||||
if (savedModelOutput != null && modelOutput != null)
|
||||
{
|
||||
modelOutput.Title = savedModelOutput.Title;
|
||||
modelOutput.DataType = savedModelOutput.DataType;
|
||||
modelOutput.ConnectorColor = Color.FromArgb(savedModelOutput.ColorArgb);
|
||||
}
|
||||
}
|
||||
|
||||
op.Title = data.Title;
|
||||
@@ -126,6 +127,10 @@ namespace Nodify.Calculator.NodeHandlers
|
||||
{
|
||||
data.NodeType = "System";
|
||||
data.SystemOp = nameof(SystemOperations.NEW_OBJECT);
|
||||
if (vm is NewObjectOperationViewModel newObjVm)
|
||||
{
|
||||
data.ClassName = newObjVm.SelectedModel ?? "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user