diff --git a/api/utils.py b/api/utils.py
index d9db42e..ef0c99f 100644
--- a/api/utils.py
+++ b/api/utils.py
@@ -170,7 +170,7 @@ def add_artist_genres(headers, artist_objs):
params = {'ids': artist_ids}
artists_response = requests.get('https://api.spotify.com/v1/artists/',
headers=headers,
- params={'ids': artist_ids},
+ params=params,
).json()['artists']
for i in range(len(artist_objs)):
if len(artists_response[i]['genres']) == 0:
diff --git a/api/views.py b/api/views.py
index 5a482d2..2f8e96c 100644
--- a/api/views.py
+++ b/api/views.py
@@ -166,8 +166,9 @@ def get_audio_feature_data(request, audio_feature, user_secret):
# get_genre_data {{{ #
+
def get_genre_data(request, user_secret):
- """Return genre data needed to create the graph user.
+ """Return genre data needed to create the graph
TODO
"""
user = User.objects.get(secret=user_secret)
diff --git a/graphs/static/graphs/scripts/audio_feat_graph.js b/graphs/static/graphs/scripts/audio_feat_graph.js
index 1fab293..2b3d97e 100644
--- a/graphs/static/graphs/scripts/audio_feat_graph.js
+++ b/graphs/static/graphs/scripts/audio_feat_graph.js
@@ -3,10 +3,10 @@
* a designated parent element
*
* @param audioFeature: the name of the audio feature (string)
- * @param intervalEndPoints: a sorted array of 5 real numbers defining the intervals (categories) of values,
+ * @param intervalEndPoints: a object defining the intervals (categories) of values,
* for example:
- * [0, 0.25, 0.5, 0.75, 1.0] for instrumentalness would define ranges
- * (0-0.25), (0.25-0.5), (0.5-0.75), (0.75-1.0)
+ * {begin: 0, end: 1.0, step: 0.25} for instrumentalness would define ranges
+ * [0-0.25), [0.25-0.5), [0.5-0.75), [0.75-1.0]
* @param parentElem: the DOM element to append the graph to (a selector string)
* @param userSecret: the user secret string for identification
* @return None
@@ -18,11 +18,20 @@ function drawAudioFeatGraph(audioFeature, intervalEndPoints, parentElem, userSec
height = 270 - margin.top - margin.bottom;
let featureData = {};
+ let currentEndPoint = intervalEndPoints.begin; // start at beginning
// Create the keys first in order
- for (let index = 0; index < intervalEndPoints.length - 1; index++) {
- let key = `${intervalEndPoints[index]} ~ ${intervalEndPoints[index + 1]}`;
+ while (currentEndPoint !== intervalEndPoints.end) {
+ let startOfRange = currentEndPoint;
+ let endOfRange = startOfRange + intervalEndPoints.step;
+
+ let key = `${startOfRange} ~ ${endOfRange}`;
featureData[key] = 0;
+ currentEndPoint = endOfRange;
}
+ // for (let index = 0; index < intervalEndPoints.length - 1; index++) {
+ // let key = `${intervalEndPoints[index]} ~ ${intervalEndPoints[index + 1]}`;
+ // featureData[key] = 0;
+ // }
// define the vertical scaling function
let vScale = d3.scaleLinear().range([height, 0]);
@@ -31,12 +40,14 @@ function drawAudioFeatGraph(audioFeature, intervalEndPoints, parentElem, userSec
// categorize the data points
for (let dataPoint of response.data_points) {
dataPoint = parseFloat(dataPoint);
- let index = intervalEndPoints.length - 2;
+ let currLowerBound = intervalEndPoints.end - intervalEndPoints.step;
+ let stepSize = intervalEndPoints.step;
// find the index of the first element greater than dataPoint
- while (dataPoint < intervalEndPoints[index]) {
- index -= 1;
+ while (dataPoint < currLowerBound) {
+ currLowerBound -= stepSize;
}
- let key = `${intervalEndPoints[index]} ~ ${intervalEndPoints[index + 1]}`;
+ let upperBound = currLowerBound + stepSize;
+ let key = `${currLowerBound} ~ ${upperBound}`;
featureData[key] += 1;
}
diff --git a/graphs/templates/graphs/features_graphs.html b/graphs/templates/graphs/features_graphs.html
index ea01793..d8273af 100644
--- a/graphs/templates/graphs/features_graphs.html
+++ b/graphs/templates/graphs/features_graphs.html
@@ -24,14 +24,14 @@