Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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);
        }