cms/app-client/app/components/discourses-component.js
changeset 392 4fbe94af93e8
parent 362 c7aac4484587
child 394 48458e099b05
equal deleted inserted replaced
391:4f6118afabee 392:4fbe94af93e8
     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'; })