Beispiel #1
0
        private void CreateTerminalForSingleConduitEnd(SpanEquipmentViewModel viewModel, BlockPort outerConduitPort)
        {
            var routeSpanDiagramInfo = viewModel.RootSpanDiagramInfo("OuterConduit");

            var terminal = new BlockPortTerminal(outerConduitPort)
            {
                IsVisible    = true,
                ShapeType    = viewModel.IsSingleSpan ? TerminalShapeTypeEnum.PointAndPolygon : TerminalShapeTypeEnum.Point,
                PointStyle   = outerConduitPort.Side.ToString() + "TerminalLabel",
                PointLabel   = viewModel.InterestRelationKind() == RouteNetworkInterestRelationKindEnum.End ? viewModel.GetIngoingRouteNodeName(routeSpanDiagramInfo.SegmentId) : viewModel.GetOutgoingRouteNodeName(routeSpanDiagramInfo.SegmentId),
                PolygonStyle = routeSpanDiagramInfo.StyleName,
                DrawingOrder = 620
            };

            terminal.SetReference(routeSpanDiagramInfo.SegmentId, "SpanSegment");

            AddToTerminalEnds(routeSpanDiagramInfo.TerminalId, routeSpanDiagramInfo.SpanSegment, terminal, routeSpanDiagramInfo.StyleName);

            // Check if cables are related to the conduit
            if (_nodeContainerViewModel.Data.ConduitSegmentToCableChildRelations.ContainsKey(routeSpanDiagramInfo.SegmentId))
            {
                var cableRelations = _nodeContainerViewModel.Data.ConduitSegmentToCableChildRelations[routeSpanDiagramInfo.SegmentId];

                foreach (var cableId in cableRelations)
                {
                    // Add cable to terminal end relation
                    AddToTerminalEnds(cableId, routeSpanDiagramInfo.SpanSegment, terminal, routeSpanDiagramInfo.StyleName);
                }
            }
        }
Beispiel #2
0
        private void CreateTerminalForShowingWhereEmptySingleConduitIsHeading(SpanEquipmentViewModel viewModel, BlockPort outerConduitPort)
        {
            var routeSpanDiagramInfo = viewModel.RootSpanDiagramInfo("OuterConduit");

            var terminal = new BlockPortTerminal(outerConduitPort)
            {
                IsVisible    = true,
                ShapeType    = viewModel.IsSingleSpan ? TerminalShapeTypeEnum.PointAndPolygon : TerminalShapeTypeEnum.Point,
                PointStyle   = outerConduitPort.Side.ToString() + "TerminalLabel",
                PointLabel   = viewModel.InterestRelationKind() == RouteNetworkInterestRelationKindEnum.End ? viewModel.GetIngoingRouteNodeName(routeSpanDiagramInfo.SegmentId) : viewModel.GetOutgoingRouteNodeName(routeSpanDiagramInfo.SegmentId),
                PolygonStyle = routeSpanDiagramInfo.StyleName,
                DrawingOrder = 620
            };

            terminal.SetReference(routeSpanDiagramInfo.SegmentId, "SpanSegment");
        }
Beispiel #3
0
        private BlockPortTerminal CreateTerminalForInnerConduitEnd(SpanEquipmentViewModel viewModel, BlockPort outerConduitPort, SpanDiagramInfo innerSpanDiagramInfo)
        {
            var terminal = new BlockPortTerminal(outerConduitPort)
            {
                IsVisible    = true,
                ShapeType    = TerminalShapeTypeEnum.PointAndPolygon,
                PointStyle   = outerConduitPort.Side.ToString() + "TerminalLabel",
                PointLabel   = viewModel.InterestRelationKind() == RouteNetworkInterestRelationKindEnum.End ? viewModel.GetIngoingRouteNodeName(innerSpanDiagramInfo.SegmentId) : viewModel.GetOutgoingRouteNodeName(innerSpanDiagramInfo.SegmentId),
                PolygonStyle = innerSpanDiagramInfo.StyleName
            };

            terminal.DrawingOrder = 620;

            terminal.SetReference(innerSpanDiagramInfo.SegmentId, "SpanSegment");

            AddToTerminalEnds(innerSpanDiagramInfo.TerminalId, innerSpanDiagramInfo.SpanSegment, terminal, innerSpanDiagramInfo.StyleName);

            return(terminal);
        }
Beispiel #4
0
        private void CreateTerminalsForCablesRelatedToSingleConduitEnd(SpanEquipmentViewModel viewModel, BlockPort outerConduitPort)
        {
            var routeSpanDiagramInfo = viewModel.RootSpanDiagramInfo("OuterConduit");

            var cableRelations = _nodeContainerViewModel.Data.ConduitSegmentToCableChildRelations[routeSpanDiagramInfo.SegmentId];

            foreach (var cableId in cableRelations)
            {
                var terminal = new BlockPortTerminal(outerConduitPort)
                {
                    IsVisible    = viewModel.IsSingleSpan && viewModel.SpanEquipment.SpanStructures.Length == 1,
                    ShapeType    = TerminalShapeTypeEnum.Point,
                    PointStyle   = outerConduitPort.Side + "TerminalLabel",
                    PointLabel   = viewModel.InterestRelationKind() == RouteNetworkInterestRelationKindEnum.End ? viewModel.GetIngoingRouteNodeName(routeSpanDiagramInfo.SegmentId) : viewModel.GetOutgoingRouteNodeName(routeSpanDiagramInfo.SegmentId),
                    PolygonStyle = routeSpanDiagramInfo.StyleName,
                    DrawingOrder = 620
                };

                terminal.SetReference(routeSpanDiagramInfo.SegmentId, "SpanSegment");

                // Create a fake terminal for the cable
                AddToTerminalEnds(cableId, routeSpanDiagramInfo.SpanSegment, terminal, routeSpanDiagramInfo.StyleName);
            }
        }
Beispiel #5
0
        private LineBlock CreateConduitEndBlock()
        {
            // Create outer conduits
            var rootSpanInfo = _spanEquipmentViewModel.RootSpanDiagramInfo("OuterConduit");

            var spanEquipmentBlock = new LineBlock()
            {
                MinWidth     = _spanEquipmentAreaWidth / 2,
                IsVisible    = _spanEquipmentViewModel.IsSingleSpan ? false : true,
                Style        = rootSpanInfo.StyleName,
                Margin       = _spanEquipmentViewModel.IsSingleSpan ? 0 : _spanEquipmentBlockMargin,
                DrawingOrder = 400
            };

            spanEquipmentBlock.SetReference(rootSpanInfo.SegmentId, "SpanSegment");

            // Create inner conduits
            var innerSpanData = _spanEquipmentViewModel.GetInnerSpanDiagramInfos("InnerConduit");

            var fromPort = _spanEquipmentViewModel.IsSingleSpan ?
                           new BlockPort(BlockSideEnum.West, null, null, 0, -1, 0)
            {
                IsVisible = false, DrawingOrder = 420
            } :
            new BlockPort(BlockSideEnum.West)
            {
                IsVisible = false, DrawingOrder = 420
            };

            spanEquipmentBlock.AddPort(fromPort);

            var toPort = _spanEquipmentViewModel.IsSingleSpan ?
                         new BlockPort(BlockSideEnum.East, null, null, 0, -1, 0)
            {
                IsVisible = false, DrawingOrder = 420
            } :
            new BlockPort(BlockSideEnum.East)
            {
                IsVisible = false, DrawingOrder = 420
            };

            spanEquipmentBlock.AddPort(toPort);

            int terminalNo = 1;

            var orderedinnerSpanData = innerSpanData.OrderBy(i => (1000 - i.Position));

            bool innerSpansFound = false;

            foreach (var data in orderedinnerSpanData)
            {
                var fromTerminal = new BlockPortTerminal(fromPort)
                {
                    IsVisible    = true,
                    ShapeType    = TerminalShapeTypeEnum.Point,
                    PointStyle   = "WestTerminalLabel",
                    PointLabel   = _spanEquipmentViewModel.InterestRelationKind() == RouteNetworkInterestRelationKindEnum.End ? _spanEquipmentViewModel.GetIngoingRouteNodeName(data.SegmentId) : _spanEquipmentViewModel.GetOutgoingRouteNodeName(data.SegmentId),
                    DrawingOrder = 520
                };

                fromTerminal.SetReference(data.SegmentId, "SpanSegment");

                new BlockPortTerminal(toPort)
                {
                    IsVisible    = true,
                    ShapeType    = TerminalShapeTypeEnum.None,
                    DrawingOrder = 520
                };

                var terminalConnection = spanEquipmentBlock.AddTerminalConnection(BlockSideEnum.West, 1, terminalNo, BlockSideEnum.East, 1, terminalNo, null, data.StyleName, LineShapeTypeEnum.Polygon);
                terminalConnection.DrawingOrder = 510;
                terminalConnection.SetReference(data.SegmentId, "SpanSegment");

                // Add eventually cable running through inner conduit
                if (_spanEquipmentViewModel.Data.ConduitSegmentToCableChildRelations.ContainsKey(data.SegmentId))
                {
                    var cableId             = _spanEquipmentViewModel.Data.ConduitSegmentToCableChildRelations[data.SegmentId].First();
                    var fiberCableLineLabel = _spanEquipmentViewModel.Data.GetCableEquipmentLineLabel(cableId);


                    var cableTerminalConnection = spanEquipmentBlock.AddTerminalConnection(BlockSideEnum.West, 1, terminalNo, BlockSideEnum.East, 1, terminalNo, fiberCableLineLabel, "FiberCable", LineShapeTypeEnum.Line);
                    cableTerminalConnection.DrawingOrder = 600;
                    cableTerminalConnection.SetReference(cableId, "SpanSegment");
                }


                terminalNo++;

                innerSpansFound = true;
            }

            if (!innerSpansFound)
            {
                var fromTerminal = new BlockPortTerminal(fromPort)
                {
                    IsVisible    = true,
                    ShapeType    = TerminalShapeTypeEnum.Point,
                    PointStyle   = "WestTerminalLabel",
                    PointLabel   = _spanEquipmentViewModel.InterestRelationKind() == RouteNetworkInterestRelationKindEnum.End ? _spanEquipmentViewModel.GetIngoingRouteNodeName(rootSpanInfo.SegmentId) : _spanEquipmentViewModel.GetOutgoingRouteNodeName(rootSpanInfo.SegmentId),
                    DrawingOrder = 520
                };

                fromTerminal.SetReference(rootSpanInfo.IngoingSegmentId, "SpanSegment");


                // If a single conduit
                if (_spanEquipmentViewModel.IsSingleSpan)
                {
                    new BlockPortTerminal(toPort)
                    {
                        IsVisible    = true,
                        ShapeType    = TerminalShapeTypeEnum.None,
                        DrawingOrder = 520
                    };

                    var terminalConnection = spanEquipmentBlock.AddTerminalConnection(BlockSideEnum.West, 1, terminalNo, BlockSideEnum.East, 1, terminalNo, null, rootSpanInfo.StyleName, LineShapeTypeEnum.Polygon);
                    terminalConnection.DrawingOrder = 510;
                    terminalConnection.SetReference(rootSpanInfo.SegmentId, "SpanSegment");

                    // Add eventually cable running through inner conduit
                    if (_spanEquipmentViewModel.Data.ConduitSegmentToCableChildRelations.ContainsKey(rootSpanInfo.SegmentId))
                    {
                        var cableId             = _spanEquipmentViewModel.Data.ConduitSegmentToCableChildRelations[rootSpanInfo.SegmentId].First();
                        var fiberCableLineLabel = _spanEquipmentViewModel.Data.GetCableEquipmentLineLabel(cableId);

                        var cableTerminalConnection = spanEquipmentBlock.AddTerminalConnection(BlockSideEnum.West, 1, terminalNo, BlockSideEnum.East, 1, terminalNo, fiberCableLineLabel, "FiberCable", LineShapeTypeEnum.Line);
                        cableTerminalConnection.DrawingOrder = 600;
                        cableTerminalConnection.SetReference(cableId, "SpanSegment");
                    }
                }
            }

            return(spanEquipmentBlock);
        }