cms/app-client/app/components/visu-langues.js
changeset 424 feb0d3e0fef9
parent 394 48458e099b05
child 467 762fc0eb4946
--- a/cms/app-client/app/components/visu-langues.js	Mon Nov 14 17:23:43 2016 +0100
+++ b/cms/app-client/app/components/visu-langues.js	Tue Nov 15 17:42:57 2016 +0100
@@ -10,6 +10,14 @@
     filter: Ember.inject.service(),
     colors: Ember.inject.service(),
 
+    scale: Ember.computed('maxCount', 'minCount', function() {
+      let maxCount = this.get('maxCount');
+      let minCount = this.get('minCount');
+      return this.get('colors').getScaleLinear(minCount, maxCount);
+    }),
+    maxCount: 0,
+    minCount: 0,
+
     filterObserver: Ember.observer('filter.language', function() {
         Ember.$('.node').removeClass("selected");
         Ember.$('.node[data-id="' + this.get('filter').get('language') + '"]').addClass("selected");
@@ -142,10 +150,14 @@
 
                 var dMin = Math.min.apply(null, d._children.map(function(d){ return d.count; }));
                 var dMax = Math.max.apply(null, d._children.map(function(d){ return d.count; }));
+                self.setProperties({minCount: dMin, maxCount: dMax});
+                var scale = self.get('scale');
+                var backgroundColor = function(_d) { return scale(_d.count);};
+                var colorClass = function(_d) { return (self.get('colors').getPerceptiveLuminance(backgroundColor(_d)) >= 0.5)?'light-color':'dark-color'; };
 
-                node.attr("class", function(d) { return "node" + ( d.id === self.get('filter').get('language') ? " selected" : "" ); })
+                node.attr("class", function(_d) { return "node " + colorClass(_d) + ( _d.id === self.get('filter').get('language') ? " selected" : "" ); })
                     .call(position)
-                    .style("background-color", function(d) { return self.get('colors').shadeLinear(d.count,dMin,dMax); })
+                    .style("background-color", backgroundColor)
                     .on("click", selectHandler);
 
                 node.filter(function(d) { return d._children; })