Fix connection serialisation + front end connection error

This commit is contained in:
Sipke Schoorstra 2023-06-18 21:26:44 +02:00
parent 2a554fc40d
commit 8b05d89d43
2 changed files with 10 additions and 11 deletions

View file

@ -243,9 +243,9 @@ export function createEdge(connection: Connection): Edge.Metadata {
export function removeGuidsFromPortNames(root: Activity) {
if (root.connections?.length > 0) {
root.connections.forEach((connection: { sourcePort: string; targetPort: string; }) => {
connection.sourcePort = getPortNameByPortId(connection.sourcePort);
connection.targetPort = getPortNameByPortId(connection.targetPort);
root.connections.forEach((connection: Connection) => {
connection.source.port = getPortNameByPortId(connection.source.port);
connection.target.port = getPortNameByPortId(connection.target.port);
});
}
let activitiesWithConnections = root.activities?.filter(act => act.body?.connections?.length > 0);
@ -256,9 +256,9 @@ export function removeGuidsFromPortNames(root: Activity) {
export function addGuidsToPortNames(root: Activity) {
if (root.connections.length > 0) {
root.connections.forEach((connection: { sourcePort: string; targetPort: string; }) => {
connection.sourcePort = uuid() + '_' + connection.sourcePort;
connection.targetPort = uuid() + '_' + connection.targetPort;
root.connections.forEach((connection: Connection) => {
connection.source.port = uuid() + '_' + connection.source.port;
connection.target.port = uuid() + '_' + connection.target.port;
});
}
let activitiesWithConnections = root.activities?.filter(act => act.body?.connections?.length > 0);

View file

@ -29,13 +29,12 @@ public class FlowchartJsonConverter : JsonConverter<Activities.Flowchart>
var connectionsElement = doc.RootElement.TryGetProperty("connections", out var connectionsEl) ? connectionsEl : default;
var activitiesElement = doc.RootElement.TryGetProperty("activities", out var activitiesEl) ? activitiesEl : default;
var id = doc.RootElement.TryGetProperty("id", out var idAttribute) ? idAttribute.GetString() : _identityGenerator.GenerateId();
var id = doc.RootElement.TryGetProperty("id", out var idAttribute) ? idAttribute.GetString()! : _identityGenerator.GenerateId();
var startId = doc.RootElement.TryGetProperty("start", out var startElement) ? startElement.GetString() : default;
var activities = activitiesElement.ValueKind != JsonValueKind.Undefined ? activitiesElement.Deserialize<ICollection<IActivity>>(options) ?? new List<IActivity>() : new List<IActivity>();
var metadataElement = doc.RootElement.TryGetProperty("metadata", out var metadataEl) ? metadataEl : default;
var metadata = metadataElement.ValueKind != JsonValueKind.Undefined ? metadataElement.Deserialize<IDictionary<string, object>>(options) ?? new Dictionary<string, object>() : new Dictionary<string, object>();
var start = activities.FirstOrDefault(x => x.Id == startId) ?? activities.FirstOrDefault();
//var connectionSerializerOptions = new JsonSerializerOptions(options);
var activityDictionary = activities.ToDictionary(x => x.Id);
var connections = DeserializeConnections(connectionsElement, activityDictionary, options);
var notFoundConnections = GetNotFoundConnections(doc.RootElement, activityDictionary, connections, options);
@ -93,9 +92,9 @@ public class FlowchartJsonConverter : JsonConverter<Activities.Flowchart>
private static ICollection<Connection> GetNotFoundConnections(JsonElement rootElement, IDictionary<string, IActivity> activities, IEnumerable<Connection> connections, JsonSerializerOptions connectionSerializerOptions)
{
var applicationPropertiesElement = rootElement.TryGetProperty("applicationProperties", out var applicationPropertiesEl) ? applicationPropertiesEl : default;
var notFoundConnectionsElement = applicationPropertiesElement.ValueKind != JsonValueKind.Undefined ? applicationPropertiesElement.TryGetProperty(NotFoundConnectionsKey, out var notFoundConnectionsEl) ? notFoundConnectionsEl : default : default;
var notFoundConnections = DeserializeConnections(notFoundConnectionsElement, activities, connectionSerializerOptions);
var customPropertiesElement = rootElement.TryGetProperty("customProperties", out var customPropertiesEl) ? customPropertiesEl : default;
var notFoundConnectionsElement = customPropertiesElement.ValueKind != JsonValueKind.Undefined ? customPropertiesElement.TryGetProperty(NotFoundConnectionsKey, out var notFoundConnectionsEl) ? notFoundConnectionsEl : default : default;
var notFoundConnections = notFoundConnectionsElement.ValueKind != JsonValueKind.Undefined ? DeserializeConnections(notFoundConnectionsElement, activities, connectionSerializerOptions) : new List<Connection>();
// Add connections of NotFoundActivity to the list if they aren't already in it.
var notFoundActivities = activities.Values.Where(x => x is NotFoundActivity).Cast<NotFoundActivity>().ToList();