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); }
void CreateNode(bool isShortcut, string name) { var node = new TagonomyNode() { Name = "{New Node}" }; if (string.IsNullOrEmpty(name) == false) { node.Name = CreatedTagonomyNodeName; } if (this.Mode == Modes.Limited_User) { node.Type = TagonomyNode.NodeTypes.User; } if (Source != null) { node.TagonomyId = Source.Id; } if (SelectedItem != null) { var pathId = SelectedItem.Node.ElementsArray.Where(it => it is PathNodeElement).Select(it => it.Id).LastOrDefault(); // Get the Id of the last Path Element. var leg = SelectedItem.Node.AddChildNode(pathId, node.Id, isShortcut ? PathNodeElement.Leg.Types.Shortcut : PathNodeElement.Leg.Types.Default); } if (Source != null) { Source.AddNode(node); } RefreshNavigation(); }
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); }