toolkit/javascript/d3/examples/force/force-cluster.html
author Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
Wed, 16 Apr 2014 14:59:23 +0200
changeset 50 f68ecaf5265e
parent 47 c0b4a8b5a012
permissions -rw-r--r--
add visualisation dossiers + general editing
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     1
<!DOCTYPE html>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     2
<html>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     3
  <head>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     4
    <title>Clustered Network</title>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     5
    <script type="text/javascript" src="../../d3.js"></script>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     6
    <script type="text/javascript" src="../../d3.geom.js"></script>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     7
    <script type="text/javascript" src="../../d3.layout.js"></script>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     8
    <style type="text/css">
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     9
svg {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    10
  border: 1px solid #ccc;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    11
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    12
body {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    13
  font: 10px sans-serif;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    14
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    15
circle.node {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    16
  fill: lightsteelblue;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    17
  stroke: #fff;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    18
  stroke-width: 1.5px;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    19
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    20
path.hull {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    21
  fill: lightsteelblue;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    22
  fill-opacity: 0.3;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    23
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    24
line.link {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    25
  stroke: #333;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    26
  stroke-opacity: 0.5;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    27
  pointer-events: none;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    28
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    29
    </style>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    30
  </head>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    31
  <body>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    32
    <script type="text/javascript">
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    33
var w = 960,     // svg width
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    34
    h = 600,     // svg height
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    35
    dr = 4,      // default point radius
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    36
    off = 15,    // cluster hull offset
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    37
    expand = {}, // expanded clusters
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    38
    data, net, force, hullg, hull, linkg, link, nodeg, node,
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    39
    curve = d3.svg.line().interpolate("cardinal-closed").tension(.85),
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    40
    fill = d3.scale.category20();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    41
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    42
function noop() { return false; }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    43
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    44
function nodeid(n) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    45
  return n.size ? "_g_"+n.group : n.name;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    46
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    47
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    48
function linkid(l) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    49
  var u = nodeid(l.source),
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    50
      v = nodeid(l.target);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    51
  return u<v ? u+"|"+v : v+"|"+u;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    52
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    53
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    54
function getGroup(n) { return n.group; }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    55
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    56
// constructs the network to visualize
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    57
function network(data, prev, index, expand) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    58
  expand = expand || {};
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    59
  var gm = {},    // group map
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    60
      nm = {},    // node map
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    61
      lm = {},    // link map
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    62
      gn = {},    // previous group nodes
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    63
      gc = {},    // previous group centroids
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    64
      nodes = [], // output nodes
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    65
      links = []; // output links
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    66
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    67
  // process previous nodes for reuse or centroid calculation
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    68
  if (prev) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    69
    prev.nodes.forEach(function(n) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    70
      var i = index(n), o;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    71
      if (n.size > 0) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    72
        gn[i] = n;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    73
        n.size = 0;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    74
      } else {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    75
        o = gc[i] || (gc[i] = {x:0,y:0,count:0});
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    76
        o.x += n.x;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    77
        o.y += n.y;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    78
        o.count += 1;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    79
      }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    80
    });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    81
  }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    82
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    83
  // determine nodes
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    84
  for (var k=0; k<data.nodes.length; ++k) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    85
    var n = data.nodes[k],
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    86
        i = index(n);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    87
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    88
    if (expand[i]) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    89
      // the node should be directly visible
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    90
      nm[n.name] = nodes.length;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    91
      nodes.push(n);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    92
      if (gn[i]) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    93
        // place new nodes at cluster location (plus jitter)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    94
        n.x = gn[i].x + Math.random();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    95
        n.y = gn[i].y + Math.random();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    96
      }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    97
    } else {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    98
      // the node is part of a collapsed cluster
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    99
      var l = gm[i] || (gm[i]=gn[i]) || (gm[i]={group:i, size:0, nodes:[]});
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   100
      if (l.size == 0) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   101
        // if new cluster, add to set and position at centroid of leaf nodes
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   102
        nm[i] = nodes.length;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   103
        nodes.push(l);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   104
        if (gc[i]) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   105
          l.x = gc[i].x / gc[i].count;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   106
          l.y = gc[i].y / gc[i].count;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   107
        }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   108
      }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   109
      l.size += 1;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   110
      l.nodes.push(n);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   111
    }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   112
  }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   113
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   114
  // determine links
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   115
  for (k=0; k<data.links.length; ++k) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   116
    var e = data.links[k],
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   117
        u = index(e.source),
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   118
        v = index(e.target);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   119
    u = expand[u] ? nm[e.source.name] : nm[u];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   120
    v = expand[v] ? nm[e.target.name] : nm[v];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   121
    var i = (u<v ? u+"|"+v : v+"|"+u),
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   122
        l = lm[i] || (lm[i] = {source:u, target:v, size:0});
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   123
    l.size += 1;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   124
  }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   125
  for (i in lm) { links.push(lm[i]); }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   126
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   127
  return {nodes: nodes, links: links};
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   128
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   129
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   130
function convexHulls(nodes, index, offset) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   131
  var h = {};
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   132
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   133
  // create point sets
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   134
  for (var k=0; k<nodes.length; ++k) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   135
    var n = nodes[k];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   136
    if (n.size) continue;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   137
    var i = index(n),
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   138
        l = h[i] || (h[i] = []);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   139
    l.push([n.x-offset, n.y-offset]);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   140
    l.push([n.x-offset, n.y+offset]);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   141
    l.push([n.x+offset, n.y-offset]);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   142
    l.push([n.x+offset, n.y+offset]);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   143
  }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   144
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   145
  // create convex hulls
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   146
  var hulls = [];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   147
  for (i in h) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   148
    hulls.push({group: i, path: d3.geom.hull(h[i])});
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   149
  }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   150
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   151
  return hulls;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   152
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   153
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   154
function drawCluster(d) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   155
  return curve(d.path); // 0.8
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   156
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   157
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   158
// --------------------------------------------------------
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   159
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   160
var body = d3.select("body");
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   161
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   162
var vis = body.append("svg:svg")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   163
   .attr("width", w)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   164
   .attr("height", h);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   165
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   166
d3.json("miserables.json", function(json) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   167
  data = json;
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   168
  for (var i=0; i<data.links.length; ++i) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   169
    o = data.links[i];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   170
    o.source = data.nodes[o.source];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   171
    o.target = data.nodes[o.target];
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   172
  }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   173
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   174
  hullg = vis.append("svg:g");
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   175
  linkg = vis.append("svg:g");
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   176
  nodeg = vis.append("svg:g");
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   177
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   178
  init();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   179
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   180
  vis.attr("opacity", 1e-6)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   181
    .transition()
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   182
      .duration(1000)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   183
      .attr("opacity", 1);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   184
});
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   185
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   186
function init() {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   187
  if (force) force.stop();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   188
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   189
  net = network(data, net, getGroup, expand);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   190
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   191
  force = d3.layout.force()
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   192
      .nodes(net.nodes)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   193
      .links(net.links)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   194
      .size([w, h])
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   195
      .linkDistance(50)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   196
      .start();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   197
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   198
  hullg.selectAll("path.hull").remove();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   199
  hull = hullg.selectAll("path.hull")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   200
      .data(convexHulls(net.nodes, getGroup, off))
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   201
    .enter().append("svg:path")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   202
      .attr("class", "hull")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   203
      .attr("d", drawCluster)
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   204
      .style("fill", function(d) { return fill(d.group); })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   205
      .on("dblclick", function(d) { expand[d.group] = false; init(); });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   206
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   207
  link = linkg.selectAll("line.link").data(net.links, linkid);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   208
  link.exit().remove();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   209
  link.enter().append("svg:line")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   210
      .attr("class", "link")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   211
      .attr("x1", function(d) { return d.source.x; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   212
      .attr("y1", function(d) { return d.source.y; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   213
      .attr("x2", function(d) { return d.target.x; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   214
      .attr("y2", function(d) { return d.target.y; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   215
      .style("stroke-width", function(d) { return d.size || 1; });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   216
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   217
  node = nodeg.selectAll("circle.node").data(net.nodes, nodeid);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   218
  node.exit().remove();
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   219
  node.enter().append("svg:circle")
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   220
      .attr("class", function(d) { return "node" + (d.size?"":" leaf"); })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   221
      .attr("r", function(d) { return d.size ? d.size + dr : dr+1; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   222
      .attr("cx", function(d) { return d.x; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   223
      .attr("cy", function(d) { return d.y; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   224
      .style("fill", function(d) { return fill(d.group); })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   225
      .on("dblclick", function(d) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   226
        if (d.size) { expand[d.group] = true; init(); }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   227
      });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   228
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   229
  node.call(force.drag);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   230
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   231
  force.on("tick", function() {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   232
    if (!hull.empty()) {
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   233
      hull.data(convexHulls(net.nodes, getGroup, off))
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   234
          .attr("d", drawCluster);
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   235
    }
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   236
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   237
    link.attr("x1", function(d) { return d.source.x; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   238
        .attr("y1", function(d) { return d.source.y; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   239
        .attr("x2", function(d) { return d.target.x; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   240
        .attr("y2", function(d) { return d.target.y; });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   241
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   242
    node.attr("cx", function(d) { return d.x; })
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   243
        .attr("cy", function(d) { return d.y; });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   244
  });
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   245
}
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   246
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   247
    </script>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   248
  </body>
c0b4a8b5a012 add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   249
</html>
PKuBeG, egonomy-f752e362bf62/src/egonomy/__init__.pyUTOQPKuB?r) Megonomy-f752e362bf62/src/egonomy/admin.pyUTOQPKuBع%/ egonomy-f752e362bf62/src/egonomy/config.py.tmplUTOQPKuBXz@ - egonomy-f752e362bf62/src/egonomy/locale/en/LC_MESSAGES/django.moUTOQPKuBlk5@ egonomy-f752e362bf62/src/egonomy/locale/en/LC_MESSAGES/django.poUTOQPKuB=@ egonomy-f752e362bf62/src/egonomy/locale/fr/LC_MESSAGES/django.moUTOQPKuBIP  "@ egonomy-f752e362bf62/src/egonomy/locale/fr/LC_MESSAGES/django.poUTOQPKuB7 "egonomy-f752e362bf62/src/egonomy/management/__init__.pyUTOQPKuB@ #egonomy-f752e362bf62/src/egonomy/management/commands/__init__.pyUTOQPKuBS|<8E #egonomy-f752e362bf62/src/egonomy/management/commands/export_to_xml.pyUTOQPKuB+3[F A,egonomy-f752e362bf62/src/egonomy/management/commands/import_pertimm.pyUTOQPKuB[Tp[ 0B 3egonomy-f752e362bf62/src/egonomy/management/commands/import_rmn.pyUTOQPKuBy4 @egonomy-f752e362bf62/src/egonomy/management/utils.pyUTOQPKuB6bԤ+6; Begonomy-f752e362bf62/src/egonomy/migrations/0001_initial.pyUTOQPKuBG$? Iegonomy-f752e362bf62/src/egonomy/migrations/0002_update_site.pyUTOQPKuB >.L Oegonomy-f752e362bf62/src/egonomy/migrations/0003_add_collection_and_items.pyUTOQPKuB7 Vegonomy-f752e362bf62/src/egonomy/migrations/__init__.pyUTOQPKuBf(P!* Wegonomy-f752e362bf62/src/egonomy/models.pyUTOQPKuB/D- _egonomy-f752e362bf62/src/egonomy/modwsgi.wsgiUTOQPKuBɝk ; aegonomy-f752e362bf62/src/egonomy/search_indexes/__init__.pyUTOQPKuBD begonomy-f752e362bf62/src/egonomy/search_indexes/backends/__init__.pyUTOQPKuB.;xQ mcegonomy-f752e362bf62/src/egonomy/search_indexes/backends/elasticsearch_backend.pyUTOQPKuB #6: 0jegonomy-f752e362bf62/src/egonomy/search_indexes/indexes.pyUTOQPKuB1hX< `legonomy-f752e362bf62/src/egonomy/search_indexes/paginator.pyUTOQPKuB~< ;negonomy-f752e362bf62/src/egonomy/search_indexes/processor.pyUTOQPKuBSA)8 oegonomy-f752e362bf62/src/egonomy/search_indexes/query.pyUTOQPKuB1w? tegonomy-f752e362bf62/src/egonomy/search_indexes/query_parser.pyUTOQPKuBȯL4 D, yegonomy-f752e362bf62/src/egonomy/settings.pyUTOQPKuB!ym&= egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts.cssUTOQPKuB kK$b egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/Josefin/JosefinSansStd-Light-webfont.eotUTOQPKuB(b([b egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/Josefin/JosefinSansStd-Light-webfont.svgUTOQPKuBz+ KPb egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/Josefin/JosefinSansStd-Light-webfont.ttfUTOQPKuBN#7LTLc 큫Gegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/Josefin/JosefinSansStd-Light-webfont.woffUTOQPKuBq(;fMMb |egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-bold-webfont.eotUTOQPKuBi@b {egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-bold-webfont.svgUTOQPKuB:9Xb $egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-bold-webfont.ttfUTOQPKuB}ZYYc c}egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-bold-webfont.woffUTOQPKuBIDe 큵egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-regular-webfont.svgUTOQPKuBvAWte S egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-regular-webfont.ttfUTOQPKuBcXk@rb 큞 egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thin-webfont.svgUTOQPKuB^-9Tb 큢 egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thin-webfont.ttfUTOQPKuB,p[UUc h egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thin-webfont.woffUTOQPKuBYZh 큾 egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thinitalic-webfont.eotUTOQPKuB{'g Jh 1egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thinitalic-webfont.svgUTOQPKuBT4vfth cegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thinitalic-webfont.ttfUTOQPKuB9}8g`gi egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/josefinsans/josefinsans-thinitalic-webfont.woffUTOQPKuB-FZ@U·S 2egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bla-webfont.eotUTOQPKuBz߄BS egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bla-webfont.svgUTOQPKuB #US egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bla-webfont.ttfUTOQPKuB+.UUT !egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bla-webfont.woffUTOQPKuB<^•V wegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BlaIta-webfont.eotUTOQPKuB*%|FvV oegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BlaIta-webfont.svgUTOQPKuBacm^̔V egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BlaIta-webfont.ttfUTOQPKuBGyj^^W }egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BlaIta-webfont.woffUTOQPKuBZS 7egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bol-webfont.eotUTOQPKuBe4AVAS 6egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bol-webfont.svgUTOQPKuBaՊYĊS 큥xegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bol-webfont.ttfUTOQPKuB<YYT egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Bol-webfont.woffUTOQPKuBH aV ,egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BolIta-webfont.eotUTOQPKuBHiFV egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BolIta-webfont.svgUTOQPKuB)a$V oegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BolIta-webfont.ttfUTOQPKuB p`PaW %8egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-BolIta-webfont.woffUTOQPKuB/US 큯egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Hai-webfont.eotUTOQPKuB_>=vS Jegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Hai-webfont.svgUTOQPKuBT̋S -egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Hai-webfont.ttfUTOQPKuBa'U\UT ;egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Hai-webfont.woffUTOQPKuB[rϲ^bV egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-HaiIta-webfont.eotUTOQPKuBG[C/V 7egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-HaiIta-webfont.svgUTOQPKuBzTf^`V {egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-HaiIta-webfont.ttfUTOQPKuBԙY9^^W 큢egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-HaiIta-webfont.woffUTOQPKuBV`2X2S i8egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Lig-webfont.eotUTOQPKuBl\Au@hS 크egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Lig-webfont.svgUTOQPKuB ,;XXS 큫egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Lig-webfont.ttfUTOQPKuBexXXT p+egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Lig-webfont.woffUTOQPKuB]aRV segonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-LigIta-webfont.eotUTOQPKuBE9V egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-LigIta-webfont.svgUTOQPKuBgLda\V -egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-LigIta-webfont.ttfUTOQPKuBghQaaW egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-LigIta-webfont.woffUTOQPKuB+/HYY:S egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Reg-webfont.eotUTOQPKuBK[zARS 큿Jegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Reg-webfont.svgUTOQPKuBByXXS Ìegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Reg-webfont.ttfUTOQPKuBˊYPYT 2egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-Reg-webfont.woffUTOQPKuB=V7WcV 큾?egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-RegIta-webfont.eotUTOQPKuBV"FV 큢egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-RegIta-webfont.svgUTOQPKuB }/+bV egonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-RegIta-webfont.ttfUTOQPKuBgb8cW HNegonomy-f752e362bf62/src/egonomy/static/egonomy/css/fonts/lato/Lato-RegIta-webfont.woffUTOQPKuB}WCSYE egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/loader.gifUTOQPKuBdfY regonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_flat_0_aaaaaa_40x100.pngUTOQPKuBYodZ hegonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_flat_75_ffffff_40x100.pngUTOQPKuB;\wxZ ]egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_glass_55_fbf9ee_1x400.pngUTOQPKuBgiZ eegonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_glass_65_ffffff_1x400.pngUTOQPKuBۇmoZ ] egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_glass_75_dadada_1x400.pngUTOQPKuB-nlnZ [ egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_glass_75_e6e6e6_1x400.pngUTOQPKuBevwZ X egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_glass_95_fef1ec_1x400.pngUTOQPKuB&svc _ egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_highlight-soft_25_0073ea_1x100.pngUTOQPKuB,XIbec l egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-bg_highlight-soft_75_cccccc_1x100.pngUTOQPKuB7,V hegonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-icons_222222_256x240.pngUTOQPKuB|8+V !egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-icons_2e83ff_256x240.pngUTOQPKuB5+V /egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-icons_454545_256x240.pngUTOQPKuB+V @egonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-icons_888888_256x240.pngUTOQPKuBw+V IQegonomy-f752e362bf62/src/egonomy/static/egonomy/css/images/ui-icons_cd0a0a_256x240.pngUTOQPKuB.2a= begonomy-f752e362bf62/src/egonomy/static/egonomy/css/reset.cssUTOQPKuBv3A eegonomy-f752e362bf62/src/egonomy/static/egonomy/css/slideshow.cssUTOQPKuB!YN= gegonomy-f752e362bf62/src/egonomy/static/egonomy/css/style.cssUTOQPKuBKD zegonomy-f752e362bf62/src/egonomy/static/egonomy/img/arrow-select.pngUTOQPKuB H {egonomy-f752e362bf62/src/egonomy/static/egonomy/img/border-bar-tools.pngUTOQPKuBnAhDL |egonomy-f752e362bf62/src/egonomy/static/egonomy/img/border-bottom-header.pngUTOQPKuBaqB 5F T~egonomy-f752e362bf62/src/egonomy/static/egonomy/img/border-dot-bar.pngUTOQPKuB8axB egonomy-f752e362bf62/src/egonomy/static/egonomy/img/border-dot.pngUTOQPKuBw,C egonomy-f752e362bf62/src/egonomy/static/egonomy/img/close-popin.pngUTOQPKuB+@G= |egonomy-f752e362bf62/src/egonomy/static/egonomy/img/empty.gifUTOQPKuB#B egonomy-f752e362bf62/src/egonomy/static/egonomy/img/home-arrow.pngUTOQPKuB֍G egonomy-f752e362bf62/src/egonomy/static/egonomy/img/home-image-left.pngUTOQPKuB-3x(hgJ "egonomy-f752e362bf62/src/egonomy/static/egonomy/img/home-image-right-2.pngUTOQPKuB}JP#H <$egonomy-f752e362bf62/src/egonomy/static/egonomy/img/home-image-right.pngUTOQPKuBێH &egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-arrow-enter.pngUTOQPKuB\\#E M&egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-cross-10.pngUTOQPKuBg׋A &egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-home.pngUTOQPKuB2O?C &egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-mosaic.pngUTOQPKuBwT VF ,&egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-pencil-15.pngUTOQPKuB#VG &egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-search-big.pngUTOQPKuBwC &egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icon-search.pngUTOQPKuBSr7@ $&egonomy-f752e362bf62/src/egonomy/static/egonomy/img/icons-15.pngUTOQPKuBj[p D &egonomy-f752e362bf62/src/egonomy/static/egonomy/img/tools-sprite.pngUTOQPKuBp _< &egonomy-f752e362bf62/src/egonomy/static/egonomy/js/cutout.jsUTOQPKuB_K: Y&egonomy-f752e362bf62/src/egonomy/static/egonomy/js/main.jsUTOQPKuB]UA &egonomy-f752e362bf62/src/egonomy/static/egonomy/js/masonry.min.jsUTOQPKuBBT` ? &egonomy-f752e362bf62/src/egonomy/static/egonomy/js/slideshow.jsUTOQPKuBc\%iM 큩&egonomy-f752e362bf62/src/egonomy/static/egonomy/js/vendor/jquery-1.9.1.min.jsUTOQPKuB(?T6<P Ri'egonomy-f752e362bf62/src/egonomy/static/egonomy/js/vendor/modernizr-2.6.2.min.jsUTOQPKuB*CA3{D -'egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui.min.jsUTOQPKuB n m(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/animated-overlay.gifUTOQPKuBdfx t(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.pngUTOQPKuBYody u(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.pngUTOQPKuB;\wxy v(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.pngUTOQPKuBgiy w(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.pngUTOQPKuBۇmoy y(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.pngUTOQPKuB-nlny 2z(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.pngUTOQPKuBevwy N{(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.pngUTOQPKuB,XIbe t|(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.pngUTOQPKuBTx(u }(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-icons_222222_256x240.pngUTOQPKuB`+u c(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-icons_2e83ff_256x240.pngUTOQPKuBޑn'u :(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-icons_454545_256x240.pngUTOQPKuB(u (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-icons_888888_256x240.pngUTOQPKuBp.*u (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/images/ui-icons_cd0a0a_256x240.pngUTOQPKuBImdd (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery-ui.min.cssUTOQPKuB0n @(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.accordion.min.cssUTOQPKuBZ/q (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.autocomplete.min.cssUTOQPKuBtC2Sk a(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.button.min.cssUTOQPKuBJi 5(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.core.min.cssUTOQPKuBP,D o (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.datepicker.min.cssUTOQPKuBgk (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.dialog.min.cssUTOQPKuB"V6i (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.menu.min.cssUTOQPKuBetp (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.progressbar.min.cssUTOQPKuB`Xn K(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.resizable.min.cssUTOQPKuB@꠮o H(egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.selectable.min.cssUTOQPKuBZk (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.slider.min.cssUTOQPKuBl{l (egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.spinner.min.cssUTOQPKuBd;o/xQi )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.tabs.min.cssUTOQPKuBz{#V5j ')egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.theme.min.cssUTOQPKuBE(l )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/themes/base/minified/jquery.ui.tooltip.min.cssUTOQPKuB7GV/J )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/.jshintrcUTOQPKuBX1Bd .)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery-ui-i18n.min.jsUTOQPKuB dn1m @)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-af.min.jsUTOQPKuBVt)p C)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ar-DZ.min.jsUTOQPKuB>-m E)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ar.min.jsUTOQPKuBBm H)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-az.min.jsUTOQPKuB^*m ,K)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-be.min.jsUTOQPKuBQ8?m .N)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-bg.min.jsUTOQPKuBv$m Q)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-bs.min.jsUTOQPKuBu4#m S)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ca.min.jsUTOQPKuBԭEm U)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-cs.min.jsUTOQPKuBKDI?p vX)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-cy-GB.min.jsUTOQPKuB@,m Z)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-da.min.jsUTOQPKuBǂ-m e])egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-de.min.jsUTOQPKuBS_]m _)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-el.min.jsUTOQPKuB%*p b)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-en-AU.min.jsUTOQPKuBI?K*p Je)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-en-GB.min.jsUTOQPKuB Ȝ*p g)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-en-NZ.min.jsUTOQPKuBC1m j)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-eo.min.jsUTOQPKuB,m l)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-es.min.jsUTOQPKuBh^Qm o)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-et.min.jsUTOQPKuBM]Fm q)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-eu.min.jsUTOQPKuBi+hm t)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-fa.min.jsUTOQPKuBgm v)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-fi.min.jsUTOQPKuB%ΝLm Ey)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-fo.min.jsUTOQPKuB),*Np {)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-fr-CA.min.jsUTOQPKuBjTp;p T~)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-fr-CH.min.jsUTOQPKuB?OBm ـ)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-fr.min.jsUTOQPKuB7E*m V)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-gl.min.jsUTOQPKuBqm ΅)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-he.min.jsUTOQPKuB !m d)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-hi.min.jsUTOQPKuBhl8m ))egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-hr.min.jsUTOQPKuBCctAm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-hu.min.jsUTOQPKuBbA/@m >)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-hy.min.jsUTOQPKuB$m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-id.min.jsUTOQPKuBdm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-is.min.jsUTOQPKuB~8m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-it.min.jsUTOQPKuBj>m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ja.min.jsUTOQPKuBD05m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ka.min.jsUTOQPKuB͂}Rm ۟)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-kk.min.jsUTOQPKuBcdQ-m Ѣ)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-km.min.jsUTOQPKuBXNf:m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ko.min.jsUTOQPKuB}a5m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ky.min.jsUTOQPKuBOF/7m ݪ)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-lb.min.jsUTOQPKuBmm Y)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-lt.min.jsUTOQPKuB0GMm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-lv.min.jsUTOQPKuB# $m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-mk.min.jsUTOQPKuBǙW1m Q)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ml.min.jsUTOQPKuB\߄"m L)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ms.min.jsUTOQPKuB[,m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-nb.min.jsUTOQPKuB#1p 4)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-nl-BE.min.jsUTOQPKuBj%m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-nl.min.jsUTOQPKuB<̖)m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-nn.min.jsUTOQPKuBp,m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-no.min.jsUTOQPKuB\=Hm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-pl.min.jsUTOQPKuB~^dp )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-pt-BR.min.jsUTOQPKuBzMSm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-pt.min.jsUTOQPKuB@m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-rm.min.jsUTOQPKuBE8Rm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ro.min.jsUTOQPKuBb9^ m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ru.min.jsUTOQPKuB.Gm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-sk.min.jsUTOQPKuB{9m J)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-sl.min.jsUTOQPKuB_-m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-sq.min.jsUTOQPKuB_lz-p D)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-sr-SR.min.jsUTOQPKuB,~m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-sr.min.jsUTOQPKuBor%1m z)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-sv.min.jsUTOQPKuB̯Om )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-ta.min.jsUTOQPKuBfm )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-th.min.jsUTOQPKuB0m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-tj.min.jsUTOQPKuB.6%m )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-tr.min.jsUTOQPKuBUMUm O)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-uk.min.jsUTOQPKuBvm H)egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-vi.min.jsUTOQPKuBfp )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-zh-CN.min.jsUTOQPKuBRp )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-zh-HK.min.jsUTOQPKuB_xp )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/i18n/jquery.ui.datepicker-zh-TW.min.jsUTOQPKuB4zZ )egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery-ui.min.jsUTOQPKuB8fQ+ d *egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.accordion.min.jsUTOQPKuB( X 0g *egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.autocomplete.min.jsUTOQPKuBE`a +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.button.min.jsUTOQPKuB=W_ J +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.core.min.jsUTOQPKuB.*ދe 7+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.datepicker.min.jsUTOQPKuBکl +a <+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.dialog.min.jsUTOQPKuB7#Hd J+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.draggable.min.jsUTOQPKuBTqjd $]+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.droppable.min.jsUTOQPKuB?ܧ,g d+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-blind.min.jsUTOQPKuBf$f!h g+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-bounce.min.jsUTOQPKuBb1f j+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-clip.min.jsUTOQPKuB޺bF+f l+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-drop.min.jsUTOQPKuB͘ Yi ao+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-explode.min.jsUTOQPKuBS!c3If Zr+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-fade.min.jsUTOQPKuB OLf s+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-fold.min.jsUTOQPKuB!5aQk v+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-highlight.min.jsUTOQPKuB`i x+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-pulsate.min.jsUTOQPKuB@g z+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-scale.min.jsUTOQPKuBg +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-shake.min.jsUTOQPKuBCg +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-slide.min.jsUTOQPKuBNj 2+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect-transfer.min.jsUTOQPKuBP{D2a k+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.effect.min.jsUTOQPKuB, $_ +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.menu.min.jsUTOQPKuBeH ` ߧ+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.mouse.min.jsUTOQPKuB[ c +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.position.min.jsUTOQPKuB]I f $+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.progressbar.min.jsUTOQPKuB|3P/yCd ͹+egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.resizable.min.jsUTOQPKuB"e +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.selectable.min.jsUTOQPKuB 8e 'a +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.slider.min.jsUTOQPKuBVB5r^c +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.sortable.min.jsUTOQPKuB_b +egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.spinner.min.jsUTOQPKuB}dG-_ F,egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.tabs.min.jsUTOQPKuBgb @,egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.tooltip.min.jsUTOQPKuB»Yg Xa ,egonomy-f752e362bf62/src/egonomy/static/egonomy/lib/jquery-ui/ui/minified/jquery.ui.widget.min.jsUTOQPK**s!,