PurplePen.Reports.WriteLegLengthTable C# (CSharp) Method

WriteLegLengthTable() private method

private WriteLegLengthTable ( EventDB eventDB, CourseView courseView ) : void
eventDB EventDB
courseView CourseView
return void
        private void WriteLegLengthTable(EventDB eventDB, CourseView courseView)
        {
            BeginTable("", 3, "leftalign", "leftalign", "rightalign");
            WriteTableHeaderRow(ReportText.ColumnHeader_Leg, ReportText.ColumnHeader_Controls, ReportText.ColumnHeader_Length);

            // Go through the control views.
            int controlViewIndex = 0;
            float distanceThisLeg = 0;
            float totalLegs = 0;
            int legNumber = 1;
            Id<ControlPoint> controlIdPrev = Id<ControlPoint>.None;

            while (controlViewIndex >= 0 && controlViewIndex < courseView.ControlViews.Count) {
                CourseView.ControlView controlView = courseView.ControlViews[controlViewIndex];
                ControlPointKind kind = eventDB.GetControl(controlView.controlId).kind;

                // Don't report crossing points.
                if (kind != ControlPointKind.CrossingPoint) {
                    if (controlIdPrev.IsNotNone) {
                        string legText = string.Format("{0}\u2013{1}", Util.ControlPointName(eventDB, controlIdPrev, NameStyle.Medium), Util.ControlPointName(eventDB, controlView.controlId, NameStyle.Medium));
                        WriteTableRow(Convert.ToString(legNumber), legText, string.Format("{0} m", Math.Round(distanceThisLeg)));
                        totalLegs += distanceThisLeg;
                        legNumber += 1;
                    }

                    controlIdPrev = controlView.controlId;
                    distanceThisLeg = 0;
                }

                if (controlView.legLength != null)
                    distanceThisLeg += controlView.legLength[0];

                controlViewIndex = courseView.GetNextControl(controlViewIndex);
            }

            // Write average row
            if (legNumber > 1) {
                BeginTableRow("summaryrow");
                WriteSpannedTableCell(2, ReportText.LegLength_Average);
                WriteTableCell(string.Format("{0} m", Convert.ToString(Math.Round(totalLegs / (float) (legNumber - 1)))));
                EndTableRow();
            }

            EndTable();
        }