Shows goals in progress graphic
This commit is contained in:
Juan Salvador Pérez García
2018-07-06 08:58:10 +02:00
parent 4378331ece
commit 0a790b4479
8 changed files with 105 additions and 25 deletions

View File

@@ -9,16 +9,49 @@
this.url = url;
this.targetId = null;
this.groupBy = null;
this.proposalSuccess = null;
this.progressLabel = 'Progress';
this.supportsLabel = 'Supports';
this.chart = null;
this.goals = null;
this.xColumnValues = null;
this.progressColumnValues = null;
};
ProposalGraph.prototype.refresh = function() {
$.ajax({
this.refreshGoals()
.then(this.refreshData.bind(this))
.done(this.draw.bind(this));
};
ProposalGraph.prototype.refreshGoals = function () {
return $.ajax({
url: '/dashboard/resources.json',
cache: false,
success: function(data) {
this.parseGoals(data);
}.bind(this)
});
};
ProposalGraph.prototype.parseGoals = function(data) {
var i, l;
this.goals = [];
for (i = 0, l = data.length; i < l; i += 1) {
this.goals.push({
value: data[i].required_supports,
text: data[i].title
});
}
};
ProposalGraph.prototype.refreshData = function () {
return $.ajax({
url: this.url,
cache: false,
success: function (data) {
this.draw(data);
this.parseData(data);
}.bind(this),
data: {
group_by: this.groupBy
@@ -26,29 +59,34 @@
});
};
ProposalGraph.prototype.draw = function(data) {
var xColumnValues = [ 'x' ],
progressColumnValues = [ this.progressLabel ],
key;
ProposalGraph.prototype.parseData = function(data) {
var key;
this.xColumnValues = [ 'x' ];
this.progressColumnValues = [ this.progressLabel ];
for (key in data) {
if (data.hasOwnProperty(key)) {
xColumnValues.push(key);
progressColumnValues.push(data[key]);
this.xColumnValues.push(key);
this.progressColumnValues.push(data[key]);
}
}
};
c3.generate({
ProposalGraph.prototype.draw = function(data) {
this.chart = c3.generate({
bindto: '#' + this.targetId,
data: {
x: 'x',
columns: [
xColumnValues,
progressColumnValues
this.xColumnValues,
this.progressColumnValues
]
},
axis: {
y: {
min: 0,
max: this.proposalSuccess,
label: {
text: this.supportsLabel,
position: 'outer-middle'
@@ -57,6 +95,11 @@
x: {
type: 'category'
}
},
grid: {
y: {
lines: this.goals
}
}
});
};
@@ -68,6 +111,7 @@
graph.groupBy = $(this).data('proposal-graph-group-by');
graph.progressLabel = $(this).data('proposal-graph-progress-label');
graph.supportsLabel = $(this).data('proposal-graph-supports-label');
graph.proposalSuccess = parseInt($(this).data('proposal-success'), 10);
graph.refresh();
});