cms/app-client/app/components/visu-langues.js
changeset 339 766af1228b05
parent 329 0a2c2ad49d75
child 344 70451a4dc9ae
equal deleted inserted replaced
338:4a3899b6a7ed 339:766af1228b05
    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);