7 export default Ember.Component.extend({ |
7 export default Ember.Component.extend({ |
8 |
8 |
9 constants: Ember.inject.service(), |
9 constants: Ember.inject.service(), |
10 filter: Ember.inject.service(), |
10 filter: Ember.inject.service(), |
11 colors: Ember.inject.service(), |
11 colors: Ember.inject.service(), |
|
12 |
|
13 scale: Ember.computed('maxCount', 'minCount', function() { |
|
14 let maxCount = this.get('maxCount'); |
|
15 let minCount = this.get('minCount'); |
|
16 return this.get('colors').getScaleLinear(minCount, maxCount); |
|
17 }), |
|
18 maxCount: 0, |
|
19 minCount: 0, |
12 |
20 |
13 filterObserver: Ember.observer('filter.language', function() { |
21 filterObserver: Ember.observer('filter.language', function() { |
14 Ember.$('.node').removeClass("selected"); |
22 Ember.$('.node').removeClass("selected"); |
15 Ember.$('.node[data-id="' + this.get('filter').get('language') + '"]').addClass("selected"); |
23 Ember.$('.node[data-id="' + this.get('filter').get('language') + '"]').addClass("selected"); |
16 }), |
24 }), |
140 .append("div") |
148 .append("div") |
141 .attr("data-id", function(d) { return d.id; }); |
149 .attr("data-id", function(d) { return d.id; }); |
142 |
150 |
143 var dMin = Math.min.apply(null, d._children.map(function(d){ return d.count; })); |
151 var dMin = Math.min.apply(null, d._children.map(function(d){ return d.count; })); |
144 var dMax = Math.max.apply(null, d._children.map(function(d){ return d.count; })); |
152 var dMax = Math.max.apply(null, d._children.map(function(d){ return d.count; })); |
145 |
153 self.setProperties({minCount: dMin, maxCount: dMax}); |
146 node.attr("class", function(d) { return "node" + ( d.id === self.get('filter').get('language') ? " selected" : "" ); }) |
154 var scale = self.get('scale'); |
|
155 var backgroundColor = function(_d) { return scale(_d.count);}; |
|
156 var colorClass = function(_d) { return (self.get('colors').getPerceptiveLuminance(backgroundColor(_d)) >= 0.5)?'light-color':'dark-color'; }; |
|
157 |
|
158 node.attr("class", function(_d) { return "node " + colorClass(_d) + ( _d.id === self.get('filter').get('language') ? " selected" : "" ); }) |
147 .call(position) |
159 .call(position) |
148 .style("background-color", function(d) { return self.get('colors').shadeLinear(d.count,dMin,dMax); }) |
160 .style("background-color", backgroundColor) |
149 .on("click", selectHandler); |
161 .on("click", selectHandler); |
150 |
162 |
151 node.filter(function(d) { return d._children; }) |
163 node.filter(function(d) { return d._children; }) |
152 .classed("children", true) |
164 .classed("children", true) |
153 .on("click", transition) |
165 .on("click", transition) |