cms/app-client/app/components/visu-langues.js
author Chloe Laisne <chloe.laisne@gmail.com>
Thu, 23 Jun 2016 17:22:57 +0200
changeset 201 9ae2cf79d167
parent 198 541e26eb356f
child 261 02e2396bcbbc
permissions -rw-r--r--
Quickfix this is undefined
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39
c693e8673d5b add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff changeset
     1
import Ember from 'ember';
123
4c97e9da1416 Remove use of global variables + remove ember-cli-content-security-policy from package.json to avoid bogus csp violation warnings
ymh <ymh.work@gmail.com>
parents: 95
diff changeset
     2
import d3 from 'd3';
126
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents: 123
diff changeset
     3
import ENV from 'app-client/config/environment';
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents: 123
diff changeset
     4
import _ from 'lodash/lodash';
39
c693e8673d5b add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff changeset
     5
c693e8673d5b add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff changeset
     6
export default Ember.Component.extend({
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
     7
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
     8
    constants: Ember.inject.service(),
198
541e26eb356f Display filter IDs
Chloe Laisne <chloe.laisne@gmail.com>
parents: 188
diff changeset
     9
    filter: Ember.inject.service(),
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    10
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    11
    didInsertElement: function(){
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    12
        var self = this;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    13
        var margin = {top: 20, right: 0, bottom: 0, left: 0},
95
f7ab931581af improve interface
nowmad@23.1.168.192.in-addr.arpa
parents: 93
diff changeset
    14
        width = Ember.$("#chart_div").width(),
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    15
        height = 600 - margin.top - margin.bottom,
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    16
        formatNumber = d3.format(",d"),
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    17
        transitioning;
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    18
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    19
        var x = d3.scale.linear()
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    20
            .domain([0, width])
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    21
            .range([0, width]);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    22
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    23
        var y = d3.scale.linear()
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    24
            .domain([0, height])
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    25
            .range([0, height]);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    26
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    27
        var treemap = d3.layout.treemap()
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    28
            .children(function(d, depth) { return depth ? null : d._children; })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    29
            .sort(function(a, b) { return a.value - b.value; })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    30
            .ratio(height / width * 0.5 * (1 + Math.sqrt(5)))
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    31
            .round(false);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    32
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    33
        var svg = d3.select("#chart_div").append("svg")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    34
            .attr("width", width + margin.left + margin.right)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    35
            .attr("height", height + margin.bottom + margin.top)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    36
            .style("margin-left", -margin.left + "px")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    37
            .style("margin.right", -margin.right + "px")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    38
            .append("g")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    39
            .attr("transform", "translate(" + margin.left + "," + margin.top + ")")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    40
            .style("shape-rendering", "crispEdges");
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    41
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    42
        var grandparent = svg.append("g")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    43
            .attr("class", "grandparent");
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    44
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    45
        grandparent.append("rect")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    46
            .attr("y", -margin.top)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    47
            .attr("width", width)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    48
            .attr("height", margin.top);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    49
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    50
        grandparent.append("text")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    51
            .attr("x", 6)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    52
            .attr("y", 6 - margin.top)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    53
            .attr("dy", ".75em");
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    54
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    55
        var baseurl = ENV.baseURL.replace(/\/$/,"")+'/api/v1';
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    56
        d3.json(baseurl+"/languages", function(languages) {
126
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents: 123
diff changeset
    57
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    58
            var root = _.cloneDeep(self.constants.LANGUAGES_TREEMAP);
126
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents: 123
diff changeset
    59
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    60
            initialize(root);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    61
            accumulate(root);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    62
            layout(root);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    63
            display(root);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    64
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    65
            function initialize(root) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    66
                root.x = root.y = 0;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    67
                root.dx = width;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    68
                root.dy = height;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    69
                root.depth = 0;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    70
            }
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    71
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    72
            // Aggregate the values for internal nodes. This is normally done by the
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    73
            // treemap layout, but not here because of our custom implementation.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    74
            // We also take a snapshot of the original children (_children) to avoid
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    75
            // the children being overwritten when when layout is computed.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    76
            function accumulate(d) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    77
                d._children = d.children;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    78
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    79
                if(d.children) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    80
                    d.value = d.children.reduce(function(p, v) { return p + accumulate(v); }, 0);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    81
                } else if (_.isArray(d.id)) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    82
                    d.value = d.id.reduce(function(s,lid) { return s + (languages[lid]?languages[lid]:0); }, 0);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    83
                } else {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    84
                    d.value = languages[d.id]?languages[d.id]:0;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    85
                }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    86
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    87
                return d.value;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    88
            }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
    89
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    90
            // Compute the treemap layout recursively such that each group of siblings
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    91
            // uses the same size (1×1) rather than the dimensions of the parent cell.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    92
            // This optimizes the layout for the current zoom state. Note that a wrapper
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    93
            // object is created for the parent node for each group of siblings so that
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    94
            // the parent’s dimensions are not discarded as we recurse. Since each group
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    95
            // of sibling was laid out in 1×1, we must rescale to fit using absolute
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    96
            // coordinates. This lets us use a viewport to zoom.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    97
            function layout(d) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    98
                if (d._children) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
    99
                    treemap.nodes({_children: d._children});
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   100
                    d._children.forEach(function(c) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   101
                        c.x = d.x + c.x * d.dx;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   102
                        c.y = d.y + c.y * d.dy;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   103
                        c.dx *= d.dx;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   104
                        c.dy *= d.dy;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   105
                        c.parent = d;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   106
                        layout(c);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   107
                    });
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   108
                }
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   109
            }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   110
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   111
            function display(d) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   112
                grandparent
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   113
                    .datum(d.parent)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   114
                    .on("click", transition)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   115
                    .select("text")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   116
                    .text(name(d));
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   117
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   118
                var g1 = svg.insert("g", ".grandparent")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   119
                    .datum(d)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   120
                    .attr("class", "depth");
39
c693e8673d5b add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff changeset
   121
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   122
                var g = g1.selectAll("g")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   123
                    .data(d._children)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   124
                    .enter().append("g");
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   125
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   126
                g.classed("bla", true)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   127
                    .on("click", selectHandler);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   128
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   129
                g.filter(function(d) { return d._children; })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   130
                    .classed("children", true)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   131
                    .on("click", transition);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   132
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   133
                g.append("rect")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   134
                    .attr("class", "parent")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   135
                    .call(rect)
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   136
                    .append("title")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   137
                    .text(function(d) { return formatNumber(d.value); });
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   138
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   139
                g.append("text")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   140
                    .attr("dy", ".75em")
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   141
                    .text(function(d) { return d.name; })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   142
                    .call(text);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   143
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   144
                function transition(d) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   145
                    if (transitioning || !d) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   146
                        return;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   147
                    }
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   148
                    
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   149
                    selectHandler(d);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   150
                    transitioning = true;
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   151
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   152
                    var g2 = display(d),
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   153
                    t1 = g1.transition().duration(750),
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   154
                    t2 = g2.transition().duration(750);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   155
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   156
                    // Update the domain only after entering new elements.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   157
                    x.domain([d.x, d.x + d.dx]);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   158
                    y.domain([d.y, d.y + d.dy]);
39
c693e8673d5b add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff changeset
   159
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   160
                    // Enable anti-aliasing during the transition.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   161
                    svg.style("shape-rendering", null);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   162
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   163
                    // Draw child nodes on top of parent nodes.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   164
                    svg.selectAll(".depth").sort(function(a, b) { return a.depth - b.depth; });
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   165
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   166
                    // Fade-in entering text.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   167
                    g2.selectAll("text").style("fill-opacity", 0);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   168
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   169
                    // Transition to the new view.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   170
                    t1.selectAll("text").call(text).style("fill-opacity", 0);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   171
                    t2.selectAll("text").call(text).style("fill-opacity", 1);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   172
                    t1.selectAll("rect").call(rect);
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   173
                    t2.selectAll("rect").call(rect);
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   174
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   175
                    // Remove the old node when the transition is finished.
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   176
                    t1.remove().each("end", function() {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   177
                        svg.style("shape-rendering", "crispEdges");
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   178
                        transitioning = false;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   179
                    });
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   180
                }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   181
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   182
                function selectHandler (d){
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   183
                    if (d.id){
198
541e26eb356f Display filter IDs
Chloe Laisne <chloe.laisne@gmail.com>
parents: 188
diff changeset
   184
                        self.get('filter').set('language', d.id);
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   185
                    }
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   186
                }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   187
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   188
                return g;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   189
            }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   190
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   191
            function text(text) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   192
                text.attr("x", function(d) { return x(d.x) + 6; })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   193
                .attr("y", function(d) { return y(d.y) + 6; });
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   194
            }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   195
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   196
            function rect(rect) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   197
                rect.attr("x", function(d) { return x(d.x); })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   198
                    .attr("y", function(d) { return y(d.y); })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   199
                    .attr("width", function(d) { return x(d.x + d.dx) - x(d.x); })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   200
                    .attr("height", function(d) { return y(d.y + d.dy) - y(d.y); })
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   201
                    .attr("fill", function(d) { return (d.color || "#bbb"); });
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   202
            }
84
36f84e8f1ad5 add d3js for langue visu
nowmad@nowmads-macbook-pro.local
parents: 57
diff changeset
   203
188
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   204
            function name(d) {
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   205
                return d.parent ? name(d.parent) + "." + d.name : d.name;
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   206
            }
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   207
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   208
        });
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   209
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   210
    }
d2cb39155997 /langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents: 142
diff changeset
   211
39
c693e8673d5b add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff changeset
   212
});