public override string CreateNode(string desingComponentJson) { if (string.IsNullOrEmpty(desingComponentJson)) { throw new Exception("Missing desing component json"); } FlowDesignComponent nodeConfig = JsonConvert.DeserializeObject <FlowDesignComponent>(desingComponentJson, FlowDesignConverter.Settings); var types = GetHyperWorkflowNodeDataTypes(); var type = types.FirstOrDefault(it => it.FullName == nodeConfig.Type); var node = new NodeConfiguration(type) { AllowMultiOutputPortConnections = true }; nodeConfig.Id = node.Id; var nodeName = nodeConfig.State?.Text; if (nodeName != null) { node.Name = nodeName; } var nodeColor = nodeConfig.State?.Color; if (!string.IsNullOrEmpty(nodeColor)) { var colorR = UniColorFromHex(nodeColor); node.Color = colorR; } var nodeGroup = nodeConfig.Group; if (nodeGroup != null) { node.Group = nodeGroup; } node.GUIPosition = new UniPoint2f(nodeConfig.X, nodeConfig.Y); Source.AddNode(node); var nodeConfigJson = JsonConvert.SerializeObject(nodeConfig, FlowDesignConverter.Settings); return(nodeConfigJson); }
public override string DuplicateNode(string originalNodeConfigId, string desingComponentJson) { if (string.IsNullOrEmpty(originalNodeConfigId)) { throw new Exception("Missing component id"); } FlowDesignComponent nodeConfig = JsonConvert.DeserializeObject <FlowDesignComponent>(desingComponentJson, FlowDesignConverter.Settings); //TODO var nodeConfigJson = JsonConvert.SerializeObject(nodeConfig, FlowDesignConverter.Settings); return(nodeConfigJson); }
private void PopulateDesignerData() { DesignData = new FlowDesignData(); if (_rootTagonomy == null) { throw new Exception("Missing source!"); } DesignData.FlowName = _rootTagonomy.Name; DesignData.FlowId = _rootTagonomy.Id; _x = _Xoffset; _y = _Yoffset; // menu componnets foreach (var tagItem in _allTagonomies) { var designNodeConfiguration = new FlowDesignNodeConfiguration() { Id = tagItem.Name, TypeFull = tagItem.Id, Title = tagItem.Name, Input = 1, Output = 1, Group = "Tagonomies", Color = "#5D9CEC", Icon = "fa fa-map-marker", //Html = nodeGroupType.Html }; DesignData.NodeConfigurations.Add(designNodeConfiguration); } if (!Links.Any()) { var component = new FlowDesignComponent() { X = Convert.ToInt64(_x), Y = Convert.ToInt64(_y), // TODO fix me! Name = _rootTagonomy.Name, Id = _rootTagonomy.Id, Type = _rootTagonomy.Name, //_rootTagonomy.GetType().ToString(), State = new FlowState() { Text = _rootTagonomy.Name, Color = "#FC6E51" }, Group = "Tagonomies" }; DesignData.Components.Add(component); return; } //add node var sources = Links.GroupBy(x => x.SourceTagonomy).ToArray(); sources = sources.OrderBy(x => Links.Count(l => l.TargetTagonomy.Id == x.Key.Id)).ToArray(); foreach (var sourceLinks in sources) { var source = sourceLinks.Key; var component = DesignData.Components.FirstOrDefault(it => it.Id == source.Id); if (component == null) { component = new FlowDesignComponent() { X = Convert.ToInt64(_x), Y = Convert.ToInt64(_y), // TODO fix me! Name = source.Name, Id = source.Id, Type = source.Name, //_rootTagonomy.GetType().ToString(), State = new FlowState() { Text = sourceLinks.Key.Name, Color = "#FC6E51" }, Group = "Tagonomies" }; DesignData.Components.Add(component); _x += _Xoffset; } var targetsCount = sourceLinks.Count(); //connections foreach (var link in sourceLinks) { var targetLink = link.TargetTagonomy; var sourceLink = link.SourceTagonomy; var isForwardLiniking = link.IsForwardLink; var targetComponent = DesignData.Components.FirstOrDefault(it => it.Id == targetLink.Id); if (targetComponent == null) { targetComponent = new FlowDesignComponent() { X = Convert.ToInt64(_x), Y = Convert.ToInt64(_y), // TODO fix me! Name = targetLink.Name, Id = targetLink.Id, Type = targetLink.Id, //_rootTagonomy.GetType().ToString(), State = new FlowState() { Text = targetLink.Name, Color = "#FC6E51" }, Group = "Tagonomies" }; DesignData.Components.Add(targetComponent); _y += _Yoffset; } if (!isForwardLiniking) { targetComponent.Connections.Add(new FlowConnection() { Id = sourceLink.Id, Index = "0" }); } else { component.Connections.Add(new FlowConnection() { Id = targetLink.Id, Index = "0" }); } } } }
private void PopulateDesignerData() { var design = new FlowDesignData(); if (Source == null) { throw new Exception("Missing source!"); } design.IsReadOnly = string.IsNullOrWhiteSpace(WorkflowInstanceId) ? 1 : 0; var nodeDataGroupTypes = GroupingNodeDataTypes(); nodeDataGroupTypes = MappingMenuColorAndIcons(nodeDataGroupTypes); foreach (var nodeGroupType in nodeDataGroupTypes) { var nodeType = nodeGroupType.Type; var nodeName = nodeGroupType.Name; var nodeConfigId = nodeType.Name; var nodeNameFull = nodeType.FullName; var node = new NodeConfiguration(nodeType); var inputCount = node.InputCount; var outputCount = node.OutputCount; var color = UniColorToHex(node.Color); var designNodeConfiguration = new FlowDesignNodeConfiguration() { Id = nodeConfigId.ToLower(), TypeFull = nodeNameFull, Title = nodeName, Input = inputCount, Output = outputCount, Group = nodeGroupType.Group, Color = nodeGroupType.Color, Icon = nodeGroupType.Icon, Html = nodeGroupType.Html }; design.NodeConfigurations.Add(designNodeConfiguration); } design.FlowName = Source.Name; design.FlowId = Source.Id; foreach (NodeConfiguration nodeConfig in Source.Nodes) { //add node var x = nodeConfig.GUIPosition.X; var y = nodeConfig.GUIPosition.Y; var color = UniColorToHex(nodeConfig.Color); var group = nodeConfig.Group; var component = new FlowDesignComponent() { X = Convert.ToInt64(x), Y = Convert.ToInt64(y), Name = nodeConfig.NodeType.Name.ToLower(), Id = nodeConfig.Id, Type = nodeConfig.NodeType.AsType().FullName, State = new FlowState() { Text = string.IsNullOrWhiteSpace(nodeConfig.Name) ? nodeConfig.NodeType.Name : nodeConfig.Name, Color = color }, Group = group }; if (!string.IsNullOrEmpty(color)) { component.State.Color = color; } if (!string.IsNullOrEmpty(group)) { component.Group = group; } //connections foreach (var connection in nodeConfig.OutputConnections.Where(it => it != null)) { var source = Source.GetNodeConfiguration(connection.SourceId); var target = Source.GetNodeConfiguration(connection.TargetId); var sourceConnectionId = connection.SourceId; var targetConnectionId = connection.TargetId; var con = new FlowConnection() { Id = targetConnectionId, Index = "0" }; component.Connections.Add(con); } design.Components.Add(component); } DesignData = design; }
public override string DuplicateNode(string originalNodeConfigId, string desingComponentJson) { if (string.IsNullOrEmpty(originalNodeConfigId)) { throw new Exception("Missing node component id"); } var oldNodeConfiguration = Source.Nodes?.FirstOrDefault(it => it.Id == originalNodeConfigId); if (oldNodeConfiguration == null) { throw new Exception("Missing node configuration"); } var hyperWorkflowHyperNodeData = (HyperWorkflowNodeData)oldNodeConfiguration.CreateNodeInstance(true); FlowDesignComponent nodeConfig = JsonConvert.DeserializeObject <FlowDesignComponent>(desingComponentJson, FlowDesignConverter.Settings); var types = GetHyperWorkflowNodeDataTypes(); var type = types.FirstOrDefault(it => it.FullName == nodeConfig.Type); if (type == null) { throw new ApplicationException("Missing node type"); } var node = new NodeConfiguration(type) { AllowMultiOutputPortConnections = true }; node.CopySettingsFromNode(hyperWorkflowHyperNodeData); nodeConfig.Id = node.Id; var nodeName = nodeConfig.State.Text; if (nodeName != null) { node.Name = nodeName; } var nodeColor = nodeConfig.State.Color; if (!string.IsNullOrEmpty(nodeColor)) { var colorR = UniColorFromHex(nodeColor); node.Color = colorR; } var nodeGroup = nodeConfig.Group; if (nodeGroup != null) { node.Group = nodeGroup; } node.GUIPosition = new UniPoint2f(nodeConfig.X, nodeConfig.Y); Source.AddNode(node); var nodeConfigJson = JsonConvert.SerializeObject(nodeConfig, FlowDesignConverter.Settings); return(nodeConfigJson); }