Added indexes into stats responses

Closes bug 1256818

Change-Id: I4c90873471d8a05146e54b90869b6089f612b6ad
This commit is contained in:
Ilya Shakhat 2013-12-02 15:43:45 +04:00
parent a70a127c5e
commit d95f2d560a
4 changed files with 27 additions and 9 deletions

View File

@ -95,9 +95,8 @@ function renderTableAndChart(url, container_id, table_id, chart_id, link_param,
var tableData = [];
var chartData = [];
var limit = 10;
const limit = 10;
var aggregate = 0;
var index = 1;
var i;
data = data["stats"];
@ -114,12 +113,6 @@ function renderTableAndChart(url, container_id, table_id, chart_id, link_param,
aggregate += data[i].metric;
}
var index_label = index;
if (data[i].name == "*independent") {
index_label = "";
} else {
index++;
}
if (!data[i].link) {
if (data[i].id) {
data[i]["link"] = make_link(data[i].id, data[i].name, link_param);
@ -127,7 +120,6 @@ function renderTableAndChart(url, container_id, table_id, chart_id, link_param,
data[i]["link"] = data[i].name
}
}
data[i]["index"] = index_label;
tableData.push(data[i]);
}

View File

@ -88,6 +88,7 @@ def _get_aggregated_stats(records, metric_filter, keys, param_id,
response = [finalize_handler(result[r]) for r in result
if result[r]['metric']]
response.sort(key=lambda x: x['metric'], reverse=True)
utils.add_index(response, item_filter=lambda x: x['id'] != '*independent')
return response
@ -264,6 +265,7 @@ def get_bpd(records):
})
result.sort(key=lambda x: x['metric'], reverse=True)
utils.add_index(result)
return result

View File

@ -144,3 +144,14 @@ def merge_records(original, new):
def get_blueprint_id(module, name):
return module + ':' + name
def add_index(sequence, start=1, item_filter=lambda x: True):
n = start
for item in sequence:
if item_filter(item):
item['index'] = n
n += 1
else:
item['index'] = ''
return sequence

View File

@ -64,3 +64,16 @@ class TestUtils(testtools.TestCase):
'stackalytics/​+spec/​stackalytics-core')
self.assertEqual(expected, utils.format_text(original))
def test_add_index(self):
sequence = [{'name': 'A'}, {'name': 'B'}, {'name': 'C'}]
expected = [{'index': 1, 'name': 'A'}, {'index': 2, 'name': 'B'},
{'index': 3, 'name': 'C'}]
self.assertEqual(expected, utils.add_index(sequence))
def test_add_index_with_filter(self):
sequence = [{'name': 'A'}, {'name': 'B'}, {'name': 'C'}]
expected = [{'index': 0, 'name': 'A'}, {'index': '', 'name': 'B'},
{'index': 1, 'name': 'C'}]
self.assertEqual(expected, utils.add_index(
sequence, start=0, item_filter=lambda x: x['name'] != 'B'))