Ejemplo n.º 1
0
void
PfPvWindow::rideSelected()
{
    // we need to refresh for compare mode
    if (isCompare()) {
        if (isVisible() && compareStale) compareChanged(); 
        return;
    }
    
    if (!amVisible()) {
        compareStale = true;
        return;
    }


    RideItem *ride = myRideItem;
    if (!ride || !ride->ride() || !ride->ride()->isDataPresent(RideFile::watts) || !ride->ride()->isDataPresent(RideFile::cad)) {
        setIsBlank(true);
        current = NULL;
        return;
    }
    else {
        setIsBlank(false);
    }

    if (!stale && ride == current) return;

    pfPvPlot->setData(ride);

    current = ride;
    stale = false;

    // update the QLabel widget with the CP value set in PfPvPlot::setData()
    qaCPValue->setText(QString("%1").arg(pfPvPlot->getCP()));
}
Ejemplo n.º 2
0
void
MetadataWindow::rideItemChanged()
{
    rideMetadata->setProperty("ride", property("ride"));
    if (myRideItem) setIsBlank(false);
    else setIsBlank(true);
}
Ejemplo n.º 3
0
void
ScatterWindow::rideSelected()
{
    if (!amVisible())
        return;

    ride = myRideItem;

    if (ride == current) return;

    if (!ride || !ride->ride() || !ride->ride()->dataPoints().count()) {
        current = NULL;
        setIsBlank(true);
        return;
    } else
        setIsBlank(false);

    current = ride;

    timeSlider->setMinimum(0);

    if (ride->ride()->dataPoints().count()) timeSlider->setMaximum(ride->ride()->dataPoints().last()->secs);
    else timeSlider->setMaximum(100);

    timeSlider->setTickInterval(timeSlider->maximum()/20);
    setData();
}
Ejemplo n.º 4
0
void
HrPwWindow::rideSelected()
{
    if (!amVisible())
        return;

    RideItem *ride = myRideItem;
    if (!ride || !ride->ride() || !ride->ride()->isDataPresent(RideFile::watts) || !ride->ride()->isDataPresent(RideFile::hr))
        setIsBlank(true);
    else {
        setIsBlank(false);
        setData(ride);
    }
}
Ejemplo n.º 5
0
void
PfPvWindow::compareChanged()
{

    if (!amVisible()) {
        compareStale = true;
        return;
    }

    // we get busy so lets turn off updates till we're done
    setUpdatesEnabled(false);

    // ensure redraws happen
    setIsBlank(false);
    current = NULL; // we don't have a current ride
    compareStale = false; // but compare is no longer stale

    if (context->isCompareIntervals) {

        // set the scale and zones
        pfPvPlot->showCompareIntervals();

    } else {

        // same as tab selected etc
        rideSelected();
    }

    setUpdatesEnabled(true);
}
Ejemplo n.º 6
0
void
ModelWindow::setData(bool adjustPlot)
{
    settings.ride = ride;
    settings.x = xSelector->itemData(xSelector->currentIndex()).toInt();
    settings.y = ySelector->itemData(ySelector->currentIndex()).toInt();
    settings.z = zSelector->itemData(zSelector->currentIndex()).toInt();
    settings.color = colorSelector->itemData(colorSelector->currentIndex()).toInt();
    settings.xbin = binWidthSlider->value();
    settings.ybin = binWidthSlider->value();
    settings.crop = false; // not implemented yet
    settings.zpane = 0;
    settings.ignore = ignore->isChecked();
    settings.gridlines = grid->isChecked();
    settings.frame = frame->isChecked();
    settings.legend = legend->isChecked();
    settings.adjustPlot = adjustPlot;
    zpane->setValue(0); // reset it!

    // any intervals to plot?
    if (ride) settings.intervals = ride->intervalsSelected();
    else settings.intervals.clear();

    setUpdatesEnabled(false);

    // reset the model parameters
    modelPlot->setData(&settings);

    // if setdata resulted in the plot being hidden
    // then the settings were not valid.
    if (modelPlot->isHidden()) {
        zpane->hide();
        setIsBlank(true);
    } else {
        zpane->show();
        setIsBlank(false);
    }
    setClean();

    setUpdatesEnabled(true);
}
Ejemplo n.º 7
0
void
HistogramWindow::updateChart()
{
    if (!amVisible()) {
        stale = true;
        return;
    }

    // What is the selected series?
    RideFile::SeriesType series = static_cast<RideFile::SeriesType>(seriesCombo->itemData(seriesCombo->currentIndex()).toInt());

    // If no data present show the blank state page
    if (!rangemode) {
        RideFile::SeriesType baseSeries = (series == RideFile::wattsKg) ? RideFile::watts : series;
        if (rideItem() != NULL && rideItem()->ride()->isDataPresent(baseSeries))
            setIsBlank(false);
        else
            setIsBlank(true);
    } else {
        setIsBlank(false);
    }

    // Lets get the data then
    if (stale) {

        RideFileCache *old = source;

        if (rangemode) {

            // set the date range to the appropiate selection
            DateRange use;
            if (useCustom) {

                use = custom;

            } else if (useToToday) {

                use = myDateRange;
                QDate today = QDate::currentDate();
                if (use.to > today) use.to = today;

            } else {

                use = myDateRange;
            }

            if (data->isChecked()) {

                // plotting a data series, so refresh the ridefilecache

#ifdef GC_HAVE_LUCENE
                source = new RideFileCache(context, use.from, use.to, isfiltered, files, rangemode);
#else
                source = new RideFileCache(context, use.from, use.to);
#endif
                cfrom = use.from;
                cto = use.to;
                stale = false;

                if (old) delete old; // guarantee source pointer changes
                stale = false; // well we tried

                // set the data on the plot
                powerHist->setData(source);

                // and which series to plot
                powerHist->setSeries(series);

                // and now the controls
                powerHist->setShading(shadeZones->isChecked() ? true : false);
                powerHist->setZoned(showInZones->isChecked() ? true : false);
                powerHist->setlnY(showLnY->isChecked() ? true : false);
                powerHist->setWithZeros(showZeroes->isChecked() ? true : false);
                powerHist->setSumY(showSumY->currentIndex()== 0 ? true : false);

            } else {

                if (last.from != use.from || last.to != use.to) {

                    // remember the last lot we collected
                    last = use;

                    // plotting a metric, reread the metrics for the selected date range
                    results = context->athlete->metricDB->getAllMetricsFor(use);

                }

		if (results.count() == 0) setIsBlank(true);
		else setIsBlank(false);

                // setData using the summary metrics -- always reset since filters may
                // have changed, or perhaps the bin width...
                powerHist->setSeries(RideFile::none);
                powerHist->setDelta(getDelta());
                powerHist->setDigits(getDigits());
#ifdef GC_HAVE_LUCENE
                powerHist->setData(results, totalMetric(), distMetric(), isfiltered, files);
#else
                powerHist->setData(results, totalMetric(), distMetric(), false, QStringList());
#endif
                powerHist->setColor(colorButton->getColor());

            }

        } else {

            powerHist->setData(myRideItem, interval); // intervals selected forces data to
                                                  // be recomputed since interval selection
                                                  // has changed.

            // and which series to plot
            powerHist->setSeries(series);

            // and now the controls
            powerHist->setShading(shadeZones->isChecked() ? true : false);
            powerHist->setZoned(showInZones->isChecked() ? true : false);
            powerHist->setlnY(showLnY->isChecked() ? true : false);
            powerHist->setWithZeros(showZeroes->isChecked() ? true : false);
            powerHist->setSumY(showSumY->currentIndex()== 0 ? true : false);

        }

        powerHist->recalc(true); // interval changed? force recalc
        powerHist->replot();

        interval = false;// we force a recalc whem called coz intervals
                        // have been selected. The recalc routine in
                        // powerhist optimises out, but doesn't keep track
                        // of interval selection -- simplifies the setters
                        // and getters, so worth this 'hack'.
    } // if stale
}