rubyvis 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.travis.yml +13 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +37 -0
- data/History.txt +6 -0
- data/LICENSE.txt +23 -0
- data/{README.txt → README.md} +15 -12
- data/Rakefile +4 -11
- data/lib/rubyvis.rb +1 -1
- data/lib/rubyvis/scale/quantitative.rb +14 -18
- data/lib/rubyvis/scene/svg_label.rb +1 -1
- data/rubyvis.gemspec +21 -0
- data/spec/anchor_spec.rb +2 -1
- data/spec/line_spec.rb +2 -2
- data/spec/scale_linear_datetime_spec.rb +23 -8
- data/spec/spec_helper.rb +2 -1
- metadata +31 -214
- data/.gemtest +0 -0
- data/vendor/protovis/protovis-r3.3.js +0 -287
- data/vendor/protovis/src/behavior/Behavior.js +0 -32
- data/vendor/protovis/src/behavior/Drag.js +0 -112
- data/vendor/protovis/src/behavior/Pan.js +0 -110
- data/vendor/protovis/src/behavior/Point.js +0 -157
- data/vendor/protovis/src/behavior/Resize.js +0 -104
- data/vendor/protovis/src/behavior/Select.js +0 -100
- data/vendor/protovis/src/behavior/Zoom.js +0 -85
- data/vendor/protovis/src/color/Color.js +0 -598
- data/vendor/protovis/src/color/Colors.js +0 -135
- data/vendor/protovis/src/color/Ramp.js +0 -17
- data/vendor/protovis/src/data/Arrays.js +0 -277
- data/vendor/protovis/src/data/Dom.js +0 -380
- data/vendor/protovis/src/data/Flatten.js +0 -146
- data/vendor/protovis/src/data/Histogram.js +0 -120
- data/vendor/protovis/src/data/LinearScale.js +0 -54
- data/vendor/protovis/src/data/LogScale.js +0 -142
- data/vendor/protovis/src/data/Nest.js +0 -257
- data/vendor/protovis/src/data/Numbers.js +0 -313
- data/vendor/protovis/src/data/Objects.js +0 -78
- data/vendor/protovis/src/data/OrdinalScale.js +0 -267
- data/vendor/protovis/src/data/QuantileScale.js +0 -180
- data/vendor/protovis/src/data/QuantitativeScale.js +0 -440
- data/vendor/protovis/src/data/RootScale.js +0 -55
- data/vendor/protovis/src/data/Scale.js +0 -86
- data/vendor/protovis/src/data/Transform.js +0 -109
- data/vendor/protovis/src/data/Tree.js +0 -124
- data/vendor/protovis/src/data/Vector.js +0 -118
- data/vendor/protovis/src/geo/Geo.js +0 -5
- data/vendor/protovis/src/geo/GeoScale.js +0 -307
- data/vendor/protovis/src/geo/LatLng.js +0 -23
- data/vendor/protovis/src/geo/Projection.js +0 -43
- data/vendor/protovis/src/geo/Projections.js +0 -117
- data/vendor/protovis/src/lang/Array.js +0 -112
- data/vendor/protovis/src/lang/init.js +0 -26
- data/vendor/protovis/src/layout/Arc.js +0 -178
- data/vendor/protovis/src/layout/Bullet.js +0 -164
- data/vendor/protovis/src/layout/Cluster.js +0 -205
- data/vendor/protovis/src/layout/Force.js +0 -309
- data/vendor/protovis/src/layout/Grid.js +0 -119
- data/vendor/protovis/src/layout/Hierarchy.js +0 -249
- data/vendor/protovis/src/layout/Horizon.js +0 -159
- data/vendor/protovis/src/layout/Indent.js +0 -83
- data/vendor/protovis/src/layout/Layout.js +0 -56
- data/vendor/protovis/src/layout/Matrix.js +0 -177
- data/vendor/protovis/src/layout/Network.js +0 -302
- data/vendor/protovis/src/layout/Pack.js +0 -323
- data/vendor/protovis/src/layout/Partition.js +0 -203
- data/vendor/protovis/src/layout/Rollup.js +0 -203
- data/vendor/protovis/src/layout/Stack.js +0 -391
- data/vendor/protovis/src/layout/Tree.js +0 -282
- data/vendor/protovis/src/layout/Treemap.js +0 -347
- data/vendor/protovis/src/mark/Anchor.js +0 -81
- data/vendor/protovis/src/mark/Area.js +0 -268
- data/vendor/protovis/src/mark/Bar.js +0 -93
- data/vendor/protovis/src/mark/Dot.js +0 -212
- data/vendor/protovis/src/mark/Ease.js +0 -150
- data/vendor/protovis/src/mark/Image.js +0 -154
- data/vendor/protovis/src/mark/Label.js +0 -155
- data/vendor/protovis/src/mark/Line.js +0 -195
- data/vendor/protovis/src/mark/Mark.js +0 -1237
- data/vendor/protovis/src/mark/Panel.js +0 -273
- data/vendor/protovis/src/mark/Rule.js +0 -143
- data/vendor/protovis/src/mark/Transient.js +0 -7
- data/vendor/protovis/src/mark/Transition.js +0 -195
- data/vendor/protovis/src/mark/Wedge.js +0 -244
- data/vendor/protovis/src/physics/BoundConstraint.js +0 -75
- data/vendor/protovis/src/physics/ChargeForce.js +0 -184
- data/vendor/protovis/src/physics/CollisionConstraint.js +0 -113
- data/vendor/protovis/src/physics/Constraint.js +0 -26
- data/vendor/protovis/src/physics/DragForce.js +0 -49
- data/vendor/protovis/src/physics/Force.js +0 -25
- data/vendor/protovis/src/physics/Particle.js +0 -81
- data/vendor/protovis/src/physics/PositionConstraint.js +0 -72
- data/vendor/protovis/src/physics/Quadtree.js +0 -195
- data/vendor/protovis/src/physics/Simulation.js +0 -159
- data/vendor/protovis/src/physics/SpringForce.js +0 -141
- data/vendor/protovis/src/pv-internals.js +0 -154
- data/vendor/protovis/src/pv.js +0 -95
- data/vendor/protovis/src/scene/SvgArea.js +0 -172
- data/vendor/protovis/src/scene/SvgBar.js +0 -28
- data/vendor/protovis/src/scene/SvgCurve.js +0 -354
- data/vendor/protovis/src/scene/SvgDot.js +0 -81
- data/vendor/protovis/src/scene/SvgImage.js +0 -45
- data/vendor/protovis/src/scene/SvgLabel.js +0 -46
- data/vendor/protovis/src/scene/SvgLine.js +0 -159
- data/vendor/protovis/src/scene/SvgPanel.js +0 -126
- data/vendor/protovis/src/scene/SvgRule.js +0 -26
- data/vendor/protovis/src/scene/SvgScene.js +0 -185
- data/vendor/protovis/src/scene/SvgWedge.js +0 -66
- data/vendor/protovis/src/text/DateFormat.js +0 -262
- data/vendor/protovis/src/text/Format.js +0 -78
- data/vendor/protovis/src/text/NumberFormat.js +0 -227
- data/vendor/protovis/src/text/TimeFormat.js +0 -115
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constructs a new mark anchor with default properties.
|
|
3
|
-
*
|
|
4
|
-
* @class Represents an anchor on a given mark. An anchor is itself a mark, but
|
|
5
|
-
* without a visual representation. It serves only to provide useful default
|
|
6
|
-
* properties that can be inherited by other marks. Each type of mark can define
|
|
7
|
-
* any number of named anchors for convenience. If the concrete mark type does
|
|
8
|
-
* not define an anchor implementation specifically, one will be inherited from
|
|
9
|
-
* the mark's parent class.
|
|
10
|
-
*
|
|
11
|
-
* <p>For example, the bar mark provides anchors for its four sides: left,
|
|
12
|
-
* right, top and bottom. Adding a label to the top anchor of a bar,
|
|
13
|
-
*
|
|
14
|
-
* <pre>bar.anchor("top").add(pv.Label);</pre>
|
|
15
|
-
*
|
|
16
|
-
* will render a text label on the top edge of the bar; the top anchor defines
|
|
17
|
-
* the appropriate position properties (top and left), as well as text-rendering
|
|
18
|
-
* properties for convenience (textAlign and textBaseline).
|
|
19
|
-
*
|
|
20
|
-
* <p>Note that anchors do not <i>inherit</i> from their targets; the positional
|
|
21
|
-
* properties are copied from the scene graph, which guarantees that the anchors
|
|
22
|
-
* are positioned correctly, even if the positional properties are not defined
|
|
23
|
-
* deterministically. (In addition, it also improves performance by avoiding
|
|
24
|
-
* re-evaluating expensive properties.) If you want the anchor to inherit from
|
|
25
|
-
* the target, use {@link pv.Mark#extend} before adding. For example:
|
|
26
|
-
*
|
|
27
|
-
* <pre>bar.anchor("top").extend(bar).add(pv.Label);</pre>
|
|
28
|
-
*
|
|
29
|
-
* The anchor defines it's own positional properties, but other properties (such
|
|
30
|
-
* as the title property, say) can be inherited using the above idiom. Also note
|
|
31
|
-
* that you can override positional properties in the anchor for custom
|
|
32
|
-
* behavior.
|
|
33
|
-
*
|
|
34
|
-
* @extends pv.Mark
|
|
35
|
-
* @param {pv.Mark} target the anchor target.
|
|
36
|
-
*/
|
|
37
|
-
pv.Anchor = function(target) {
|
|
38
|
-
pv.Mark.call(this);
|
|
39
|
-
this.target = target;
|
|
40
|
-
this.parent = target.parent;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
pv.Anchor.prototype = pv.extend(pv.Mark)
|
|
44
|
-
.property("name", String);
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* The anchor name. The set of supported anchor names is dependent on the
|
|
48
|
-
* concrete mark type; see the mark type for details. For example, bars support
|
|
49
|
-
* left, right, top and bottom anchors.
|
|
50
|
-
*
|
|
51
|
-
* <p>While anchor names are typically constants, the anchor name is a true
|
|
52
|
-
* property, which means you can specify a function to compute the anchor name
|
|
53
|
-
* dynamically. For instance, if you wanted to alternate top and bottom anchors,
|
|
54
|
-
* saying
|
|
55
|
-
*
|
|
56
|
-
* <pre>m.anchor(function() (this.index % 2) ? "top" : "bottom").add(pv.Dot);</pre>
|
|
57
|
-
*
|
|
58
|
-
* would have the desired effect.
|
|
59
|
-
*
|
|
60
|
-
* @type string
|
|
61
|
-
* @name pv.Anchor.prototype.name
|
|
62
|
-
*/
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Sets the prototype of this anchor to the specified mark. Any properties not
|
|
66
|
-
* defined on this mark may be inherited from the specified prototype mark, or
|
|
67
|
-
* its prototype, and so on. The prototype mark need not be the same type of
|
|
68
|
-
* mark as this mark. (Note that for inheritance to be useful, properties with
|
|
69
|
-
* the same name on different mark types should have equivalent meaning.)
|
|
70
|
-
*
|
|
71
|
-
* <p>This method differs slightly from the normal mark behavior in that the
|
|
72
|
-
* anchor's target is preserved.
|
|
73
|
-
*
|
|
74
|
-
* @param {pv.Mark} proto the new prototype.
|
|
75
|
-
* @returns {pv.Anchor} this anchor.
|
|
76
|
-
* @see pv.Mark#add
|
|
77
|
-
*/
|
|
78
|
-
pv.Anchor.prototype.extend = function(proto) {
|
|
79
|
-
this.proto = proto;
|
|
80
|
-
return this;
|
|
81
|
-
};
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constructs a new area mark with default properties. Areas are not typically
|
|
3
|
-
* constructed directly, but by adding to a panel or an existing mark via
|
|
4
|
-
* {@link pv.Mark#add}.
|
|
5
|
-
*
|
|
6
|
-
* @class Represents an area mark: the solid area between two series of
|
|
7
|
-
* connected line segments. Unsurprisingly, areas are used most frequently for
|
|
8
|
-
* area charts.
|
|
9
|
-
*
|
|
10
|
-
* <p>Just as a line represents a polyline, the <tt>Area</tt> mark type
|
|
11
|
-
* represents a <i>polygon</i>. However, an area is not an arbitrary polygon;
|
|
12
|
-
* vertices are paired either horizontally or vertically into parallel
|
|
13
|
-
* <i>spans</i>, and each span corresponds to an associated datum. Either the
|
|
14
|
-
* width or the height must be specified, but not both; this determines whether
|
|
15
|
-
* the area is horizontally-oriented or vertically-oriented. Like lines, areas
|
|
16
|
-
* can be stroked and filled with arbitrary colors.
|
|
17
|
-
*
|
|
18
|
-
* <p>See also the <a href="../../api/Area.html">Area guide</a>.
|
|
19
|
-
*
|
|
20
|
-
* @extends pv.Mark
|
|
21
|
-
*/
|
|
22
|
-
pv.Area = function() {
|
|
23
|
-
pv.Mark.call(this);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
pv.Area.prototype = pv.extend(pv.Mark)
|
|
27
|
-
.property("width", Number)
|
|
28
|
-
.property("height", Number)
|
|
29
|
-
.property("lineWidth", Number)
|
|
30
|
-
.property("strokeStyle", pv.color)
|
|
31
|
-
.property("fillStyle", pv.color)
|
|
32
|
-
.property("segmented", Boolean)
|
|
33
|
-
.property("interpolate", String)
|
|
34
|
-
.property("tension", Number);
|
|
35
|
-
|
|
36
|
-
pv.Area.prototype.type = "area";
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* The width of a given span, in pixels; used for horizontal spans. If the width
|
|
40
|
-
* is specified, the height property should be 0 (the default). Either the top
|
|
41
|
-
* or bottom property should be used to space the spans vertically, typically as
|
|
42
|
-
* a multiple of the index.
|
|
43
|
-
*
|
|
44
|
-
* @type number
|
|
45
|
-
* @name pv.Area.prototype.width
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The height of a given span, in pixels; used for vertical spans. If the height
|
|
50
|
-
* is specified, the width property should be 0 (the default). Either the left
|
|
51
|
-
* or right property should be used to space the spans horizontally, typically
|
|
52
|
-
* as a multiple of the index.
|
|
53
|
-
*
|
|
54
|
-
* @type number
|
|
55
|
-
* @name pv.Area.prototype.height
|
|
56
|
-
*/
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* The width of stroked lines, in pixels; used in conjunction with
|
|
60
|
-
* <tt>strokeStyle</tt> to stroke the perimeter of the area. Unlike the
|
|
61
|
-
* {@link Line} mark type, the entire perimeter is stroked, rather than just one
|
|
62
|
-
* edge. The default value of this property is 1.5, but since the default stroke
|
|
63
|
-
* style is null, area marks are not stroked by default.
|
|
64
|
-
*
|
|
65
|
-
* <p>This property is <i>fixed</i> for non-segmented areas. See
|
|
66
|
-
* {@link pv.Mark}.
|
|
67
|
-
*
|
|
68
|
-
* @type number
|
|
69
|
-
* @name pv.Area.prototype.lineWidth
|
|
70
|
-
*/
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* The style of stroked lines; used in conjunction with <tt>lineWidth</tt> to
|
|
74
|
-
* stroke the perimeter of the area. Unlike the {@link Line} mark type, the
|
|
75
|
-
* entire perimeter is stroked, rather than just one edge. The default value of
|
|
76
|
-
* this property is null, meaning areas are not stroked by default.
|
|
77
|
-
*
|
|
78
|
-
* <p>This property is <i>fixed</i> for non-segmented areas. See
|
|
79
|
-
* {@link pv.Mark}.
|
|
80
|
-
*
|
|
81
|
-
* @type string
|
|
82
|
-
* @name pv.Area.prototype.strokeStyle
|
|
83
|
-
* @see pv.color
|
|
84
|
-
*/
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* The area fill style; if non-null, the interior of the polygon forming the
|
|
88
|
-
* area is filled with the specified color. The default value of this property
|
|
89
|
-
* is a categorical color.
|
|
90
|
-
*
|
|
91
|
-
* <p>This property is <i>fixed</i> for non-segmented areas. See
|
|
92
|
-
* {@link pv.Mark}.
|
|
93
|
-
*
|
|
94
|
-
* @type string
|
|
95
|
-
* @name pv.Area.prototype.fillStyle
|
|
96
|
-
* @see pv.color
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Whether the area is segmented; whether variations in fill style, stroke
|
|
101
|
-
* style, and the other properties are treated as fixed. Rendering segmented
|
|
102
|
-
* areas is noticeably slower than non-segmented areas.
|
|
103
|
-
*
|
|
104
|
-
* <p>This property is <i>fixed</i>. See {@link pv.Mark}.
|
|
105
|
-
*
|
|
106
|
-
* @type boolean
|
|
107
|
-
* @name pv.Area.prototype.segmented
|
|
108
|
-
*/
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* How to interpolate between values. Linear interpolation ("linear") is the
|
|
112
|
-
* default, producing a straight line between points. For piecewise constant
|
|
113
|
-
* functions (i.e., step functions), either "step-before" or "step-after" can be
|
|
114
|
-
* specified. To draw open uniform b-splines, specify "basis". To draw cardinal
|
|
115
|
-
* splines, specify "cardinal"; see also {@link #tension}.
|
|
116
|
-
*
|
|
117
|
-
* <p>This property is <i>fixed</i>. See {@link pv.Mark}.
|
|
118
|
-
*
|
|
119
|
-
* @type string
|
|
120
|
-
* @name pv.Area.prototype.interpolate
|
|
121
|
-
*/
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* The tension of cardinal splines; used in conjunction with
|
|
125
|
-
* interpolate("cardinal"). A value between 0 and 1 draws cardinal splines with
|
|
126
|
-
* the given tension. In some sense, the tension can be interpreted as the
|
|
127
|
-
* "length" of the tangent; a tension of 1 will yield all zero tangents (i.e.,
|
|
128
|
-
* linear interpolation), and a tension of 0 yields a Catmull-Rom spline. The
|
|
129
|
-
* default value is 0.7.
|
|
130
|
-
*
|
|
131
|
-
* <p>This property is <i>fixed</i>. See {@link pv.Mark}.
|
|
132
|
-
*
|
|
133
|
-
* @type number
|
|
134
|
-
* @name pv.Area.prototype.tension
|
|
135
|
-
*/
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Default properties for areas. By default, there is no stroke and the fill
|
|
139
|
-
* style is a categorical color.
|
|
140
|
-
*
|
|
141
|
-
* @type pv.Area
|
|
142
|
-
*/
|
|
143
|
-
pv.Area.prototype.defaults = new pv.Area()
|
|
144
|
-
.extend(pv.Mark.prototype.defaults)
|
|
145
|
-
.lineWidth(1.5)
|
|
146
|
-
.fillStyle(pv.Colors.category20().by(pv.parent))
|
|
147
|
-
.interpolate("linear")
|
|
148
|
-
.tension(.7);
|
|
149
|
-
|
|
150
|
-
/** @private Sets width and height to zero if null. */
|
|
151
|
-
pv.Area.prototype.buildImplied = function(s) {
|
|
152
|
-
if (s.height == null) s.height = 0;
|
|
153
|
-
if (s.width == null) s.width = 0;
|
|
154
|
-
pv.Mark.prototype.buildImplied.call(this, s);
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
/** @private Records which properties may be fixed. */
|
|
158
|
-
pv.Area.fixed = {
|
|
159
|
-
lineWidth: 1,
|
|
160
|
-
lineJoin: 1,
|
|
161
|
-
strokeStyle: 1,
|
|
162
|
-
fillStyle: 1,
|
|
163
|
-
segmented: 1,
|
|
164
|
-
interpolate: 1,
|
|
165
|
-
tension: 1
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* @private Make segmented required, such that this fixed property is always
|
|
170
|
-
* evaluated, even if the first segment is not visible. Also cache which
|
|
171
|
-
* properties are normally fixed.
|
|
172
|
-
*/
|
|
173
|
-
pv.Area.prototype.bind = function() {
|
|
174
|
-
pv.Mark.prototype.bind.call(this);
|
|
175
|
-
var binds = this.binds,
|
|
176
|
-
required = binds.required,
|
|
177
|
-
optional = binds.optional;
|
|
178
|
-
for (var i = 0, n = optional.length; i < n; i++) {
|
|
179
|
-
var p = optional[i];
|
|
180
|
-
p.fixed = p.name in pv.Area.fixed;
|
|
181
|
-
if (p.name == "segmented") {
|
|
182
|
-
required.push(p);
|
|
183
|
-
optional.splice(i, 1);
|
|
184
|
-
i--;
|
|
185
|
-
n--;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/* Cache the original arrays so they can be restored on build. */
|
|
190
|
-
this.binds.$required = required;
|
|
191
|
-
this.binds.$optional = optional;
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* @private Override the default build behavior such that fixed properties are
|
|
196
|
-
* determined dynamically, based on the value of the (always) fixed segmented
|
|
197
|
-
* property. Any fixed properties are only evaluated on the first instance,
|
|
198
|
-
* although their values are propagated to subsequent instances, so that they
|
|
199
|
-
* are available for property chaining and the like.
|
|
200
|
-
*/
|
|
201
|
-
pv.Area.prototype.buildInstance = function(s) {
|
|
202
|
-
var binds = this.binds;
|
|
203
|
-
|
|
204
|
-
/* Handle fixed properties on secondary instances. */
|
|
205
|
-
if (this.index) {
|
|
206
|
-
var fixed = binds.fixed;
|
|
207
|
-
|
|
208
|
-
/* Determine which properties are fixed. */
|
|
209
|
-
if (!fixed) {
|
|
210
|
-
fixed = binds.fixed = [];
|
|
211
|
-
function f(p) { return !p.fixed || (fixed.push(p), false); }
|
|
212
|
-
binds.required = binds.required.filter(f);
|
|
213
|
-
if (!this.scene[0].segmented) binds.optional = binds.optional.filter(f);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/* Copy fixed property values from the first instance. */
|
|
217
|
-
for (var i = 0, n = fixed.length; i < n; i++) {
|
|
218
|
-
var p = fixed[i].name;
|
|
219
|
-
s[p] = this.scene[0][p];
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/* Evaluate all properties on the first instance. */
|
|
224
|
-
else {
|
|
225
|
-
binds.required = binds.$required;
|
|
226
|
-
binds.optional = binds.$optional;
|
|
227
|
-
binds.fixed = null;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
pv.Mark.prototype.buildInstance.call(this, s);
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Constructs a new area anchor with default properties. Areas support five
|
|
235
|
-
* different anchors:<ul>
|
|
236
|
-
*
|
|
237
|
-
* <li>top
|
|
238
|
-
* <li>left
|
|
239
|
-
* <li>center
|
|
240
|
-
* <li>bottom
|
|
241
|
-
* <li>right
|
|
242
|
-
*
|
|
243
|
-
* </ul>In addition to positioning properties (left, right, top bottom), the
|
|
244
|
-
* anchors support text rendering properties (text-align, text-baseline). Text
|
|
245
|
-
* is rendered to appear inside the area. The area anchor also propagates the
|
|
246
|
-
* interpolate, eccentricity, and tension properties such that an anchored area
|
|
247
|
-
* or line will match positions between control points.
|
|
248
|
-
*
|
|
249
|
-
* <p>For consistency with the other mark types, the anchor positions are
|
|
250
|
-
* defined in terms of their opposite edge. For example, the top anchor defines
|
|
251
|
-
* the bottom property, such that an area added to the top anchor grows upward.
|
|
252
|
-
*
|
|
253
|
-
* @param {string} name the anchor name; either a string or a property function.
|
|
254
|
-
* @returns {pv.Anchor}
|
|
255
|
-
*/
|
|
256
|
-
pv.Area.prototype.anchor = function(name) {
|
|
257
|
-
var scene;
|
|
258
|
-
return pv.Mark.prototype.anchor.call(this, name)
|
|
259
|
-
.interpolate(function() {
|
|
260
|
-
return this.scene.target[this.index].interpolate;
|
|
261
|
-
})
|
|
262
|
-
.eccentricity(function() {
|
|
263
|
-
return this.scene.target[this.index].eccentricity;
|
|
264
|
-
})
|
|
265
|
-
.tension(function() {
|
|
266
|
-
return this.scene.target[this.index].tension;
|
|
267
|
-
});
|
|
268
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constructs a new bar mark with default properties. Bars are not typically
|
|
3
|
-
* constructed directly, but by adding to a panel or an existing mark via
|
|
4
|
-
* {@link pv.Mark#add}.
|
|
5
|
-
*
|
|
6
|
-
* @class Represents a bar: an axis-aligned rectangle that can be stroked and
|
|
7
|
-
* filled. Bars are used for many chart types, including bar charts, histograms
|
|
8
|
-
* and Gantt charts. Bars can also be used as decorations, for example to draw a
|
|
9
|
-
* frame border around a panel; in fact, a panel is a special type (a subclass)
|
|
10
|
-
* of bar.
|
|
11
|
-
*
|
|
12
|
-
* <p>Bars can be positioned in several ways. Most commonly, one of the four
|
|
13
|
-
* corners is fixed using two margins, and then the width and height properties
|
|
14
|
-
* determine the extent of the bar relative to this fixed location. For example,
|
|
15
|
-
* using the bottom and left properties fixes the bottom-left corner; the width
|
|
16
|
-
* then extends to the right, while the height extends to the top. As an
|
|
17
|
-
* alternative to the four corners, a bar can be positioned exclusively using
|
|
18
|
-
* margins; this is convenient as an inset from the containing panel, for
|
|
19
|
-
* example. See {@link pv.Mark} for details on the prioritization of redundant
|
|
20
|
-
* positioning properties.
|
|
21
|
-
*
|
|
22
|
-
* <p>See also the <a href="../../api/Bar.html">Bar guide</a>.
|
|
23
|
-
*
|
|
24
|
-
* @extends pv.Mark
|
|
25
|
-
*/
|
|
26
|
-
pv.Bar = function() {
|
|
27
|
-
pv.Mark.call(this);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
pv.Bar.prototype = pv.extend(pv.Mark)
|
|
31
|
-
.property("width", Number)
|
|
32
|
-
.property("height", Number)
|
|
33
|
-
.property("lineWidth", Number)
|
|
34
|
-
.property("strokeStyle", pv.color)
|
|
35
|
-
.property("fillStyle", pv.color);
|
|
36
|
-
|
|
37
|
-
pv.Bar.prototype.type = "bar";
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* The width of the bar, in pixels. If the left position is specified, the bar
|
|
41
|
-
* extends rightward from the left edge; if the right position is specified, the
|
|
42
|
-
* bar extends leftward from the right edge.
|
|
43
|
-
*
|
|
44
|
-
* @type number
|
|
45
|
-
* @name pv.Bar.prototype.width
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The height of the bar, in pixels. If the bottom position is specified, the
|
|
50
|
-
* bar extends upward from the bottom edge; if the top position is specified,
|
|
51
|
-
* the bar extends downward from the top edge.
|
|
52
|
-
*
|
|
53
|
-
* @type number
|
|
54
|
-
* @name pv.Bar.prototype.height
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* The width of stroked lines, in pixels; used in conjunction with
|
|
59
|
-
* <tt>strokeStyle</tt> to stroke the bar's border.
|
|
60
|
-
*
|
|
61
|
-
* @type number
|
|
62
|
-
* @name pv.Bar.prototype.lineWidth
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* The style of stroked lines; used in conjunction with <tt>lineWidth</tt> to
|
|
67
|
-
* stroke the bar's border. The default value of this property is null, meaning
|
|
68
|
-
* bars are not stroked by default.
|
|
69
|
-
*
|
|
70
|
-
* @type string
|
|
71
|
-
* @name pv.Bar.prototype.strokeStyle
|
|
72
|
-
* @see pv.color
|
|
73
|
-
*/
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* The bar fill style; if non-null, the interior of the bar is filled with the
|
|
77
|
-
* specified color. The default value of this property is a categorical color.
|
|
78
|
-
*
|
|
79
|
-
* @type string
|
|
80
|
-
* @name pv.Bar.prototype.fillStyle
|
|
81
|
-
* @see pv.color
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Default properties for bars. By default, there is no stroke and the fill
|
|
86
|
-
* style is a categorical color.
|
|
87
|
-
*
|
|
88
|
-
* @type pv.Bar
|
|
89
|
-
*/
|
|
90
|
-
pv.Bar.prototype.defaults = new pv.Bar()
|
|
91
|
-
.extend(pv.Mark.prototype.defaults)
|
|
92
|
-
.lineWidth(1.5)
|
|
93
|
-
.fillStyle(pv.Colors.category20().by(pv.parent));
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constructs a new dot mark with default properties. Dots are not typically
|
|
3
|
-
* constructed directly, but by adding to a panel or an existing mark via
|
|
4
|
-
* {@link pv.Mark#add}.
|
|
5
|
-
*
|
|
6
|
-
* @class Represents a dot; a dot is simply a sized glyph centered at a given
|
|
7
|
-
* point that can also be stroked and filled. The <tt>size</tt> property is
|
|
8
|
-
* proportional to the area of the rendered glyph to encourage meaningful visual
|
|
9
|
-
* encodings. Dots can visually encode up to eight dimensions of data, though
|
|
10
|
-
* this may be unwise due to integrality. See {@link pv.Mark} for details on the
|
|
11
|
-
* prioritization of redundant positioning properties.
|
|
12
|
-
*
|
|
13
|
-
* <p>See also the <a href="../../api/Dot.html">Dot guide</a>.
|
|
14
|
-
*
|
|
15
|
-
* @extends pv.Mark
|
|
16
|
-
*/
|
|
17
|
-
pv.Dot = function() {
|
|
18
|
-
pv.Mark.call(this);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
pv.Dot.prototype = pv.extend(pv.Mark)
|
|
22
|
-
.property("shape", String)
|
|
23
|
-
.property("shapeAngle", Number)
|
|
24
|
-
.property("shapeRadius", Number)
|
|
25
|
-
.property("shapeSize", Number)
|
|
26
|
-
.property("lineWidth", Number)
|
|
27
|
-
.property("strokeStyle", pv.color)
|
|
28
|
-
.property("fillStyle", pv.color);
|
|
29
|
-
|
|
30
|
-
pv.Dot.prototype.type = "dot";
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* The size of the shape, in square pixels. Square pixels are used such that the
|
|
34
|
-
* area of the shape is linearly proportional to the value of the
|
|
35
|
-
* <tt>shapeSize</tt> property, facilitating representative encodings. This is
|
|
36
|
-
* an alternative to using {@link #shapeRadius}.
|
|
37
|
-
*
|
|
38
|
-
* @see #shapeRadius
|
|
39
|
-
* @type number
|
|
40
|
-
* @name pv.Dot.prototype.shapeSize
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* The radius of the shape, in pixels. This is an alternative to using
|
|
45
|
-
* {@link #shapeSize}.
|
|
46
|
-
*
|
|
47
|
-
* @see #shapeSize
|
|
48
|
-
* @type number
|
|
49
|
-
* @name pv.Dot.prototype.shapeRadius
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* The shape name. Several shapes are supported:<ul>
|
|
54
|
-
*
|
|
55
|
-
* <li>cross
|
|
56
|
-
* <li>triangle
|
|
57
|
-
* <li>diamond
|
|
58
|
-
* <li>square
|
|
59
|
-
* <li>circle
|
|
60
|
-
* <li>tick
|
|
61
|
-
* <li>bar
|
|
62
|
-
*
|
|
63
|
-
* </ul>These shapes can be further changed using the {@link #angle} property;
|
|
64
|
-
* for instance, a cross can be turned into a plus by rotating. Similarly, the
|
|
65
|
-
* tick, which is vertical by default, can be rotated horizontally. Note that
|
|
66
|
-
* some shapes (cross and tick) do not have interior areas, and thus do not
|
|
67
|
-
* support fill style meaningfully.
|
|
68
|
-
*
|
|
69
|
-
* <p>Note: it may be more natural to use the {@link pv.Rule} mark for
|
|
70
|
-
* horizontal and vertical ticks. The tick shape is only necessary if angled
|
|
71
|
-
* ticks are needed.
|
|
72
|
-
*
|
|
73
|
-
* @type string
|
|
74
|
-
* @name pv.Dot.prototype.shape
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* The shape rotation angle, in radians. Used to rotate shapes, such as to turn
|
|
79
|
-
* a cross into a plus.
|
|
80
|
-
*
|
|
81
|
-
* @type number
|
|
82
|
-
* @name pv.Dot.prototype.shapeAngle
|
|
83
|
-
*/
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* The width of stroked lines, in pixels; used in conjunction with
|
|
87
|
-
* <tt>strokeStyle</tt> to stroke the dot's shape.
|
|
88
|
-
*
|
|
89
|
-
* @type number
|
|
90
|
-
* @name pv.Dot.prototype.lineWidth
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* The style of stroked lines; used in conjunction with <tt>lineWidth</tt> to
|
|
95
|
-
* stroke the dot's shape. The default value of this property is a categorical
|
|
96
|
-
* color.
|
|
97
|
-
*
|
|
98
|
-
* @type string
|
|
99
|
-
* @name pv.Dot.prototype.strokeStyle
|
|
100
|
-
* @see pv.color
|
|
101
|
-
*/
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* The fill style; if non-null, the interior of the dot is filled with the
|
|
105
|
-
* specified color. The default value of this property is null, meaning dots are
|
|
106
|
-
* not filled by default.
|
|
107
|
-
*
|
|
108
|
-
* @type string
|
|
109
|
-
* @name pv.Dot.prototype.fillStyle
|
|
110
|
-
* @see pv.color
|
|
111
|
-
*/
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Default properties for dots. By default, there is no fill and the stroke
|
|
115
|
-
* style is a categorical color. The default shape is "circle" with radius 4.5.
|
|
116
|
-
*
|
|
117
|
-
* @type pv.Dot
|
|
118
|
-
*/
|
|
119
|
-
pv.Dot.prototype.defaults = new pv.Dot()
|
|
120
|
-
.extend(pv.Mark.prototype.defaults)
|
|
121
|
-
.shape("circle")
|
|
122
|
-
.lineWidth(1.5)
|
|
123
|
-
.strokeStyle(pv.Colors.category10().by(pv.parent));
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Constructs a new dot anchor with default properties. Dots support five
|
|
127
|
-
* different anchors:<ul>
|
|
128
|
-
*
|
|
129
|
-
* <li>top
|
|
130
|
-
* <li>left
|
|
131
|
-
* <li>center
|
|
132
|
-
* <li>bottom
|
|
133
|
-
* <li>right
|
|
134
|
-
*
|
|
135
|
-
* </ul>In addition to positioning properties (left, right, top bottom), the
|
|
136
|
-
* anchors support text rendering properties (text-align, text-baseline). Text is
|
|
137
|
-
* rendered to appear outside the dot. Note that this behavior is different from
|
|
138
|
-
* other mark anchors, which default to rendering text <i>inside</i> the mark.
|
|
139
|
-
*
|
|
140
|
-
* <p>For consistency with the other mark types, the anchor positions are
|
|
141
|
-
* defined in terms of their opposite edge. For example, the top anchor defines
|
|
142
|
-
* the bottom property, such that a bar added to the top anchor grows upward.
|
|
143
|
-
*
|
|
144
|
-
* @param {string} name the anchor name; either a string or a property function.
|
|
145
|
-
* @returns {pv.Anchor}
|
|
146
|
-
*/
|
|
147
|
-
pv.Dot.prototype.anchor = function(name) {
|
|
148
|
-
var scene;
|
|
149
|
-
return pv.Mark.prototype.anchor.call(this, name)
|
|
150
|
-
.left(function() {
|
|
151
|
-
var s = this.scene.target[this.index];
|
|
152
|
-
switch (this.name()) {
|
|
153
|
-
case "bottom":
|
|
154
|
-
case "top":
|
|
155
|
-
case "center": return s.left;
|
|
156
|
-
case "left": return null;
|
|
157
|
-
}
|
|
158
|
-
return s.left + s.shapeRadius;
|
|
159
|
-
})
|
|
160
|
-
.right(function() {
|
|
161
|
-
var s = this.scene.target[this.index];
|
|
162
|
-
return this.name() == "left" ? s.right + s.shapeRadius : null;
|
|
163
|
-
})
|
|
164
|
-
.top(function() {
|
|
165
|
-
var s = this.scene.target[this.index];
|
|
166
|
-
switch (this.name()) {
|
|
167
|
-
case "left":
|
|
168
|
-
case "right":
|
|
169
|
-
case "center": return s.top;
|
|
170
|
-
case "top": return null;
|
|
171
|
-
}
|
|
172
|
-
return s.top + s.shapeRadius;
|
|
173
|
-
})
|
|
174
|
-
.bottom(function() {
|
|
175
|
-
var s = this.scene.target[this.index];
|
|
176
|
-
return this.name() == "top" ? s.bottom + s.shapeRadius : null;
|
|
177
|
-
})
|
|
178
|
-
.textAlign(function() {
|
|
179
|
-
switch (this.name()) {
|
|
180
|
-
case "left": return "right";
|
|
181
|
-
case "bottom":
|
|
182
|
-
case "top":
|
|
183
|
-
case "center": return "center";
|
|
184
|
-
}
|
|
185
|
-
return "left";
|
|
186
|
-
})
|
|
187
|
-
.textBaseline(function() {
|
|
188
|
-
switch (this.name()) {
|
|
189
|
-
case "right":
|
|
190
|
-
case "left":
|
|
191
|
-
case "center": return "middle";
|
|
192
|
-
case "bottom": return "top";
|
|
193
|
-
}
|
|
194
|
-
return "bottom";
|
|
195
|
-
});
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
/** @private Sets radius based on size or vice versa. */
|
|
199
|
-
pv.Dot.prototype.buildImplied = function(s) {
|
|
200
|
-
var r = s.shapeRadius, z = s.shapeSize;
|
|
201
|
-
if (r == null) {
|
|
202
|
-
if (z == null) {
|
|
203
|
-
s.shapeSize = 20.25;
|
|
204
|
-
s.shapeRadius = 4.5;
|
|
205
|
-
} else {
|
|
206
|
-
s.shapeRadius = Math.sqrt(z);
|
|
207
|
-
}
|
|
208
|
-
} else if (z == null) {
|
|
209
|
-
s.shapeSize = r * r;
|
|
210
|
-
}
|
|
211
|
-
pv.Mark.prototype.buildImplied.call(this, s);
|
|
212
|
-
};
|