author | Chloe Laisne <chloe.laisne@gmail.com> |
Fri, 23 Sep 2016 21:44:56 +0200 | |
changeset 286 | 57762c0b601e |
parent 261 | 02e2396bcbbc |
child 287 | 4e199fd29689 |
permissions | -rw-r--r-- |
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 | 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; |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
13 |
var baseurl = ENV.rootURL.replace(/\/$/,"")+'/api/v1'; |
84 | 14 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
15 |
d3.json(baseurl+"/languages", function(languages) { |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
16 |
var margin = { top: 30, right: 0, bottom: 0, left: 0 }; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
17 |
var width = $('#' + self.get('elementId')).width(); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
18 |
var height = $('#' + self.get('elementId')).height() - margin.top - margin.bottom; |
84 | 19 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
20 |
var array = Object.keys(languages).map(function (key) { return languages[key]; }); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
21 |
var oldMin = Math.min(...array), |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
22 |
oldMax = Math.max(...array); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
23 |
var sum = array.reduce(function(a, b) { return a + b; }); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
24 |
var average = sum / array.length; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
25 |
var newMin = Math.floor((average - oldMin)), |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
26 |
newMax = Math.floor((oldMax - average)); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
27 |
|
84 | 28 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
29 |
var x = d3.scale.linear() |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
30 |
.domain([0, width]) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
31 |
.range([0, width]), |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
32 |
y = d3.scale.linear() |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
33 |
.domain([0, height]) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
34 |
.range([0, height]); |
84 | 35 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
36 |
var treemap = d3.layout.treemap() |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
37 |
.children(function(d, depth) { return depth ? null : d._children; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
38 |
.sort(function(a, b) { return a.value - b.value; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
39 |
.value(function(d){ |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
40 |
return Math.floor((((d.value - oldMin) * (newMax - newMin)) / (oldMax - oldMin)) + newMin); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
41 |
}) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
42 |
.round(false); |
84 | 43 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
44 |
var element = d3.select('#' + self.get('elementId')) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
45 |
.style("width", width + margin.left + margin.right + 'px') |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
46 |
.style("height", height + margin.bottom + margin.top + 'px') |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
47 |
.style("margin-left", -margin.left + "px") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
48 |
.style("margin-right", -margin.right + "px") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
49 |
.attr("transform", "translate(" + margin.left + "," + margin.top + ")") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
50 |
.style("shape-rendering", "crispEdges"); |
84 | 51 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
52 |
var breadcrumbs = element.insert("div", ":first-child") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
53 |
.attr("class", "breadcrumbs") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
54 |
.attr("y", -margin.top) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
55 |
.style("width", width + 'px') |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
56 |
.style("height", margin.top + 'px'); |
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); |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
59 |
root.x = root.y = 0; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
60 |
root.dx = width; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
61 |
root.dy = height; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
62 |
root.depth = 0; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
63 |
var transitioning = false; |
126
e87a340711a4
improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
123
diff
changeset
|
64 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
65 |
accumulate(root); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
66 |
layout(root); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
67 |
display(root); |
84 | 68 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
69 |
function accumulate(d) { |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
70 |
d._children = d.children; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
71 |
if(d.children) { |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
72 |
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
|
73 |
} else { |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
74 |
d.value = languages[d.id] ? languages[d.id] : 0; |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
75 |
} |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
76 |
return d.value; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
77 |
} |
84 | 78 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
79 |
function layout(d) { |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
80 |
if (d._children) { |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
81 |
treemap.nodes({_children: d._children}); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
82 |
d._children.forEach(function(c) { |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
83 |
function getCount(node, count = 0) { |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
84 |
var c = languages[node.id]; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
85 |
if(typeof c === 'undefined') { |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
86 |
node._children.forEach(function(child) { |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
87 |
count = getCount(child, count); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
88 |
}); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
89 |
return count; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
90 |
} else { |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
91 |
return count + c; |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
92 |
} |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
93 |
} |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
94 |
c.count = getCount(c); |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
95 |
c.x = d.x + c.x * d.dx; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
96 |
c.y = d.y + c.y * d.dy; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
97 |
c.dx *= d.dx; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
98 |
c.dy *= d.dy; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
99 |
c.parent = d; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
100 |
layout(c); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
101 |
}); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
102 |
} |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
103 |
} |
84 | 104 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
105 |
function display(d) { |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
106 |
breadcrumbs |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
107 |
.datum(d.parent) |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
108 |
.html(name(d)) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
109 |
.on("click", transition); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
110 |
|
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
111 |
var nodes = element.append("div") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
112 |
.attr("class", "nodes") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
113 |
.datum(d); |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
114 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
115 |
var node = nodes.selectAll() |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
116 |
.data(d._children) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
117 |
.enter() |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
118 |
.append("div"); |
39
c693e8673d5b
add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff
changeset
|
119 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
120 |
node.attr("class", "node") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
121 |
.style("width", function(d) { return x(d.x + d.dx) - x(d.x) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
122 |
.style("height", function(d) { return y(d.y + d.dy) - y(d.y) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
123 |
.style("left", function(d) { return d.x + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
124 |
.style("top", function(d) { return d.y + 'px'; }) |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
125 |
.on("click", selectHandler); |
84 | 126 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
127 |
node.filter(function(d) { return d._children; }) |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
128 |
.classed("children", true) |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
129 |
.on("click", transition); |
84 | 130 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
131 |
node.append("span") |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
132 |
.html(function(d) { return d.name + ' <span class="count">(' + d.count + ')</span>'; }); |
84 | 133 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
134 |
function transition(d) { |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
135 |
if (transitioning || !d) { |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
136 |
return; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
137 |
} |
261
02e2396bcbbc
Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents:
198
diff
changeset
|
138 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
139 |
selectHandler(d); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
140 |
transitioning = true; |
84 | 141 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
142 |
var newNodes = display(d), |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
143 |
transitionNodes = nodes.transition().duration(750), |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
144 |
transitionNewNodes = newNodes.transition().duration(750); |
84 | 145 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
146 |
x.domain([d.x, d.x + d.dx]); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
147 |
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
|
148 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
149 |
element.style("shape-rendering", null); |
84 | 150 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
151 |
element.selectAll(".nodes").sort(function(a, b) { return a.depth - b.depth; }); |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
152 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
153 |
newNodes.selectAll("text").style("fill-opacity", 0); |
84 | 154 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
155 |
transitionNodes.style("fill-opacity", 0) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
156 |
.style("width", function(d) { return x(d.x + d.dx) - x(d.x) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
157 |
.style("height", function(d) { return y(d.y + d.dy) - y(d.y) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
158 |
.style("left", function(d) { return x(d.x) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
159 |
.style("top", function(d) { return y(d.y) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
160 |
.attr("fill", function(d) { return (d.color || "#bbb"); }); |
84 | 161 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
162 |
transitionNewNodes.style("fill-opacity", 1) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
163 |
.style("width", function(d) { return x(d.x + d.dx) - x(d.x) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
164 |
.style("height", function(d) { return y(d.y + d.dy) - y(d.y) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
165 |
.style("left", function(d) { return x(d.x) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
166 |
.style("top", function(d) { return y(d.y) + 'px'; }) |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
167 |
.attr("fill", function(d) { return (d.color || "#bbb"); }); |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
168 |
|
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
169 |
transitionNodes.remove().each("end", function() { |
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
170 |
element.style("shape-rendering", "crispEdges"); |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
171 |
transitioning = false; |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
172 |
}); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
173 |
} |
84 | 174 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
175 |
function selectHandler (d){ |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
176 |
if (d.id){ |
198 | 177 |
self.get('filter').set('language', d.id); |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
178 |
} |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
179 |
} |
84 | 180 |
|
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
181 |
return node; |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
182 |
} |
84 | 183 |
|
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
184 |
function name(d) { |
286
57762c0b601e
Treemap layout: Resize node values to get bigger rect when value is smal + Create and display count + Node colors
Chloe Laisne <chloe.laisne@gmail.com>
parents:
261
diff
changeset
|
185 |
return d.parent ? name(d.parent) + '<span class="level">' + d.name + '</span>' : '<span class="root">' + d.name + '</span>'; |
188
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
186 |
} |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
187 |
|
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
188 |
}); |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
189 |
|
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
190 |
} |
d2cb39155997
/langue endpoint ID querystring parameter
Chloe Laisne <chloe.laisne@gmail.com>
parents:
142
diff
changeset
|
191 |
|
39
c693e8673d5b
add visu-langue with google treemap
nowmad@23.1.168.192.in-addr.arpa
parents:
diff
changeset
|
192 |
}); |