From ee6251beffdc84a0a784c305d805a98e97bf3adf Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Sat, 14 Jun 2014 20:24:06 +0100 Subject: [PATCH] Model Estimate Fixups .. don't rely upon ZDATA metadata, instead we add a new 'present' field that contains the Data meta value .. navigator defaults columns when they're all messed up .. summary isn't so noisy when providing progress updates --- src/DBAccess.cpp | 9 ++++++--- src/MetricAggregator.cpp | 2 +- src/RideNavigator.cpp | 8 ++++++++ src/RideSummaryWindow.cpp | 4 +++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/DBAccess.cpp b/src/DBAccess.cpp index 353943b2d..203d358a4 100644 --- a/src/DBAccess.cpp +++ b/src/DBAccess.cpp @@ -94,8 +94,9 @@ // 73 11 May 2014 Mark Liversedge Default color of 1,1,1 now uses CPLOTMARKER for ride color, change version to force rebuild // 74 20 May 2014 Mark Liversedge Added Athlete Weight // 75 25 May 2014 Mark Liversedge W' work calculation changed to only include energy above CP +// 76 14 May 2014 Mark Liversedge Add new 'present' field that uses Data tag data -int DBSchemaVersion = 75; +int DBSchemaVersion = 76; DBAccess::DBAccess(Context* context) : context(context), db(NULL) { @@ -188,6 +189,7 @@ bool DBAccess::createMetricsTable() "timestamp integer," "crc integer," "ride_date date," + "present varchar," "color varchar," "fingerprint integer"; @@ -428,7 +430,7 @@ bool DBAccess::importRide(SummaryMetrics *summaryMetrics, RideFile *ride, QColor } // construct an insert statement - QString insertStatement = "insert into metrics ( filename, identifier, crc, timestamp, ride_date, color, fingerprint "; + QString insertStatement = "insert into metrics ( filename, identifier, crc, timestamp, ride_date, present, color, fingerprint "; const RideMetricFactory &factory = RideMetricFactory::instance(); for (int i=0; iathlete->rideMetadata()->getFields()) { @@ -465,6 +467,7 @@ bool DBAccess::importRide(SummaryMetrics *summaryMetrics, RideFile *ride, QColor query.addBindValue((int)computeFileCRC(fullPath)); query.addBindValue(timestamp.toTime_t()); query.addBindValue(summaryMetrics->getRideDate()); + query.addBindValue(ride->getTag("Data", "")); query.addBindValue(color.name()); query.addBindValue((int)fingerprint); diff --git a/src/MetricAggregator.cpp b/src/MetricAggregator.cpp index c1d10decb..6f95caa6b 100644 --- a/src/MetricAggregator.cpp +++ b/src/MetricAggregator.cpp @@ -483,7 +483,7 @@ MetricAggregator::refreshCPModelMetrics(bool bg) // what dates have any power data ? QSqlQuery query(dbaccess->connection()); - bool rc = query.exec("SELECT ride_date FROM metrics WHERE ZData LIKE '%P%' ORDER BY ride_date;"); + bool rc = query.exec("SELECT ride_date FROM metrics WHERE present LIKE '%P%' ORDER BY ride_date;"); bool first = true; while (rc && query.next()) { if (first) { diff --git a/src/RideNavigator.cpp b/src/RideNavigator.cpp index 4aed06ec5..882a90387 100644 --- a/src/RideNavigator.cpp +++ b/src/RideNavigator.cpp @@ -211,6 +211,14 @@ RideNavigator::resetView() active = true; QList cols = _columns.split("|", QString::SkipEmptyParts); + int widco = _widths.split("|", QString::SkipEmptyParts).count(); + + // something is wrong with the config ? reset + if (widco != cols.count() || widco <= 1) { + _columns = QString(tr("*|Workout Code|TSS|Date|")); + _widths = QString("0|80|50|50|"); + cols = _columns.split("|", QString::SkipEmptyParts); + } // to account for translations QMap internalNameMap; diff --git a/src/RideSummaryWindow.cpp b/src/RideSummaryWindow.cpp index d2afe1b81..a50bb242f 100644 --- a/src/RideSummaryWindow.cpp +++ b/src/RideSummaryWindow.cpp @@ -171,12 +171,14 @@ RideSummaryWindow::modelProgress(int year, int month) string = "

Model

"; } else { +#if 0 // too much info, just do years ... QString dotstring; if (month < 5) dotstring = ". "; else if (month < 9) dotstring = ".. "; else dotstring = "..."; +#endif - string = QString("

Modeling
%1 %2

").arg(year).arg(dotstring); + string = QString("

Modeling
%1

").arg(year); } rideSummary->page()->mainFrame()->evaluateJavaScript( QString("var div = document.getElementById(\"modhead\"); div.innerHTML = '%1'; ").arg(string));;