protected void CropInRange(LogbookEntryBase le, string clipMin, string clipMax)
        {
            if (le == null)
            {
                throw new ArgumentNullException(nameof(le));
            }
            int dataStart = (int)Math.Truncate((Convert.ToDouble(clipMin, CultureInfo.InvariantCulture) / DataCropRange) * Math.Max(DataPointCount - 1, 0));
            int dataEnd   = (int)Math.Truncate((Convert.ToDouble(clipMax, CultureInfo.InvariantCulture) / DataCropRange) * Math.Max(DataPointCount - 1, 0));

            if (dataEnd <= dataStart)
            {
                dataEnd = dataStart + 1;
            }

            if ((dataStart == 0 && dataEnd == 0) || dataEnd >= DataPointCount)
            {
                ResetCrop(le);
                return;
            }
            TelemetryReference tr = le.Telemetry;

            tr.MetaData.DataStart = dataStart;
            tr.MetaData.DataEnd   = dataEnd;
            using (FlightData fd = new FlightData())
            {
                fd.ParseFlightData(le);
                tr.RecalcGoogleData(fd);
            }
            tr.Commit();
            Response.Redirect(Request.RawUrl);
        }
        protected void ResetCrop(LogbookEntryBase le)
        {
            if (le == null)
            {
                throw new ArgumentNullException(nameof(le));
            }
            TelemetryReference tr = le.Telemetry;

            tr.MetaData.DataEnd = tr.MetaData.DataStart = null;
            using (FlightData fd = new FlightData())
            {
                fd.ParseFlightData(le);
                tr.RecalcGoogleData(fd);
            }
            tr.Commit();
            Response.Redirect(Request.RawUrl);
        }