13 Ember.$('.node[data-id="' + this.get('filter').get('language') + '"]').addClass("selected"); |
13 Ember.$('.node[data-id="' + this.get('filter').get('language') + '"]').addClass("selected"); |
14 }), |
14 }), |
15 |
15 |
16 didInsertElement: function(){ |
16 didInsertElement: function(){ |
17 var self = this; |
17 var self = this; |
18 var baseurl = ENV.rootURL.replace(/\/$/,"")+'/api/v1'; |
18 var baseurl = (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,"")+'/api/v1'; |
19 |
19 |
20 d3.json(baseurl+"/stats/languages", function(languages) { |
20 d3.json(baseurl+"/stats/languages", function(data) { |
21 var margin = { top: 30, right: 0, bottom: 0, left: 0 }; |
21 var margin = { top: 30, right: 0, bottom: 0, left: 0 }; |
22 var width = Ember.$('#' + self.get('elementId')).width(); |
22 var width = Ember.$('#' + self.get('elementId')).width(); |
23 var height = Ember.$('#' + self.get('elementId')).height() - margin.top - margin.bottom; |
23 var height = Ember.$('#' + self.get('elementId')).height() - margin.top - margin.bottom; |
24 |
24 |
|
25 var languages = data['languages']; |
25 var array = Object.keys(languages).map(function (key) { return languages[key]; }); |
26 var array = Object.keys(languages).map(function (key) { return languages[key]; }); |
26 var oldMin = Math.min(...array), |
27 var oldMin = Math.min(...array), |
27 oldMax = Math.max(...array); |
28 oldMax = Math.max(...array); |
28 var sum = array.reduce(function(a, b) { return a + b; }); |
29 var sum = array.reduce(function(a, b) { return a + b; }); |
29 var average = sum / array.length; |
30 var average = sum / array.length; |
73 |
74 |
74 function accumulate(d) { |
75 function accumulate(d) { |
75 d._children = d.children; |
76 d._children = d.children; |
76 if(d.children) { |
77 if(d.children) { |
77 d.value = d.children.reduce(function(p, v) { return p + accumulate(v); }, 0); |
78 d.value = d.children.reduce(function(p, v) { return p + accumulate(v); }, 0); |
|
79 } else if (d.values) { |
|
80 d.value = d.values.reduce(function(p, v) { return p + (languages[v] ? languages[v] : 0); }, 0); |
78 } else { |
81 } else { |
79 d.value = languages[d.id] ? languages[d.id] : 0; |
82 d.value = languages[d.id] ? languages[d.id] : 0; |
80 } |
83 } |
81 return d.value; |
84 return d.value; |
82 } |
85 } |
86 treemap.nodes({_children: d._children}); |
89 treemap.nodes({_children: d._children}); |
87 d._children.forEach(function(c) { |
90 d._children.forEach(function(c) { |
88 function getCount(node, count = 0) { |
91 function getCount(node, count = 0) { |
89 var c = languages[node.id]; |
92 var c = languages[node.id]; |
90 if(typeof c === 'undefined') { |
93 if(typeof c === 'undefined') { |
91 node._children.forEach(function(child) { |
94 if(node._children) { |
92 count = getCount(child, count); |
95 node._children.forEach(function(child) { |
93 }); |
96 count = getCount(child, count); |
94 return count; |
97 }); |
|
98 } else if(node.values) { |
|
99 count = node.values.reduce(function(p, v) { return p + (languages[v] ? languages[v] : 0); }, count); |
|
100 } |
|
101 return count; |
95 } else { |
102 } else { |
96 return count + c; |
103 return count + c; |
97 } |
104 } |
98 } |
105 } |
99 c.count = getCount(c); |
106 c.count = getCount(c); |