equal
deleted
inserted
replaced
1 import Ember from 'ember'; |
1 import Ember from 'ember'; |
2 import d3 from 'd3'; |
2 import d3 from 'd3'; |
3 import ENV from 'app-client/config/environment'; |
3 import ENV from 'app-client/config/environment'; |
|
4 import _ from 'lodash/lodash'; |
4 |
5 |
5 |
6 |
6 |
7 |
7 export default Ember.Component.extend({ |
8 export default Ember.Component.extend({ |
8 |
9 |
11 constants: Ember.inject.service(), |
12 constants: Ember.inject.service(), |
12 filter: Ember.inject.service(), |
13 filter: Ember.inject.service(), |
13 |
14 |
14 discourseObserver: Ember.observer('filter.discourse', function() { |
15 discourseObserver: Ember.observer('filter.discourse', function() { |
15 Ember.$('.item').removeClass("selected"); |
16 Ember.$('.item').removeClass("selected"); |
16 Ember.$('.item[data-id="' + this.get('filter').get('discourse') + '"]').addClass("selected"); |
17 if(this.get('filter').get('discourse') !== null) { |
|
18 this.get('filter').get('discourse').forEach(function(e) { |
|
19 Ember.$('.item[data-id="' + e + '"]').addClass("selected"); |
|
20 }); |
|
21 } |
|
22 |
17 }).on('init'), |
23 }).on('init'), |
18 |
24 |
19 didRender: function() { |
25 didRender: function() { |
20 var self = this; |
26 var self = this; |
21 var baseURL = (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,"")+'/api/v1/stats'; |
27 var baseURL = (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,"")+'/api/v1/stats'; |
48 var nodes = element |
54 var nodes = element |
49 .selectAll() |
55 .selectAll() |
50 .data(bubbles); |
56 .data(bubbles); |
51 |
57 |
52 nodes.enter().append("div") |
58 nodes.enter().append("div") |
53 .attr("class", function(d) { return ( d.children ? "category": "item" ) + ( self.get('filter').get('discourse') === d.id ? " selected" : "" ) ; }); |
59 .attr("class", function(d) { return ( d.children ? "category": "item" ) + ( (self.get('filter').get('discourse') !== null && _.contains(self.get('filter').get('discourse'), d.id)) ? " selected" : "" ) ; }); |
54 |
60 |
55 var item = element.selectAll(".item") |
61 var item = element.selectAll(".item") |
56 .attr("data-id", function(d) { return d.id; }) |
62 .attr("data-id", function(d) { return d.id; }) |
57 .style("left", function(d) { return ( d.x - d.r) + "px"; }) |
63 .style("left", function(d) { return ( d.x - d.r) + "px"; }) |
58 .style("top", function(d) { return ( d.y - d.r) + "px"; }) |
64 .style("top", function(d) { return ( d.y - d.r) + "px"; }) |
60 .style("height", function(d) { return (d.r * 2) + "px"; }) |
66 .style("height", function(d) { return (d.r * 2) + "px"; }) |
61 .style("background-color", function(d) { return d.fill; }) |
67 .style("background-color", function(d) { return d.fill; }) |
62 .style("border-color", function(d) { return d.stroke; }) |
68 .style("border-color", function(d) { return d.stroke; }) |
63 .style("font-size", function(d) { return Math.floor((((d.value - oldMin) * (13 - 10)) / (oldMax - oldMin)) + 10) + 'px'; }) |
69 .style("font-size", function(d) { return Math.floor((((d.value - oldMin) * (13 - 10)) / (oldMax - oldMin)) + 10) + 'px'; }) |
64 .on('click', function(d) { |
70 .on('click', function(d) { |
65 self.get('filter').set('discourse', d.id); |
71 self.get('filter').setFilter('discourse', d.id); |
66 }); |
72 }); |
67 |
73 |
68 item.append("span") |
74 item.append("span") |
69 .html(function(d) { return d.name + ' <span class="count">(' + d.count + ')</span>'; }) |
75 .html(function(d) { return d.name + ' <span class="count">(' + d.count + ')</span>'; }) |
70 .style("margin-left", function() { return ( Ember.$(this).width() > Ember.$(this).parent().width() ? - ( Ember.$(this).width() / 2 ) + ( Ember.$(this).parent().width() / 2 ) : 0 ) + 'px'; }) |
76 .style("margin-left", function() { return ( Ember.$(this).width() > Ember.$(this).parent().width() ? - ( Ember.$(this).width() / 2 ) + ( Ember.$(this).parent().width() / 2 ) : 0 ) + 'px'; }) |