Skip to content
This repository has been archived by the owner on Mar 23, 2023. It is now read-only.

drilldown functional #32

Merged
merged 2 commits into from Feb 28, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 8 additions & 9 deletions static/javascripts/receitas/jquery.deserialize.js
@@ -1,15 +1,15 @@
(function ($) {
$.deserialize = function (str, options) {
(function($) {
$.deserialize = function(str, options) {
var pairs = str.split(/&|&/i),
h = {},
options = options || {};
for(var i = 0; i < pairs.length; i++) {
for (var i = 0; i < pairs.length; i++) {
var kv = pairs[i].split('=');
kv[0] = decodeURIComponent(kv[0]);
if(!options.except || options.except.indexOf(kv[0]) == -1) {
if((/^\w+\[\w+\]$/).test(kv[0])) {
if (!options.except || options.except.indexOf(kv[0]) == -1) {
if ((/^\w+\[\w+\]$/).test(kv[0])) {
var matches = kv[0].match(/^(\w+)\[(\w+)\]$/);
if(typeof h[matches[1]] === 'undefined') {
if (typeof h[matches[1]] === 'undefined') {
h[matches[1]] = {};
}
h[matches[1]][matches[2]] = decodeURIComponent(kv[1]);
Expand All @@ -21,8 +21,7 @@
return h;
};

$.fn.deserialize = function (options) {
$.fn.deserialize = function(options) {
return $.deserialize($(this).serialize(), options);
};
})(jQuery);

})(jQuery);
192 changes: 99 additions & 93 deletions static/javascripts/receitas/main.js
Expand Up @@ -238,106 +238,112 @@ require(['datatables'], function (datatable) {



$(function () {
// ****************************************************
// BAR CHART
// ****************************************************

// Create chart
create_bars = function(year_data, initial_level) {
$('#bars-container').highcharts({
chart: {
type: 'bar',
// events: {
// drilldown: function(e) {
// get_drilldown(e);
// }
// }
},
title: {
text: 'Receitas Prefeitura de Sao Paulo'
},
xAxis: {
type: 'category'
},
yAxis: {
// min: 0,
title: {
text: 'Valores (R$)',
// align: 'high'
},
labels: {
overflow: 'justify'
}
},
// stackLabels: {
// enabled: true,
// style: {
// fontWeight: 'bold',
// color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
// },
// formatter: function() {
// return number_format(this.total, 2, '.', ',');
// }
// },
// labels: {
// formatter: function() {
// return number_format(this.value, 2, '.', ',');
// }
// },
tooltip: {},
plotOptions: {
bar: {
dataLabels: {
enabled: false
}
}
},
credits: {
enabled: false
},
series: [initial_level],
drilldown: {
series: year_data
}
});
};

$(function() {
var uriParams = window.location.search.substring(1);
var query = $.deserialize(uriParams);

// Get year param
if (query.hasOwnProperty('year')) {
year = query.year;
} else {
year = '2014'
}

if (query.hasOwnProperty('level')) {
level = query.level;
} else {
get_drilldown = function (e) {
var chart = e.currentTarget;
var response_data = $.get(api_url + '/api/v1/receita/total?code=' + e.point.code + '&years=2014&drilldown=true').done(function (resp) {
if (resp.data) {
var drill_var = resp;
var imp_drilldown = {id: e.point.code, data:[]};
for (var i = 0; i < drill_var.data.length; ++i) {
imp_drilldown.data.push({y: drill_var.data[i].value,
name: drill_var.data[i].name,
code: drill_var.data[i].code,
drilldown: true});
}
chart.addSeriesAsDrilldown(e.point, imp_drilldown);
}
});

}

impostos_request = $.ajax({
type: 'GET',
url: api_url + '/api/v1/receita/total?code=1.1.1&code=1.1.2&code=1.2.3&years=2014',
xhrFields: {
withCredentials: false
}
}).done(function (response_data) {
impostos = {name: response_data['data'][0]['name'],
data:[{y: response_data['data'][0]['value'],
name: response_data['data'][0]['name'],
code: response_data['data'][0]['code'],
drilldown: true
}]
};

taxas = {name: response_data['data'][1]['name'],
data: [{y: response_data['data'][1]['value'],
name: response_data['data'][1]['name'],
code: response_data['data'][1]['code'],
drilldown: true
}]
};

contrib = {name: response_data['data'][2]['name'],
data: [{y: response_data['data'][2]['value'],
name: response_data['data'][2]['name'],
code: response_data['data'][2]['code'],
drilldown: true
}]};

create_bars();
});

level = null
}

create_bars = function () {
$('#bars-container').highcharts({
chart: {
type: 'bar',
events: {
drilldown: function (e) {
get_drilldown(e);
}
}

},
title: {
text: 'Receitas Prefeitura de Sao Paulo'
},
xAxis: {
type: 'category'
},
yAxis: {
min: 0,
title: {
text: 'R$',
align: 'high'
},
labels: {
overflow: 'justify'
}
},
tooltip: {
},
plotOptions: {
bar: {
dataLabels: {
enabled: false
}
// Load ALL data for a year
$.ajax({
type: 'GET',
url: api_url + '/api/v1/receita/totaldrilldown?year=' + year,
xhrFields: {
withCredentials: false
}
}).done(function(response_data) {
year_data = response_data
if (level == null) {
initial_level = year_data[0];
} else {
initial_level = null
for (var i = 0; i < year_data.length; ++i) {
item = year_data[i]
if (item['id'] == level) {
initial_level = item
break
}
},
credits: {
enabled: false
},
series: [impostos, taxas, contrib]
});
};
}
if (initial_level == null) {
console.log("Coldn't find level: " + level)
initial_level = year_data[0]
}
}
create_bars(year_data, initial_level);
});
});