forked from alexyoung/ico
-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathReleaseNotes.txt
244 lines (172 loc) · 12.2 KB
/
ReleaseNotes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
Ico 0.98
This release highlights:
- Add bars_overlap option
- Upgrade to Raphaël 2.0.1
The complete list of changes:
- Bars: add bars_overlap option
- Upgrade to Raphaël 2.0.1
- Bezier curves: fix control points for zero values
- Add test case for line graph and a straight line with curve amount != 0
- clear(), test this.paper, allows to call clear() on a cleared or not initialized graph
- Fix related to issue #3 if all values are zero.
Ico 0.97
First version without Prototype library dependency, however this disables the mouse_pointer option:
- This is because the mouse pointer requires Element.viewportOffset that
- is not yet implemented without prototype
The complete list of changes:
- Encapsulate de and ug() as local varaible to global function.
- Fix issue #3: Line chart unable to handle data array with all equal values.
- Disable mouse_pointer draw() if Ico.viewport_offset is not defined - e.g. if prototype.js is not defined.
- Allow customization of Element.viewportOffset as Ico.viewport_offset.
- Remove Prototype dependency
- Allow to specify dot radius and focus radius per line.
- Change raphael.js to non-min version that fails in IE8, remove IE7 compatibility mode.
- Upgrade Raphael to version 1.5.2 from 1.3.1, fixes IE9 issues.
- Allow intermitent series where some points are not defined.
- Adjust min and max in Ico.series_min_max() to show zero if reasonable.
- This can be disabled by setting to true the second parameter (dont_adjust).
Ico 0.96
This release:
- displays labels (or long labels if defined) and series names in status bar on mouse over.
- allows hide, show and toggle the display of individual series.
- displays values using SI multiples
- allows the display of graphs in lines or colluns of graphs
- performence testing with Google Chrome Frame
The complete list of changes:
Upgrade Raphael to version 1.3.1.
Allow Positionning options for status bar.
Protect significant_digits_round() against +/- Infinity and very small numbers (< 1e-13) that is zero.
Throw exception when no value is provided in the series. Throw excepton when unsupported format is provided
in the series.
Reduce displayed value to their scientific powers of 1000, displaying the following SI prefixes:
'', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y' for positive powers up to e+24 (Yotta), or the e+-power
notation for negative powers and powers above 24. Note that deos not work for SI weight measures (kg).
for the powers
Provide graph functions:
- hide_serie( i ) to hide serie i
- show_serie( i ) to show serie i
- toggle_serie( i ) to toggle (hide /show) serie i.
These functions will throw 'Undefined serie' if i is out of range.
Provide helper function Ico.moving_average() to calculate a moving average serie from another serie plus
optional previous values. Values are rounded to 3 significant digits and formated as strings for display.
Allow display of aligned lines and columns of graphs sharing the same value range and labels:
- Add a line of 2 dependent graphs in test suite.
- Allow to overide min and max values in options.
- Provide helper function Ico.series_min_max() to calculate the min and max value over multiple series.
- Add labels padding to graph padding only if labels or value_labels option 'add_padding' is true (default).
To align graphs, one needs to set add_padding to false.
Change default padding for BaseGraph to top: 15, bottom: 10, left: 10, right: 10.
Fix value labels padding calculation when labels are not defined.
Allow undefined labels, these are not displayed but markers are still displayed if defined.
Tests (index.html) with Google Chrome Frame (GCF) installed shows a 7-fold speed improvement over IE8
with IE7 compatibility and over 14-fold speed boost compared to IE8 without IE7 compatibility:
<meta http-equiv="X-UA-Compatible" content="chrome=1">. To allow both IE7 compatibility when GCF
is not installed, and GCF when installed use the following meta tag:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7,chrome=1">
Ico 0.95
This release is a major pre-1.0 release adding many features, fixing bugs, improving the
API, and DRYing up the code for improved maintainability, componentization and optimization.
This release contains non-backward compatible (NBC) changes listed bellow as "NBC API change".
These changes were necessary to ensure the most logical and intuitive API for version 1.0.
After version 1.0 all API changes will ensure backward compatibility.
Refer to the documentation for up-to-date API information.
The complete list of changes:
Format values with units when showing values on mouseover on dots, bars and average line.
NBC API Change: Allow to specify bullet graphs target attributes: length, color, stroke-width. The
previous way of specifying target_color as a separate parameter is no longer supported.
Fix VML text positioning so that it matches SVG's baseline and avoid text getting out of its
bounding box.
Boost IE8 VML rendering performance by adding IE7 compatibility meta-header in index.html:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Rendering speed is improved by 30% to 40% with IE7 compatibility mode. This only affects
IE and is ignored by all other browsers. With this improvement, IE8 is only twice slower than
Firefox and 2.7 times slower than Safari.
Revisit value labels calculation to properly calculate the maximum number of steps based on actual
min and max text with optional units and one spacing character for adjacent (<30 degrees) and 1.5
character hight for stacked labels (>60 degrees).
Revisit longest label calculation to find the actual largest label bounding box by drawing all labels
at the time of calculation. For optimization purposes, drawn labels are not removed and only
translated, anchored and rotated in draw().
Try / Catch errors in components to ease component debugging.
Graph font attributes inherit from containing DOM element by default enabling CSS configuration of
graph font attributes. Labels fonts inherit from graph but can now be set independently for labels
and value labels. Allow font-size attributes to be set using the entire range of units allowed in
CSS.
Draw series from graph coordinates instead of canvas coordinates to DRY-up the code a bit more.
Eventually we should be able to provide drawing functions independent of orientation.
Fix cubic Bézier control points to allow smooth transitions using the previous to last and
current points to calculate the first control point and previous and next points to calculate the
second control point. The current implementation provided improbable curves when points followed
the same upward or downward trend.
Enable configuration of remaining line graphs attributes. Change default dot radius to 3
and focus radius to 6.
Bar graphs: prevent full bar overlap with multiple series
Allow to specify grid and grid_attributes in Labels or ValueLabels while still allowing the
global attributes. Attributes defined at the component level have higher precedence, allowing
to override global attributes. This allows to specify label and value labels grid independently.
Set minimum bar width to 5 pixels.
Change calculate_value_step() to label_slots_count() to unify labels step calculation.
DRY this.graph.x.start_offset, this.bar_width, and this.bar_base calculations for bars into Ico.Base.
Eventually this will go into a bar serie class.
NBC API change: Allow marker_size to be defined independently in labels and value_labels
components hash, marker_size is no longer available in basic graph options.
Exchange direction, labels. padding, and angle, attributes between this.x and this.y
to improve code clarity and maintainability, thus removing one parameter from
Ico.Component.Labels.draw_labels_grid()
Allow more or less value labels according to orientation and angle.
Workaround <span> IE bug when displaying text (e.g. labels) in Raphael paper. This workaround
requires to use a <div> instead of a <span>.
Fix value label precision for values with zero decimals.
Allow up to 2 significant digits value steps limited to the following rounded-up values:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90
These steps are chosen to that one of their multiples inferior or equal to 10 is part of the set of
allowed steps.
Series can now be provided as an Array of Arrays. This new method allows to fix the drawing order
of series which is guarantied to be first to last. This allows to control which serie is drawn on
top of which other serie. The other methods ( single value, array of values and hash of arrays )
are still available but the hash of arrays method is deprecated and will be removed before version 1.0.
NBC API change: Move units from value_labels component to Ico.Base, because units are linked to
series values and should be available for tooltips even if no value label is displayed.
Fix rounding error between highlight circle center and sparkline dot.
Highlight bar in sparkbars instead of dot.
Unify draw_series() for all graphs in Ico.Base.
Migrate much of Ico.BaseGraph to Ico.Base to unify behavior and enable all components on all graphs.
Allow value labels for bullet graphs.
Rename Ico.VERSION to Ico.Version.
Ico 0.94
This pre-1.0 stable release contains many bug fixes, new features and API changes from the original
version by Alex Young.
The complete list of changes:
Upgrade Raphael to version 1.2.8, remove path-methods as recommended from version 1.0.
Allow to clear grpah canvas, typically to redraw in the same div..
Display value label units, optional units_position allows to set units before values.
Define components layers for calculations and drawing.
Allow graph area background to display bad, satisfactory and good attributes as a gradient.
Implement Stephen Few Bullet Graphs.
Reorganize code, componentize grpah elements, remove redundant code.
Allow all (path, labels, grid, background, meanline, ...)-attributes configuration.
Display mouse pointer as a cross when in graph area.
Display data values and mean value on mouse over in status area.
Change data and meanline stroke attribute on mouse over.
Provide svg_path class method to round pixel values and add separators only when needed.
Test suite:
Perform all tests on IE 8.0, Firefox 3.5, Opera 10.0, Chrome, Safari
API Changes
Fix and optimize value labels range / start and stop calculations:
- Always display zero value when in value range
- Find best (step, number of steps) pairs to minimize display range and emphasize data values
- Design significant digits calculation class method with options rounding anomymous function
and optional string output to prevent float precision conversion errors
- Build value labels as strings instead of float
- Fix value step to one significant digit
- Fix value labels to two significant digits
- Fix value labels precision to maximum precision of all value labels
- Determine number of maximum steps based on actual graph width and labels size
- Provide scale attribute to scale values to actual graph height
Fix bars base value to start at zero when in range and display negative values in reverse direction.
Allow to draw labels at an angle.
Design function to properly calculate text display size in pixels.
Fix bottom and left offset calculations using actual text size.
Remove sort used to determine longuest labels, iterate through array instead.
Fix sort comparison function to determine longuest labels.
Numerous other bug fixes.