public ActionResult NewDiagram()
        {
            ViewBag.nodes                = new List <DiagramNode>();
            ViewBag.connectors           = new List <DiagramConnector>();
            ViewBag.Palette              = FlowChartDiagram.getSymbolPalettePalettes();
            ViewBag.Multiple             = "Multiple";
            ViewBag.getSymbolNode        = "getSymbolNodes";
            ViewBag.getNodeDefaults      = "getNodeDefaults";
            ViewBag.getConnectorDefaults = "getConnectorDefaults";
            ViewBag.getSymbolInfo        = "getSymbolInfo";

            return(View());
        }
        public ActionResult DiagramGrade()
        {
            List <DiagramNode>           Nodes              = new List <DiagramNode>();
            List <DiagramNodeAnnotation> NodeStart          = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeInput          = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision80     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision75     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision70     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision65     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision60     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision55     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecision50     = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDecisionLess50 = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeA              = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeBp             = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeB              = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeCp             = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeC              = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeDp             = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeD              = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeF              = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeOutput         = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeCircle         = new List <DiagramNodeAnnotation>();
            List <DiagramNodeAnnotation> NodeEnd            = new List <DiagramNodeAnnotation>();


            NodeStart.Add(new DiagramNodeAnnotation()
            {
                Content = "Start", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeInput.Add(new DiagramNodeAnnotation()
            {
                Content = "Input Score", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision80.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 80", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision75.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 75", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision70.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 70", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision65.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 65", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision60.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 60", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision55.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 55", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDecision50.Add(new DiagramNodeAnnotation()
            {
                Content = "Score >= 50", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeA.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = A", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeBp.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = B+", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeB.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = B", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeCp.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = C+", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeC.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = C", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeDp.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = D+", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeD.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = D", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeF.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade = F", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeOutput.Add(new DiagramNodeAnnotation()
            {
                Content = "Grade", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });
            NodeEnd.Add(new DiagramNodeAnnotation()
            {
                Content = "End", Style = new DiagramTextStyle()
                {
                    Color = "white", Fill = "transparent"
                }
            });

            Nodes.Add(new DefaultNode()
            {
                Id = "Start", OffsetX = 340, OffsetY = 100, Height = 60, Annotations = NodeStart, Shape = new { type = "Flow", shape = "Terminator" }, Style = new DiagramStrokeStyle()
                {
                    Fill = "Red"
                }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Input", OffsetX = 340, OffsetY = 200, Height = 60, Annotations = NodeInput, Shape = new { type = "Flow", shape = "Data" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision80", OffsetX = 340, OffsetY = 300, Height = 60, Annotations = NodeDecision80, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision75", OffsetX = 340, OffsetY = 400, Height = 60, Annotations = NodeDecision75, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision70", OffsetX = 340, OffsetY = 500, Height = 60, Annotations = NodeDecision70, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision65", OffsetX = 340, OffsetY = 600, Height = 60, Annotations = NodeDecision65, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision60", OffsetX = 340, OffsetY = 700, Height = 60, Annotations = NodeDecision60, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision55", OffsetX = 340, OffsetY = 800, Height = 60, Annotations = NodeDecision55, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Decision50", OffsetX = 340, OffsetY = 900, Height = 60, Annotations = NodeDecision50, Shape = new { type = "Flow", shape = "Decision" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "A", OffsetX = 600, OffsetY = 300, Height = 60, Annotations = NodeA, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Bp", OffsetX = 600, OffsetY = 400, Height = 60, Annotations = NodeBp, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "B", OffsetX = 600, OffsetY = 500, Height = 60, Annotations = NodeB, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Cp", OffsetX = 600, OffsetY = 600, Height = 60, Annotations = NodeCp, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "C", OffsetX = 600, OffsetY = 700, Height = 60, Annotations = NodeC, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Dp", OffsetX = 600, OffsetY = 800, Height = 60, Annotations = NodeDp, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "D", OffsetX = 600, OffsetY = 900, Height = 60, Annotations = NodeD, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "F", OffsetX = 340, OffsetY = 1000, Height = 60, Annotations = NodeF, Shape = new { type = "Flow", shape = "Process" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Output", OffsetX = 340, OffsetY = 1100, Height = 60, Annotations = NodeOutput, Shape = new { type = "Flow", shape = "Data" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "Circle", OffsetX = 700, OffsetY = 1100, Height = 20, Width = 20, Annotations = NodeCircle, Shape = new { type = "Flow", shape = "SequentialData" }
            });
            Nodes.Add(new DefaultNode()
            {
                Id = "End", OffsetX = 340, OffsetY = 1200, Height = 60, Annotations = NodeEnd, Shape = new { type = "Flow", shape = "Terminator" }
            });

            List <DiagramConnectorAnnotation> ConnectorYes = new List <DiagramConnectorAnnotation>();

            ConnectorYes.Add(new DiagramConnectorAnnotation()
            {
                Content = "Yes", Style = new DiagramTextStyle()
                {
                    Fill = "White"
                }
            });
            List <DiagramConnectorAnnotation> ConnectorNo = new List <DiagramConnectorAnnotation>();

            ConnectorNo.Add(new DiagramConnectorAnnotation()
            {
                Content = "No", Style = new DiagramTextStyle()
                {
                    Fill = "White"
                }
            });

            List <DiagramConnector> Connectors = new List <DiagramConnector>();

            Connectors.Add(new DiagramConnector()
            {
                Id = "connector1", SourceID = "Start", TargetID = "Input"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector2", SourceID = "Input", TargetID = "Decision80"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector3", SourceID = "Decision80", TargetID = "Decision75", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector4", SourceID = "Decision75", TargetID = "Decision70", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector5", SourceID = "Decision70", TargetID = "Decision65", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector6", SourceID = "Decision65", TargetID = "Decision60", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector7", SourceID = "Decision60", TargetID = "Decision55", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector8", SourceID = "Decision55", TargetID = "Decision50", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector10", SourceID = "Decision80", TargetID = "A", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector11", SourceID = "Decision75", TargetID = "Bp", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector12", SourceID = "Decision70", TargetID = "B", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector13", SourceID = "Decision65", TargetID = "Cp", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector14", SourceID = "Decision60", TargetID = "C", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector15", SourceID = "Decision55", TargetID = "Dp", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector16", SourceID = "Decision50", TargetID = "D", Annotations = ConnectorYes
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector17", SourceID = "Decision50", TargetID = "F", Annotations = ConnectorNo
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector18", SourceID = "F", TargetID = "Output"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector19", SourceID = "A", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector20", SourceID = "Bp", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector21", SourceID = "B", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector22", SourceID = "Cp", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector23", SourceID = "C", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector24", SourceID = "Dp", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector25", SourceID = "D", TargetID = "Circle"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector26", SourceID = "Circle", TargetID = "Output"
            });
            Connectors.Add(new DiagramConnector()
            {
                Id = "connector27", SourceID = "Output", TargetID = "End"
            });

            ViewBag.nodesJson = JsonConvert.SerializeObject(Nodes, Newtonsoft.Json.Formatting.None,
                                                            new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            });
            ViewBag.connectorsJson = JsonConvert.SerializeObject(Connectors, Newtonsoft.Json.Formatting.None,
                                                                 new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            });
            ViewBag.nodes      = Nodes;
            ViewBag.connectors = Connectors;


            ViewBag.Palette              = FlowChartDiagram.getSymbolPalettePalettes();
            ViewBag.Multiple             = "Multiple";
            ViewBag.getSymbolNode        = "getSymbolNodes";
            ViewBag.getNodeDefaults      = "getNodeDefaults";
            ViewBag.getConnectorDefaults = "getConnectorDefaults";
            ViewBag.getSymbolInfo        = "getSymbolInfo";
            return(View());
        }