diff --git a/graphs/static/graphs/scripts/audio_feat_graph.js b/graphs/static/graphs/scripts/audio_feat_graph.js index 2b3d97e..5be85fb 100644 --- a/graphs/static/graphs/scripts/audio_feat_graph.js +++ b/graphs/static/graphs/scripts/audio_feat_graph.js @@ -20,9 +20,9 @@ function drawAudioFeatGraph(audioFeature, intervalEndPoints, parentElem, userSec let featureData = {}; let currentEndPoint = intervalEndPoints.begin; // start at beginning // Create the keys first in order - while (currentEndPoint !== intervalEndPoints.end) { + while (currentEndPoint < intervalEndPoints.end) { let startOfRange = currentEndPoint; - let endOfRange = startOfRange + intervalEndPoints.step; + let endOfRange = precise(startOfRange + intervalEndPoints.step); let key = `${startOfRange} ~ ${endOfRange}`; featureData[key] = 0; @@ -40,13 +40,14 @@ function drawAudioFeatGraph(audioFeature, intervalEndPoints, parentElem, userSec // categorize the data points for (let dataPoint of response.data_points) { dataPoint = parseFloat(dataPoint); - let currLowerBound = intervalEndPoints.end - intervalEndPoints.step; + let currLowerBound = precise(intervalEndPoints.end - intervalEndPoints.step); let stepSize = intervalEndPoints.step; // find the index of the first element greater than dataPoint - while (dataPoint < currLowerBound) { - currLowerBound -= stepSize; + while (dataPoint < currLowerBound && currLowerBound >= intervalEndPoints.begin) { + currLowerBound = precise(currLowerBound - stepSize); } - let upperBound = currLowerBound + stepSize; + let upperBound = precise(currLowerBound + stepSize); + currLowerBound = precise(currLowerBound); let key = `${currLowerBound} ~ ${upperBound}`; featureData[key] += 1; } @@ -113,4 +114,13 @@ function drawAudioFeatGraph(audioFeature, intervalEndPoints, parentElem, userSec */ function capFeatureStr(audioFeature) { return audioFeature.charAt(0).toUpperCase() + audioFeature.slice(1); +} + +/** + * Converts a number to a floating point value with 2 significant figures + * @param number: the number to be converted + * @returns the input converted to two significant digits + */ +function precise(number) { + return Number.parseFloat(number.toPrecision(2)); } \ No newline at end of file diff --git a/graphs/templates/graphs/features_graphs.html b/graphs/templates/graphs/features_graphs.html index d8273af..cf8f01a 100644 --- a/graphs/templates/graphs/features_graphs.html +++ b/graphs/templates/graphs/features_graphs.html @@ -24,14 +24,14 @@