~smagoun/whoopsie/whoopsie-lp1017637

« back to all changes in this revision

Viewing changes to backend/stats/static/js/d3/src/svg/symbol.js

  • Committer: Evan Dandrea
  • Date: 2012-05-09 05:53:45 UTC
  • Revision ID: evan.dandrea@canonical.com-20120509055345-z2j41tmcbf4as5uf
The backend now lives in lp:daisy and the website (errors.ubuntu.com) now lives in lp:errors.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
d3.svg.symbol = function() {
2
 
  var type = d3_svg_symbolType,
3
 
      size = d3_svg_symbolSize;
4
 
 
5
 
  function symbol(d, i) {
6
 
    return (d3_svg_symbols.get(type.call(this, d, i))
7
 
        || d3_svg_symbolCircle)
8
 
        (size.call(this, d, i));
9
 
  }
10
 
 
11
 
  symbol.type = function(x) {
12
 
    if (!arguments.length) return type;
13
 
    type = d3.functor(x);
14
 
    return symbol;
15
 
  };
16
 
 
17
 
  // size of symbol in square pixels
18
 
  symbol.size = function(x) {
19
 
    if (!arguments.length) return size;
20
 
    size = d3.functor(x);
21
 
    return symbol;
22
 
  };
23
 
 
24
 
  return symbol;
25
 
};
26
 
 
27
 
function d3_svg_symbolSize() {
28
 
  return 64;
29
 
}
30
 
 
31
 
function d3_svg_symbolType() {
32
 
  return "circle";
33
 
}
34
 
 
35
 
function d3_svg_symbolCircle(size) {
36
 
  var r = Math.sqrt(size / Math.PI);
37
 
  return "M0," + r
38
 
      + "A" + r + "," + r + " 0 1,1 0," + (-r)
39
 
      + "A" + r + "," + r + " 0 1,1 0," + r
40
 
      + "Z";
41
 
}
42
 
 
43
 
// TODO cross-diagonal?
44
 
var d3_svg_symbols = d3.map({
45
 
  "circle": d3_svg_symbolCircle,
46
 
  "cross": function(size) {
47
 
    var r = Math.sqrt(size / 5) / 2;
48
 
    return "M" + -3 * r + "," + -r
49
 
        + "H" + -r
50
 
        + "V" + -3 * r
51
 
        + "H" + r
52
 
        + "V" + -r
53
 
        + "H" + 3 * r
54
 
        + "V" + r
55
 
        + "H" + r
56
 
        + "V" + 3 * r
57
 
        + "H" + -r
58
 
        + "V" + r
59
 
        + "H" + -3 * r
60
 
        + "Z";
61
 
  },
62
 
  "diamond": function(size) {
63
 
    var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)),
64
 
        rx = ry * d3_svg_symbolTan30;
65
 
    return "M0," + -ry
66
 
        + "L" + rx + ",0"
67
 
        + " 0," + ry
68
 
        + " " + -rx + ",0"
69
 
        + "Z";
70
 
  },
71
 
  "square": function(size) {
72
 
    var r = Math.sqrt(size) / 2;
73
 
    return "M" + -r + "," + -r
74
 
        + "L" + r + "," + -r
75
 
        + " " + r + "," + r
76
 
        + " " + -r + "," + r
77
 
        + "Z";
78
 
  },
79
 
  "triangle-down": function(size) {
80
 
    var rx = Math.sqrt(size / d3_svg_symbolSqrt3),
81
 
        ry = rx * d3_svg_symbolSqrt3 / 2;
82
 
    return "M0," + ry
83
 
        + "L" + rx +"," + -ry
84
 
        + " " + -rx + "," + -ry
85
 
        + "Z";
86
 
  },
87
 
  "triangle-up": function(size) {
88
 
    var rx = Math.sqrt(size / d3_svg_symbolSqrt3),
89
 
        ry = rx * d3_svg_symbolSqrt3 / 2;
90
 
    return "M0," + -ry
91
 
        + "L" + rx +"," + ry
92
 
        + " " + -rx + "," + ry
93
 
        + "Z";
94
 
  }
95
 
});
96
 
 
97
 
d3.svg.symbolTypes = d3_svg_symbols.keys();
98
 
 
99
 
var d3_svg_symbolSqrt3 = Math.sqrt(3),
100
 
    d3_svg_symbolTan30 = Math.tan(30 * Math.PI / 180);