diff options
| author | jasplin <qt-info@nokia.com> | 2010-05-13 22:02:28 +0200 |
|---|---|---|
| committer | jasplin <qt-info@nokia.com> | 2010-05-13 22:02:28 +0200 |
| commit | c16188624690c8ea777d579c9800883289db0db2 (patch) | |
| tree | cc9ddcf1de0f2b9fdef03fd9291536548020df5f | |
| parent | cdf8aa6a07f2edae8dd43aa809a1b7c584898222 (diff) | |
Made text input for ASF stats more robust.
| -rw-r--r-- | src/bm/asfstats.cpp | 4 | ||||
| -rw-r--r-- | src/bmclient/main.cpp | 6 | ||||
| -rw-r--r-- | src/bmweb/global.js | 52 | ||||
| -rw-r--r-- | src/bmweb/indexsection.js | 70 |
4 files changed, 92 insertions, 40 deletions
diff --git a/src/bm/asfstats.cpp b/src/bm/asfstats.cpp index 105b424..eb71006 100644 --- a/src/bm/asfstats.cpp +++ b/src/bm/asfstats.cpp @@ -127,8 +127,8 @@ Step 2: Sample the stable and smoothed RHs at fromTimestamp and toTimestamp and void ASFStats::compute(const QList<ResultHistoryInfo *> &rhInfos, StatsInfo *statsInfo) { Q_ASSERT((fromTimestamp >= 0) && (fromTimestamp <= toTimestamp)); - Q_ASSERT((diffTolerance >= 0.0) && (diffTolerance <= 100.0)); - Q_ASSERT(stabTolerance >= 2); + Q_ASSERT(diffTolerance >= 0.0); + Q_ASSERT(stabTolerance >= 1); Q_ASSERT((sfTolerance >= 0.0) && (sfTolerance <= 100.0)); Q_ASSERT((lfTolerance >= 0.0) && (lfTolerance <= 100.0)); diff --git a/src/bmclient/main.cpp b/src/bmclient/main.cpp index 8c36a86..087f925 100644 --- a/src/bmclient/main.cpp +++ b/src/bmclient/main.cpp @@ -1391,7 +1391,7 @@ BMRequest * Executor::createASFStatsGetValuesRequest( bool ok; toTimestamp = values.at(0).toInt(&ok); if ((!ok) || (toTimestamp < fromTimestamp)) { - *error = QString("failed to extract 'to' time as an integer < %1").arg(fromTimestamp); + *error = QString("failed to extract 'to' time as an integer >= %1").arg(fromTimestamp); return 0; } } else { @@ -1409,8 +1409,8 @@ BMRequest * Executor::createASFStatsGetValuesRequest( if (BMMisc::getOption(args, "-stabtol", &values, 1, 0, error)) { bool ok; stabTol = values.at(0).toInt(&ok); - if ((!ok) || (stabTol < 2)) { - *error = "failed to extract stability tolerance as an integer >= 2"; + if ((!ok) || (stabTol < 1)) { + *error = "failed to extract stability tolerance as an integer >= 1"; return 0; } } else { diff --git a/src/bmweb/global.js b/src/bmweb/global.js index fea92ad..6f5f739 100644 --- a/src/bmweb/global.js +++ b/src/bmweb/global.js @@ -314,25 +314,63 @@ function sharedTimeScale() return document.getElementById("sharedTimeScale").checked ? 1 : 0; } -function getPositiveIntFromText(text, defaultValue) +function getIntFromText(text, defaultValue) { var value = parseInt(text); - if (isNaN(value) || (value <= 0)) + if (isNaN(value)) value = defaultValue; return value; } -function getIntFromText(text, defaultValue) +function getIntFromTextInput(id, defaultValue) +{ + return getIntFromText(document.getElementById(id).value, defaultValue); +} + +function getMinIntFromText(text, minValue) { var value = parseInt(text); - if (isNaN(value)) - value = defaultValue; + if (isNaN(value) || (value < minValue)) + value = minValue; return value; } -function getIntFromTextInput(id, defaultValue) +function getMinIntFromTextInput(id, minValue) { - return getIntFromText(document.getElementById(id).value, defaultValue); + return getMinIntFromText(document.getElementById(id).value, minValue); +} + +function getMinMaxIntFromText(text, minValue, maxValue) +{ + var value = parseInt(text); + if (isNaN(value) || (value < minValue)) + value = minValue; + else if (value > maxValue) + value = maxValue; + return value; +} + +function getMinMaxIntFromTextInput(id, minValue, maxValue) +{ + return getMinMaxIntFromText(document.getElementById(id).value, minValue, maxValue); +} + +function getMinMaxRealFromText(text, minValue, maxValue) +{ + var value = parseFloat(text); + if (isNaN(value) || (value < minValue)) + value = minValue; + else if (value > maxValue) + value = maxValue; + return value; +} + +function getMinRealFromText(text, minValue) +{ + var value = parseFloat(text); + if (isNaN(value) || (value < minValue)) + value = minValue; + return value; } function maxDetailsHistory() diff --git a/src/bmweb/indexsection.js b/src/bmweb/indexsection.js index 1a1f31d..991b1c1 100644 --- a/src/bmweb/indexsection.js +++ b/src/bmweb/indexsection.js @@ -59,7 +59,7 @@ function confirmComputeLink() { : confirm("No filter values have been explicitly set! Compute " + linkDescr + " anyway?"); } -function updateComputeIndexLink(defaultBaseTime, defaultMedianWinSize) +function updateComputeIndexLink(maxTimestamp, defaultMedianWinSize) { // Initialize URL ... url = "https://" + location.host + "/cgi-bin/bmclientwrapper"; @@ -70,14 +70,14 @@ function updateComputeIndexLink(defaultBaseTime, defaultMedianWinSize) // Add base timestamp ... - baseTime = getIntFromTextInput("ixBaseTime", defaultBaseTime); + baseTime = getMinMaxIntFromTextInput("ixBaseTime", -1, maxTimestamp); document.getElementById("ixBaseTime").value = baseTime; url += " -basetimestamp " + baseTime; // Add median window size ... - medianWinSize = getIntFromTextInput("ixMedianWinSize", defaultMedianWinSize); + medianWinSize = getMinIntFromTextInput("ixMedianWinSize", 1); document.getElementById("ixMedianWinSize").value = medianWinSize; url += " -medianwinsize " + medianWinSize; @@ -94,12 +94,13 @@ function updateComputeIndexLink(defaultBaseTime, defaultMedianWinSize) if (document.getElementById("ixDQStatsEnabled").checked) { // Add parameters for data quality statistics ... - stabTol = getPositiveIntFromText(document.getElementById("ixDQStatsStabTol").value, 2); + diffTol = getMinRealFromText(document.getElementById("ixDQStatsDiffTol").value, 0); + document.getElementById("ixDQStatsDiffTol").value = diffTol; + + stabTol = getMinIntFromText(document.getElementById("ixDQStatsStabTol").value, 2); document.getElementById("ixDQStatsStabTol").value = stabTol; - url += " -dataqualitystats" - + " -dqstatsdifftol " + document.getElementById("ixDQStatsDiffTol").value - + " -dqstatsstabtol " + stabTol; + url += " -dataqualitystats -dqstatsdifftol " + diffTol + " -dqstatsstabtol " + stabTol; } @@ -112,7 +113,7 @@ function updateComputeIndexLink(defaultBaseTime, defaultMedianWinSize) linkDescr = "index"; } -function updateComputeASFStatsLink(defaultMedianWinSize) +function updateComputeASFStatsLink(maxTimestamp, defaultMedianWinSize) { // Initialize URL ... url = "https://" + location.host + "/cgi-bin/bmclientwrapper"; @@ -134,37 +135,49 @@ function updateComputeASFStatsLink(defaultMedianWinSize) url += createFilterOptionsString("-branch", getCheckedFilterValues("ixBranchFilter")); // Add ASF-specific parameters ... - url += " -fromtime " + document.getElementById("ixASFStatsFromTime").value - + " -totime " + document.getElementById("ixASFStatsToTime").value - + " -difftol " + document.getElementById("ixASFStatsDiffTol").value - + " -stabtol " + document.getElementById("ixASFStatsStabTol").value - + " -sftol " + document.getElementById("ixASFStatsSFTol").value - + " -lftol " + document.getElementById("ixASFStatsLFTol").value - + " -maxldtol " + document.getElementById("ixASFStatsMaxLDTol").value; + fromTime = getMinMaxIntFromText( + document.getElementById("ixASFStatsFromTime").value, 0, maxTimestamp); + document.getElementById("ixASFStatsFromTime").value = fromTime; - // Update link ... - link = document.getElementById("ixComputeASFStatsLink"); - link.setAttribute("href", url); + toTime = getMinMaxIntFromText( + document.getElementById("ixASFStatsToTime").value, fromTime, maxTimestamp); + document.getElementById("ixASFStatsToTime").value = toTime; - link.setAttribute("target", "_blank"); // prevent page from opening in same window + diffTol = getMinRealFromText(document.getElementById("ixASFStatsDiffTol").value, 0); + document.getElementById("ixASFStatsDiffTol").value = diffTol; - linkDescr = "ASF stats"; -} + stabTol = getMinIntFromText(document.getElementById("ixASFStatsStabTol").value, 1); + document.getElementById("ixASFStatsStabTol").value = stabTol; -function updateComputeStatsLink(defaultBaseTime, defaultMedianWinSize) -{ - // Initialize URL ... - url = "dummy"; // 4 NOW! + sfTol = getMinMaxRealFromText(document.getElementById("ixASFStatsSFTol").value, 0, 100); + document.getElementById("ixASFStatsSFTol").value = sfTol; + + lfTol = getMinMaxRealFromText(document.getElementById("ixASFStatsLFTol").value, 0, 100); + document.getElementById("ixASFStatsLFTol").value = lfTol; + + maxLDTol = getMinRealFromText(document.getElementById("ixASFStatsMaxLDTol").value, 0); + document.getElementById("ixASFStatsMaxLDTol").value = maxLDTol; + + url += " -fromtime " + fromTime + + " -totime " + toTime + + " -difftol " + diffTol + + " -stabtol " + stabTol + + " -sftol " + sfTol + + " -lftol " + lfTol + + " -maxldtol " + maxLDTol; // Update link ... - link = document.getElementById("ixComputeStatsLink"); + link = document.getElementById("ixComputeASFStatsLink"); link.setAttribute("href", url); link.setAttribute("target", "_blank"); // prevent page from opening in same window + + linkDescr = "ASF stats"; } function IndexSection() { + var maxTimestamp = 2147483647; var defaultBaseTime = -1; // current time var defaultMedianWinSize = 8; @@ -626,7 +639,7 @@ function IndexSection() link.setAttribute( "onmouseover", "updateComputeIndexLink(" - + defaultBaseTime + + maxTimestamp + ", " + defaultMedianWinSize + ")" ); @@ -693,7 +706,8 @@ function IndexSection() link.setAttribute( "onmouseover", "updateComputeASFStatsLink(" - + defaultMedianWinSize + + maxTimestamp + + ", " + defaultMedianWinSize + ")" ); link.onclick = confirmComputeLink; |
