rgraph-rails 1.0.7 → 1.0.8
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 +4 -4
- data/README.md +3 -3
- data/lib/rgraph-rails/version.rb +1 -1
- data/license.txt +4 -16
- data/vendor/assets/javascripts/RGraph.bar.js +3734 -241
- data/vendor/assets/javascripts/RGraph.bipolar.js +2005 -115
- data/vendor/assets/javascripts/RGraph.common.annotate.js +395 -35
- data/vendor/assets/javascripts/RGraph.common.context.js +595 -30
- data/vendor/assets/javascripts/RGraph.common.core.js +5282 -405
- data/vendor/assets/javascripts/RGraph.common.csv.js +276 -19
- data/vendor/assets/javascripts/RGraph.common.deprecated.js +450 -35
- data/vendor/assets/javascripts/RGraph.common.dynamic.js +1395 -86
- data/vendor/assets/javascripts/RGraph.common.effects.js +1545 -90
- data/vendor/assets/javascripts/RGraph.common.key.js +753 -54
- data/vendor/assets/javascripts/RGraph.common.resizing.js +563 -37
- data/vendor/assets/javascripts/RGraph.common.sheets.js +352 -29
- data/vendor/assets/javascripts/RGraph.common.tooltips.js +450 -32
- data/vendor/assets/javascripts/RGraph.common.zoom.js +219 -14
- data/vendor/assets/javascripts/RGraph.drawing.background.js +570 -35
- data/vendor/assets/javascripts/RGraph.drawing.circle.js +544 -35
- data/vendor/assets/javascripts/RGraph.drawing.image.js +755 -52
- data/vendor/assets/javascripts/RGraph.drawing.marker1.js +645 -41
- data/vendor/assets/javascripts/RGraph.drawing.marker2.js +633 -37
- data/vendor/assets/javascripts/RGraph.drawing.marker3.js +514 -36
- data/vendor/assets/javascripts/RGraph.drawing.poly.js +559 -39
- data/vendor/assets/javascripts/RGraph.drawing.rect.js +548 -35
- data/vendor/assets/javascripts/RGraph.drawing.text.js +664 -36
- data/vendor/assets/javascripts/RGraph.drawing.xaxis.js +812 -50
- data/vendor/assets/javascripts/RGraph.drawing.yaxis.js +856 -51
- data/vendor/assets/javascripts/RGraph.fuel.js +964 -58
- data/vendor/assets/javascripts/RGraph.funnel.js +984 -55
- data/vendor/assets/javascripts/RGraph.gantt.js +1354 -77
- data/vendor/assets/javascripts/RGraph.gauge.js +1421 -87
- data/vendor/assets/javascripts/RGraph.hbar.js +2562 -146
- data/vendor/assets/javascripts/RGraph.hprogress.js +1401 -80
- data/vendor/assets/javascripts/RGraph.line.js +4226 -244
- data/vendor/assets/javascripts/RGraph.meter.js +1280 -74
- data/vendor/assets/javascripts/RGraph.modaldialog.js +301 -19
- data/vendor/assets/javascripts/RGraph.odo.js +1264 -71
- data/vendor/assets/javascripts/RGraph.pie.js +2288 -137
- data/vendor/assets/javascripts/RGraph.radar.js +1847 -110
- data/vendor/assets/javascripts/RGraph.rose.js +1977 -108
- data/vendor/assets/javascripts/RGraph.rscatter.js +1432 -80
- data/vendor/assets/javascripts/RGraph.scatter.js +3036 -168
- data/vendor/assets/javascripts/RGraph.semicircularprogress.js +1120 -60
- data/vendor/assets/javascripts/RGraph.svg.bar.js +1067 -0
- data/vendor/assets/javascripts/RGraph.svg.common.ajax.js +247 -0
- data/vendor/assets/javascripts/RGraph.svg.common.core.js +3363 -0
- data/vendor/assets/javascripts/RGraph.svg.common.csv.js +277 -0
- data/vendor/assets/javascripts/RGraph.svg.common.fx.js +1304 -0
- data/vendor/assets/javascripts/RGraph.svg.common.sheets.js +353 -0
- data/vendor/assets/javascripts/RGraph.svg.common.tooltips.js +233 -0
- data/vendor/assets/javascripts/RGraph.svg.hbar.js +1141 -0
- data/vendor/assets/javascripts/RGraph.svg.line.js +1486 -0
- data/vendor/assets/javascripts/RGraph.svg.pie.js +781 -0
- data/vendor/assets/javascripts/RGraph.svg.radar.js +1326 -0
- data/vendor/assets/javascripts/RGraph.svg.semicircularprogress.js +817 -0
- data/vendor/assets/javascripts/RGraph.thermometer.js +1135 -62
- data/vendor/assets/javascripts/RGraph.vprogress.js +1470 -83
- data/vendor/assets/javascripts/RGraph.waterfall.js +1347 -80
- metadata +15 -3
@@ -0,0 +1,277 @@
|
|
1
|
+
// version: 2017-01-02
|
2
|
+
/**
|
3
|
+
* o--------------------------------------------------------------------------------o
|
4
|
+
* | This file is part of the RGraph package - you can learn more at: |
|
5
|
+
* | |
|
6
|
+
* | http://www.rgraph.net |
|
7
|
+
* | |
|
8
|
+
* | RGraph is licensed under the Open Source MIT license. That means that it's |
|
9
|
+
* | totally free to use! |
|
10
|
+
* o--------------------------------------------------------------------------------o
|
11
|
+
*/
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Initialise the various objects
|
15
|
+
*/
|
16
|
+
RGraph = window.RGraph || {isRGraph: true};
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
RGraph.CSV = function (url, func)
|
22
|
+
{
|
23
|
+
var RG = RGraph,
|
24
|
+
ua = navigator.userAgent,
|
25
|
+
ma = Math;
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Some default values
|
32
|
+
*/
|
33
|
+
this.url = url;
|
34
|
+
this.ready = func;
|
35
|
+
this.data = null;
|
36
|
+
this.numrows = null;
|
37
|
+
this.numcols = null;
|
38
|
+
this.seperator = arguments[2] || ',';
|
39
|
+
this.endofline = arguments[3] || /\r?\n/;
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
/**
|
45
|
+
* A Custom split function
|
46
|
+
*
|
47
|
+
* @param string str The CSV string to split
|
48
|
+
* @param mixed char The character to split on - or it can also be an object like this:
|
49
|
+
* {
|
50
|
+
* preserve: false, // Whether to preserve whitespace
|
51
|
+
* char: ',' // The character to split on
|
52
|
+
* }
|
53
|
+
*/
|
54
|
+
this.splitCSV = function (str, split)
|
55
|
+
{
|
56
|
+
// Defaults
|
57
|
+
var arr = [];
|
58
|
+
var field = '';
|
59
|
+
var inDoubleQuotes = false;
|
60
|
+
var inSingleQuotes = false;
|
61
|
+
var preserve = (typeof split === 'object' && split.preserve) ? true : false;
|
62
|
+
|
63
|
+
// The character to split the CSV string on
|
64
|
+
if (typeof split === 'object') {
|
65
|
+
if (typeof split.char === 'string') {
|
66
|
+
split = split.char;
|
67
|
+
} else {
|
68
|
+
split = ',';
|
69
|
+
}
|
70
|
+
} // If not an object just leave the char as it's supplied
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
for (var i=0,len=str.length; i<len; i+=1) {
|
75
|
+
|
76
|
+
char = str.charAt(i);
|
77
|
+
|
78
|
+
if ( (char === '"') && !inDoubleQuotes) {
|
79
|
+
inDoubleQuotes = true;
|
80
|
+
continue;
|
81
|
+
|
82
|
+
} else if ( (char === '"') && inDoubleQuotes) {
|
83
|
+
inDoubleQuotes = false;
|
84
|
+
continue;
|
85
|
+
}
|
86
|
+
if ( (char === "'") && !inSingleQuotes) {
|
87
|
+
inSingleQuotes = true;
|
88
|
+
continue;
|
89
|
+
|
90
|
+
} else if ( (char === "'") && inSingleQuotes) {
|
91
|
+
inSingleQuotes = false;
|
92
|
+
continue;
|
93
|
+
|
94
|
+
} else if (char === split && !inDoubleQuotes && !inSingleQuotes) {
|
95
|
+
// TODO look ahead in order to allow for multi-character seperators
|
96
|
+
arr.push(field);
|
97
|
+
field = '';
|
98
|
+
continue;
|
99
|
+
|
100
|
+
} else {
|
101
|
+
field = field + char;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
// Add the last field
|
106
|
+
arr.push(field);
|
107
|
+
|
108
|
+
// Now trim each value if necessary
|
109
|
+
if (!preserve) {
|
110
|
+
for (i=0,len=arr.length; i<len; i+=1) {
|
111
|
+
arr[i] = arr[i].trim();
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
return arr;
|
116
|
+
};
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
/**
|
122
|
+
* This function splits the CSV data into an array so that it can be useful.
|
123
|
+
*/
|
124
|
+
this.fetch = function ()
|
125
|
+
{
|
126
|
+
var sep = this.seperator,
|
127
|
+
eol = this.endofline,
|
128
|
+
obj = this;
|
129
|
+
|
130
|
+
if (this.url.substring(0,3) === 'id:' || this.url.substring(0,4) === 'str:') {
|
131
|
+
|
132
|
+
// Get rid of any surrounding whitespace
|
133
|
+
if (this.url.substring(0,3) === 'id:') {
|
134
|
+
var data = document.getElementById(this.url.substring(3)).innerHTML.trim();
|
135
|
+
|
136
|
+
} else if (this.url.substring(0,4) === 'str:') {
|
137
|
+
var data = this.url.substring(4).trim();
|
138
|
+
}
|
139
|
+
|
140
|
+
// Store the CSV data on the CSV object (ie - this object)
|
141
|
+
obj.data = data.split(eol);
|
142
|
+
|
143
|
+
// Store the number of rows
|
144
|
+
obj.numrows = obj.data.length;
|
145
|
+
|
146
|
+
for (var i=0,len=obj.data.length; i<len; i+=1) {
|
147
|
+
|
148
|
+
|
149
|
+
/**
|
150
|
+
* Split the individual line
|
151
|
+
*/
|
152
|
+
//var row = obj.data[i].split(sep);
|
153
|
+
var row = obj.splitCSV(obj.data[i], {preserve: false, char: sep});
|
154
|
+
|
155
|
+
|
156
|
+
if (!obj.numcols) {
|
157
|
+
obj.numcols = row.length;
|
158
|
+
}
|
159
|
+
|
160
|
+
/**
|
161
|
+
* If the cell is purely made up of numbers - convert it
|
162
|
+
*/
|
163
|
+
for (var j=0; j<row.length; j+=1) {
|
164
|
+
if ((/^\-?[0-9.]+$/).test(row[j])) {
|
165
|
+
row[j] = parseFloat(row[j]);
|
166
|
+
}
|
167
|
+
|
168
|
+
// Assign the split-up-row back to the data array
|
169
|
+
obj.data[i] = row;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
// Call the ready function straight away
|
174
|
+
obj.ready(obj);
|
175
|
+
|
176
|
+
} else {
|
177
|
+
|
178
|
+
RGraph.SVG.AJAX.getString(this.url, function (data)
|
179
|
+
{
|
180
|
+
data = data.replace(/(\r?\n)+$/, '');
|
181
|
+
|
182
|
+
/**
|
183
|
+
* Split the lines in the CSV
|
184
|
+
*/
|
185
|
+
obj.data = data.split(eol);
|
186
|
+
|
187
|
+
/**
|
188
|
+
* Store the number of rows
|
189
|
+
*/
|
190
|
+
obj.numrows = obj.data.length;
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
/**
|
195
|
+
* Loop thru each lines in the CSV file
|
196
|
+
*/
|
197
|
+
for (var i=0,len=obj.data.length; i<len; i+=1) {
|
198
|
+
/**
|
199
|
+
* Use the new split function to split each row NOT preserving whitespace
|
200
|
+
*/
|
201
|
+
//var row = obj.data[i].split(sep);
|
202
|
+
var row = obj.splitCSV(obj.data[i], {preserve: false, char: sep});
|
203
|
+
|
204
|
+
if (!obj.numcols) {
|
205
|
+
obj.numcols = row.length;
|
206
|
+
}
|
207
|
+
|
208
|
+
/**
|
209
|
+
* If the cell is purely made up of numbers - convert it
|
210
|
+
*/
|
211
|
+
for (var j=0; j<row.length; j+=1) {
|
212
|
+
if ((/^\-?[0-9.]+$/).test(row[j])) {
|
213
|
+
row[j] = parseFloat(row[j]);
|
214
|
+
}
|
215
|
+
|
216
|
+
// Assign the split-up-row back to the data array
|
217
|
+
obj.data[i] = row;
|
218
|
+
}
|
219
|
+
|
220
|
+
}
|
221
|
+
|
222
|
+
// Call the ready function straight away
|
223
|
+
obj.ready(obj);
|
224
|
+
});
|
225
|
+
}
|
226
|
+
};
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
/**
|
232
|
+
* Returns a row of the CSV file
|
233
|
+
*
|
234
|
+
* @param number index The index of the row to fetch
|
235
|
+
* @param start OPTIONAL If desired you can specify a column to start at (which starts at 0 by default)
|
236
|
+
*/
|
237
|
+
this.getRow = function (index)
|
238
|
+
{
|
239
|
+
var row = [];
|
240
|
+
var start = arguments[1] || 0;
|
241
|
+
|
242
|
+
for (var i=start; i<this.numcols; i+=1) {
|
243
|
+
row.push(this.data[index][i]);
|
244
|
+
}
|
245
|
+
|
246
|
+
return row;
|
247
|
+
};
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
/**
|
253
|
+
* Returns a column of the CSV file
|
254
|
+
*
|
255
|
+
* @param number index The index of the column to fetch
|
256
|
+
* @param start OPTIONAL If desired you can specify a row to start at (which starts at 0 by default)
|
257
|
+
*/
|
258
|
+
this.getCol =
|
259
|
+
this.getColumn = function (index)
|
260
|
+
{
|
261
|
+
var col = [];
|
262
|
+
var start = arguments[1] || 0;
|
263
|
+
|
264
|
+
for (var i=start; i<this.numrows; i+=1) {
|
265
|
+
col.push(this.data[i][index]);
|
266
|
+
}
|
267
|
+
|
268
|
+
return col;
|
269
|
+
};
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
// Fetch the CSV file
|
276
|
+
this.fetch();
|
277
|
+
};
|
@@ -0,0 +1,1304 @@
|
|
1
|
+
// version: 2017-01-02
|
2
|
+
/**
|
3
|
+
* o--------------------------------------------------------------------------------o
|
4
|
+
* | This file is part of the RGraph package - you can learn more at: |
|
5
|
+
* | |
|
6
|
+
* | http://www.rgraph.net |
|
7
|
+
* | |
|
8
|
+
* | RGraph is licensed under the Open Source MIT license. That means that it's |
|
9
|
+
* | totally free to use! |
|
10
|
+
* o--------------------------------------------------------------------------------o
|
11
|
+
*/
|
12
|
+
|
13
|
+
/**
|
14
|
+
* This is a library of a few functions that make it easier to do
|
15
|
+
* effects like fade-ins or eaxpansion.
|
16
|
+
*/
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Initialise the various objects
|
20
|
+
*/
|
21
|
+
RGraph = window.RGraph || {isRGraph: true};
|
22
|
+
RGraph.SVG = RGraph.SVG || {};
|
23
|
+
RGraph.SVG.FX = RGraph.SVG.FX || {};
|
24
|
+
|
25
|
+
// Module pattern
|
26
|
+
(function (win, doc, undefined)
|
27
|
+
{
|
28
|
+
var RG = RGraph,
|
29
|
+
ua = navigator.userAgent,
|
30
|
+
ma = Math;
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
/**
|
40
|
+
* This functions adds the generic effects to thechart object
|
41
|
+
*
|
42
|
+
* @param object obj The chart object
|
43
|
+
*/
|
44
|
+
RG.SVG.FX.decorate = function (obj)
|
45
|
+
{
|
46
|
+
for (i in RG.SVG.FX) {
|
47
|
+
if (typeof RG.SVG.FX[i] === 'function') {
|
48
|
+
obj[i] = RG.SVG.FX[i];
|
49
|
+
}
|
50
|
+
}
|
51
|
+
};
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
/**
|
61
|
+
* fadeIn
|
62
|
+
*
|
63
|
+
* This function simply uses the CSS opacity property - initially set to zero and
|
64
|
+
* increasing to 1 over the period of 0.5 second
|
65
|
+
*/
|
66
|
+
RG.SVG.FX.fadein = function ()
|
67
|
+
{
|
68
|
+
// This function gets added to the chart object - so the this
|
69
|
+
// variable is the chart object
|
70
|
+
var obj = this,
|
71
|
+
opt = arguments[0] || {},
|
72
|
+
frames = opt.frames || 90,
|
73
|
+
duration = (frames / 60) * 1000,
|
74
|
+
frame = 0,
|
75
|
+
callback = opt.callback || function () {};
|
76
|
+
|
77
|
+
|
78
|
+
// Initially the opacity should be zero
|
79
|
+
obj.svg.style.opacity = 0;
|
80
|
+
|
81
|
+
// Draw the chart
|
82
|
+
RG.SVG.redraw(this.svg);
|
83
|
+
|
84
|
+
// Now fade the chart in
|
85
|
+
for (var i=1; i<=frames; ++i) {
|
86
|
+
(function (index)
|
87
|
+
{
|
88
|
+
setTimeout(function ()
|
89
|
+
{
|
90
|
+
obj.svg.style.opacity = (index / frames);
|
91
|
+
|
92
|
+
if (index >= frames) {
|
93
|
+
callback(obj);
|
94
|
+
}
|
95
|
+
|
96
|
+
}, (index / frames) * duration);
|
97
|
+
})(i)
|
98
|
+
}
|
99
|
+
|
100
|
+
|
101
|
+
return this;
|
102
|
+
};
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
/**
|
112
|
+
* fadeOut
|
113
|
+
*
|
114
|
+
* This function is a reversal of the above function - fading out instead of in
|
115
|
+
*/
|
116
|
+
RG.SVG.FX.fadeout = function ()
|
117
|
+
{
|
118
|
+
// This function gets added to the chart object - so the this
|
119
|
+
// variable is the chart object
|
120
|
+
var obj = this,
|
121
|
+
opt = arguments[0] || {},
|
122
|
+
frames = opt.frames || 90,
|
123
|
+
duration = (frames / 60) * 1000,
|
124
|
+
frame = 0,
|
125
|
+
callback = opt.callback || function () {};
|
126
|
+
|
127
|
+
//RG.SVG.redraw()
|
128
|
+
|
129
|
+
// Now fade the chart out
|
130
|
+
for (var i=1; i<=frames; ++i) {
|
131
|
+
(function (index)
|
132
|
+
{
|
133
|
+
setTimeout(function ()
|
134
|
+
{
|
135
|
+
obj.svg.style.opacity = 1 - (index / frames);
|
136
|
+
|
137
|
+
if (index >= frames) {
|
138
|
+
callback(obj);
|
139
|
+
}
|
140
|
+
}, (index / frames) * duration);
|
141
|
+
})(i)
|
142
|
+
}
|
143
|
+
|
144
|
+
return this;
|
145
|
+
};
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
/**
|
155
|
+
* fadeSlideIn
|
156
|
+
*
|
157
|
+
* This function fades the canvas in in a sliding motion
|
158
|
+
*/
|
159
|
+
RG.SVG.FX.fadeslidein = function ()
|
160
|
+
{
|
161
|
+
// This function gets added to the chart object - so the this
|
162
|
+
// variable is the chart object
|
163
|
+
var obj = this,
|
164
|
+
opt = arguments[0] || {},
|
165
|
+
frames = opt.frames || 90,
|
166
|
+
frame = 0,
|
167
|
+
pc = -20,
|
168
|
+
step = (120 - pc) / frames,
|
169
|
+
color = opt.color || 'white',
|
170
|
+
width = this.container.offsetWidth,
|
171
|
+
height = this.container.offsetHeight,
|
172
|
+
callback = opt.callback || function () {};
|
173
|
+
|
174
|
+
|
175
|
+
// Draw the chart
|
176
|
+
RG.SVG.redraw(this.svg);
|
177
|
+
|
178
|
+
|
179
|
+
// Create the cover
|
180
|
+
$('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
|
181
|
+
background: 'linear-gradient(135deg, rgba(255,255,255,0) ' + pc + '%, ' + color + ' ' + (pc + 20) + '%)',
|
182
|
+
width: width + 'px',
|
183
|
+
height: height + 'px',
|
184
|
+
top: 0,
|
185
|
+
left: 0,
|
186
|
+
position: 'absolute'
|
187
|
+
}).appendTo($(this.container));
|
188
|
+
|
189
|
+
|
190
|
+
function iterator ()
|
191
|
+
{
|
192
|
+
if (pc < 120) {
|
193
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).css({
|
194
|
+
background: 'linear-gradient(135deg, rgba(255,255,255,0) ' + pc + '%, ' + color + ' ' + (pc + 20) + '%)'
|
195
|
+
});
|
196
|
+
pc += step;
|
197
|
+
RG.SVG.FX.update(iterator);
|
198
|
+
|
199
|
+
} else {
|
200
|
+
|
201
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).remove();
|
202
|
+
|
203
|
+
callback(obj);
|
204
|
+
}
|
205
|
+
}
|
206
|
+
|
207
|
+
iterator();
|
208
|
+
|
209
|
+
return this;
|
210
|
+
};
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
//
|
219
|
+
// fadeSlideOut
|
220
|
+
//
|
221
|
+
// Fades the canvas out in a sliding motion. This function gets added
|
222
|
+
// to the chart object - so the this variable is the chart object
|
223
|
+
//
|
224
|
+
RG.SVG.FX.fadeslideout = function ()
|
225
|
+
{
|
226
|
+
var obj = this,
|
227
|
+
opt = arguments[0] || {},
|
228
|
+
frames = opt.frames || 90,
|
229
|
+
frame = 0,
|
230
|
+
pc = -20,
|
231
|
+
step = (120 - pc) / frames,
|
232
|
+
canvasXY = RG.SVG.getSVGXY(obj.svg),
|
233
|
+
color = opt.color || 'white',
|
234
|
+
width = this.container.offsetWidth,
|
235
|
+
height = this.container.offsetHeight,
|
236
|
+
callback = opt.callback || function () {};
|
237
|
+
|
238
|
+
|
239
|
+
// Draw the chart
|
240
|
+
//RG.SVG.redraw(this.svg);
|
241
|
+
|
242
|
+
// Create the cover
|
243
|
+
$('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
|
244
|
+
background: 'linear-gradient(135deg, ' + color + ' ' + pc + '%, rgba(255,255,255,0) ' + (pc + 20) + '%)',
|
245
|
+
width: width + 'px',
|
246
|
+
height: height + 'px',
|
247
|
+
top: 0,
|
248
|
+
left: 0,
|
249
|
+
position: 'absolute'
|
250
|
+
}).appendTo($(obj.svg.parentNode));
|
251
|
+
|
252
|
+
function iterator ()
|
253
|
+
{
|
254
|
+
if (pc < 120) {
|
255
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).css({
|
256
|
+
background: 'linear-gradient(135deg, ' + color + ' ' + pc + '%, rgba(255,255,255,0) ' + (pc + 20) + '%)'
|
257
|
+
});
|
258
|
+
pc += step;
|
259
|
+
RG.SVG.FX.update(iterator);
|
260
|
+
|
261
|
+
} else {
|
262
|
+
|
263
|
+
RG.SVG.clear(obj.svg);
|
264
|
+
|
265
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).remove();
|
266
|
+
|
267
|
+
callback(obj);
|
268
|
+
}
|
269
|
+
}
|
270
|
+
|
271
|
+
iterator();
|
272
|
+
|
273
|
+
return this;
|
274
|
+
};
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
//
|
284
|
+
// fadeCircularIn
|
285
|
+
//
|
286
|
+
// This function uses radial CSS gradients to cover the canvas with a radial fade in effect
|
287
|
+
// (from the center outwards)
|
288
|
+
//
|
289
|
+
RG.SVG.FX.fadecircularinoutwards = function ()
|
290
|
+
{
|
291
|
+
// This function gets added to the chart object - so the 'this'
|
292
|
+
// variable is the chart object
|
293
|
+
var obj = this,
|
294
|
+
opt = arguments[0] || {},
|
295
|
+
frames = opt.frames || 90,
|
296
|
+
frame = 1,
|
297
|
+
radius = 0,
|
298
|
+
svgXY = RG.SVG.getSVGXY(obj.svg),
|
299
|
+
color = opt.color || 'white',
|
300
|
+
callback = opt.callback || function () {};
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
// Draw the chart
|
306
|
+
RG.SVG.redraw(this.svg);
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
// Create the cover
|
311
|
+
$('<div id="rgraph_fadecircularinoutwards_cover_' + obj.id + '"></div>').css({
|
312
|
+
background: 'radial-gradient(rgba(255,255,255,0) 0%, ' + color + ' ' + radius + '%)',
|
313
|
+
width: this.container.offsetWidth + 'px',
|
314
|
+
height: this.container.offsetHeight + 'px',
|
315
|
+
top: 0,
|
316
|
+
left: 0,
|
317
|
+
position: 'absolute'
|
318
|
+
}).appendTo($(obj.svg.parentNode));
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
function iterator ()
|
324
|
+
{
|
325
|
+
if (frame < frames) {
|
326
|
+
|
327
|
+
$('div#rgraph_fadecircularinoutwards_cover_' + obj.id).css({
|
328
|
+
background: 'radial-gradient(rgba(255,255,255,0) ' + ((frame++ / frames) * 100) + '%, ' + color + ' ' + ((frame++ / frames) * 150) + '%)'
|
329
|
+
});
|
330
|
+
|
331
|
+
RG.SVG.FX.update(iterator);
|
332
|
+
|
333
|
+
} else {
|
334
|
+
|
335
|
+
$('div#rgraph_fadecircularinoutwards_cover_' + obj.id).remove();
|
336
|
+
|
337
|
+
callback(obj);
|
338
|
+
}
|
339
|
+
}
|
340
|
+
|
341
|
+
iterator();
|
342
|
+
|
343
|
+
return this;
|
344
|
+
};
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
//
|
354
|
+
// fadecircularoutoutwards
|
355
|
+
//
|
356
|
+
// This function uses radial CSS gradients to cover the canvas with a radial fade out effect
|
357
|
+
// (from the center outwards)
|
358
|
+
//
|
359
|
+
RG.SVG.FX.fadecircularoutoutwards = function ()
|
360
|
+
{
|
361
|
+
// This function gets added to the chart object - so the this
|
362
|
+
// variable is the chart object
|
363
|
+
var obj = this,
|
364
|
+
opt = arguments[0] || {},
|
365
|
+
frames = opt.frames || 90,
|
366
|
+
frame = 0,
|
367
|
+
width = this.container.offsetWidth,
|
368
|
+
height = this.container.offsetHeight,
|
369
|
+
canvasXY = RG.SVG.getSVGXY(obj.svg),
|
370
|
+
color = opt.color || 'white',
|
371
|
+
callback = opt.callback || function () {};
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
// Draw the chart
|
378
|
+
//RG.SVG.redraw(this.svg);
|
379
|
+
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
// Create the cover
|
385
|
+
$('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
|
386
|
+
background: 'radial-gradient(rgba(255,255,255,0) 0%, transparent 0%)',
|
387
|
+
width: width + 'px',
|
388
|
+
height: height + 'px',
|
389
|
+
top: 0,
|
390
|
+
left: 0,
|
391
|
+
position: 'absolute'
|
392
|
+
}).appendTo($(obj.svg.parentNode));
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
function iterator ()
|
398
|
+
{
|
399
|
+
if (frame < frames) {
|
400
|
+
|
401
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).css({
|
402
|
+
background: 'radial-gradient(' + color + ' ' + ((frame++ / frames) * 100) + '%, rgba(255,255,255,0) ' + ((frame++ / frames) * 150) + '%)'
|
403
|
+
});
|
404
|
+
RG.SVG.FX.update(iterator);
|
405
|
+
|
406
|
+
} else {
|
407
|
+
|
408
|
+
RG.SVG.clear(obj.svg);
|
409
|
+
|
410
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).remove();
|
411
|
+
|
412
|
+
callback(obj);
|
413
|
+
}
|
414
|
+
}
|
415
|
+
|
416
|
+
iterator();
|
417
|
+
|
418
|
+
return this;
|
419
|
+
};
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
|
428
|
+
//
|
429
|
+
// fadeCircularInInwards
|
430
|
+
//
|
431
|
+
// This function gets added to the chart object - so the 'this'
|
432
|
+
// variable is the chart object
|
433
|
+
//
|
434
|
+
RG.SVG.FX.fadecircularininwards = function ()
|
435
|
+
{
|
436
|
+
var obj = this,
|
437
|
+
opt = arguments[0] || {},
|
438
|
+
frames = opt.frames || 90,
|
439
|
+
frame = 0,
|
440
|
+
radius = ma.max(
|
441
|
+
obj.container.offsetWidth,
|
442
|
+
obj.container.offsetHeight
|
443
|
+
),
|
444
|
+
color = opt.color || 'white',
|
445
|
+
callback = opt.callback || function () {};
|
446
|
+
|
447
|
+
|
448
|
+
// Draw the chart
|
449
|
+
RG.SVG.redraw(this.svg);
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
// Create the cover
|
454
|
+
$('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
|
455
|
+
background: 'radial-gradient(rgba(255,255,255,0) 100%, rgba(255,255,255,0) 0%)',
|
456
|
+
width: this.container.offsetWidth + 'px',
|
457
|
+
height: this.container.offsetHeight + 'px',
|
458
|
+
top: 0,
|
459
|
+
left: 0,
|
460
|
+
position: 'absolute'
|
461
|
+
}).appendTo($(obj.svg.parentNode));
|
462
|
+
|
463
|
+
function iterator ()
|
464
|
+
{
|
465
|
+
if (frame < frames) {
|
466
|
+
|
467
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).css({
|
468
|
+
background: 'radial-gradient(' + color + ' ' + (( (frames - frame++) / frames) * 100) + '%, rgba(255,255,255,0) ' + (( (frames - frame++) / frames) * 120) + '%)'
|
469
|
+
});
|
470
|
+
RG.SVG.FX.update(iterator);
|
471
|
+
|
472
|
+
} else {
|
473
|
+
|
474
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).remove();
|
475
|
+
|
476
|
+
callback(obj);
|
477
|
+
}
|
478
|
+
}
|
479
|
+
|
480
|
+
iterator();
|
481
|
+
|
482
|
+
return this;
|
483
|
+
};
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
|
492
|
+
//
|
493
|
+
// fadecircularoutinwards
|
494
|
+
//
|
495
|
+
// This function gets added to the chart object - so the this
|
496
|
+
// variable is the chart object
|
497
|
+
//
|
498
|
+
RG.SVG.FX.fadecircularoutinwards = function ()
|
499
|
+
{
|
500
|
+
var obj = this,
|
501
|
+
opt = arguments[0] || {},
|
502
|
+
frames = opt.frames || 90,
|
503
|
+
frame = 0,
|
504
|
+
radius = ma.max(
|
505
|
+
this.container.offsetWidth,
|
506
|
+
this.container.offsetHeight
|
507
|
+
),
|
508
|
+
color = opt.color || 'white',
|
509
|
+
callback = opt.callback || function () {};
|
510
|
+
|
511
|
+
|
512
|
+
|
513
|
+
// Draw the chart
|
514
|
+
//RG.SVG.redraw(this.svg);
|
515
|
+
|
516
|
+
|
517
|
+
|
518
|
+
// Create the cover
|
519
|
+
$('<div id="rgraph_fadeslide_cover_' + this.id + '"></div>').css({
|
520
|
+
background: 'radial-gradient(rgba(255,255,255,0) 0%, rgba(255,255,255,0) 0%)',
|
521
|
+
width: this.container.offsetWidth + 'px',
|
522
|
+
height: this.container.offsetHeight + 'px',
|
523
|
+
top: 0,
|
524
|
+
left: 0,
|
525
|
+
position: 'absolute'
|
526
|
+
}).appendTo($(obj.svg.parentNode));
|
527
|
+
|
528
|
+
function iterator ()
|
529
|
+
{
|
530
|
+
if (frame < frames) {
|
531
|
+
|
532
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).css({
|
533
|
+
background: 'radial-gradient(rgba(255,255,255,0) ' + (( (frames - frame++) / frames) * 100) + '%, ' + color + ' ' + (( (frames - frame++) / frames) * 120) + '%)'
|
534
|
+
});
|
535
|
+
|
536
|
+
RG.SVG.FX.update(iterator);
|
537
|
+
|
538
|
+
} else {
|
539
|
+
|
540
|
+
RG.SVG.clear(obj.svg);
|
541
|
+
|
542
|
+
$('div#rgraph_fadeslide_cover_' + obj.id).remove();
|
543
|
+
|
544
|
+
callback(obj);
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
548
|
+
iterator();
|
549
|
+
|
550
|
+
return this;
|
551
|
+
};
|
552
|
+
|
553
|
+
|
554
|
+
|
555
|
+
|
556
|
+
//
|
557
|
+
// Reveal
|
558
|
+
//
|
559
|
+
// With this effect the chart is slowly revealed from the centre outwards. This
|
560
|
+
// function gets added to the chart object - so the 'this' variable is the chart
|
561
|
+
// object
|
562
|
+
//
|
563
|
+
// @param object Options for the effect. You can give frames here
|
564
|
+
// @param function An optional callback function
|
565
|
+
//
|
566
|
+
RG.SVG.FX.reveal = function ()
|
567
|
+
{
|
568
|
+
var obj = this,
|
569
|
+
opt = arguments[0] || {}
|
570
|
+
color = opt.color || 'white',
|
571
|
+
frames = opt.frames || 90,
|
572
|
+
duration = (frames / 60) * 1000,
|
573
|
+
callback = opt.callback || function () {}
|
574
|
+
|
575
|
+
var divs = [
|
576
|
+
['rgraph_reveal_left_' + this.id, 0, 0, this.container.offsetWidth / 2, this.container.offsetHeight],
|
577
|
+
['rgraph_reveal_right_' + this.id,(this.container.offsetWidth / 2),0,(this.container.offsetWidth / 2),this.container.offsetHeight],
|
578
|
+
['rgraph_reveal_top_' + this.id,0,0,this.container.offsetWidth,(this.container.offsetHeight / 2)],
|
579
|
+
['rgraph_reveal_bottom_' + this.id,0,(this.container.offsetHeight / 2),this.container.offsetWidth,(this.container.offsetHeight / 2)]
|
580
|
+
];
|
581
|
+
|
582
|
+
for (var i=0,len=divs.length; i<len; ++i) {
|
583
|
+
var div = doc.createElement('DIV');
|
584
|
+
div.id = divs[i][0];
|
585
|
+
div.style.left = divs[i][1] + 'px';
|
586
|
+
div.style.top = divs[i][2] + 'px';
|
587
|
+
div.style.width = divs[i][3] + 'px';
|
588
|
+
div.style.height = divs[i][4] + 'px';
|
589
|
+
div.style.position = 'absolute';
|
590
|
+
div.style.backgroundColor = color;
|
591
|
+
this.container.appendChild(div);
|
592
|
+
}
|
593
|
+
|
594
|
+
|
595
|
+
// Redraw
|
596
|
+
RG.SVG.redraw(obj.svg);
|
597
|
+
|
598
|
+
|
599
|
+
// Animate the shrinking of the DIVs
|
600
|
+
jQuery('#rgraph_reveal_left_' + obj.id).animate({width: 0}, duration);
|
601
|
+
jQuery('#rgraph_reveal_right_' + obj.id).animate({left: '+=' + (this.container.offsetWidth / 2),width: 0}, duration);
|
602
|
+
jQuery('#rgraph_reveal_top_' + obj.id).animate({height: 0}, duration);
|
603
|
+
jQuery('#rgraph_reveal_bottom_' + obj.id).animate({top: '+=' + (this.container.offsetHeight / 2),height: 0}, duration);
|
604
|
+
|
605
|
+
// Remove the DIVs from the DOM 100ms after the animation ends
|
606
|
+
setTimeout(function ()
|
607
|
+
{
|
608
|
+
obj.container.removeChild(doc.getElementById("rgraph_reveal_top_" + obj.id));
|
609
|
+
obj.container.removeChild(doc.getElementById("rgraph_reveal_bottom_" + obj.id));
|
610
|
+
obj.container.removeChild(doc.getElementById("rgraph_reveal_left_" + obj.id));
|
611
|
+
obj.container.removeChild(doc.getElementById("rgraph_reveal_right_" + obj.id));
|
612
|
+
|
613
|
+
callback(obj);
|
614
|
+
}, duration);
|
615
|
+
|
616
|
+
|
617
|
+
return this;
|
618
|
+
};
|
619
|
+
|
620
|
+
|
621
|
+
|
622
|
+
|
623
|
+
|
624
|
+
|
625
|
+
|
626
|
+
|
627
|
+
//
|
628
|
+
// Conceal
|
629
|
+
//
|
630
|
+
// This effect is the reverse of the Reveal effect - instead of revealing
|
631
|
+
// the canvas it conceals it. Combined with the reveal effect would make
|
632
|
+
// for a nice wipe effect.
|
633
|
+
//
|
634
|
+
// @param object obj The chart object
|
635
|
+
///
|
636
|
+
RG.SVG.FX.conceal = function ()
|
637
|
+
{
|
638
|
+
var obj = this,
|
639
|
+
opt = arguments[0] || {},
|
640
|
+
frames = opt.frames || 90,
|
641
|
+
callback = opt.callback || function () {},
|
642
|
+
color = opt.color || 'white',
|
643
|
+
duration = (frames / 60) * 1000,
|
644
|
+
frame = 0;
|
645
|
+
|
646
|
+
|
647
|
+
|
648
|
+
var divs = [
|
649
|
+
['rgraph_conceal_left_' + obj.id, 0, 0, 0, this.container.offsetHeight],
|
650
|
+
['rgraph_conceal_right_' + obj.id,this.container.offsetWidth,0,0,this.container.offsetHeight],
|
651
|
+
['rgraph_conceal_top_' + obj.id,0,0,this.container.offsetWidth,0],
|
652
|
+
['rgraph_conceal_bottom_' + obj.id,0,this.container.offsetHeight,this.container.offsetWidth,0]
|
653
|
+
];
|
654
|
+
|
655
|
+
|
656
|
+
|
657
|
+
|
658
|
+
for (var i=0,len=divs.length; i<len; ++i) {
|
659
|
+
var div = doc.createElement('DIV');
|
660
|
+
div.id = divs[i][0];
|
661
|
+
div.style.left = divs[i][1] + 'px';
|
662
|
+
div.style.top = divs[i][2] + 'px';
|
663
|
+
div.style.width = divs[i][3] + 'px';
|
664
|
+
div.style.height = divs[i][4] + 'px';
|
665
|
+
div.style.position = 'absolute';
|
666
|
+
div.style.backgroundColor = color;
|
667
|
+
this.container.appendChild(div);
|
668
|
+
}
|
669
|
+
|
670
|
+
jQuery('#rgraph_conceal_left_' + obj.id).animate({width: '+=' + (this.container.offsetWidth / 2)}, duration);
|
671
|
+
jQuery('#rgraph_conceal_right_' + obj.id).animate({left: '-=' + (this.container.offsetWidth / 2),width: (this.container.offsetWidth / 2)}, duration);
|
672
|
+
jQuery('#rgraph_conceal_top_' + obj.id).animate({height: '+=' + (this.container.offsetHeight / 2)}, duration);
|
673
|
+
jQuery('#rgraph_conceal_bottom_' + obj.id).animate({top: '-=' + (this.container.offsetHeight / 2),height: (this.container.offsetHeight / 2)}, duration);
|
674
|
+
|
675
|
+
// Remove the DIVs from the DOM 100ms after the animation ends
|
676
|
+
setTimeout(
|
677
|
+
function ()
|
678
|
+
{
|
679
|
+
obj.container.removeChild(doc.getElementById("rgraph_conceal_top_" + obj.id));
|
680
|
+
obj.container.removeChild(doc.getElementById("rgraph_conceal_bottom_" + obj.id));
|
681
|
+
obj.container.removeChild(doc.getElementById("rgraph_conceal_left_" + obj.id));
|
682
|
+
obj.container.removeChild(doc.getElementById("rgraph_conceal_right_" + obj.id));
|
683
|
+
|
684
|
+
RG.SVG.clear(obj.svg);
|
685
|
+
|
686
|
+
callback(obj);
|
687
|
+
|
688
|
+
},
|
689
|
+
duration
|
690
|
+
);
|
691
|
+
|
692
|
+
return this;
|
693
|
+
};
|
694
|
+
|
695
|
+
|
696
|
+
|
697
|
+
|
698
|
+
|
699
|
+
|
700
|
+
|
701
|
+
|
702
|
+
//
|
703
|
+
// Horizontal Blinds (open)
|
704
|
+
//
|
705
|
+
// @params object obj The graph object
|
706
|
+
//
|
707
|
+
RG.SVG.FX.hblindsopen = function ()
|
708
|
+
{
|
709
|
+
// This function gets added to the chart object - so the this
|
710
|
+
// variable is the chart object
|
711
|
+
var obj = this,
|
712
|
+
opt = arguments[0] || {},
|
713
|
+
frames = opt.frames || 90,
|
714
|
+
duration = (frames / 60) * 1000,
|
715
|
+
frame = 0,
|
716
|
+
callback = opt.callback || function () {},
|
717
|
+
color = opt.color || 'white',
|
718
|
+
height = this.container.offsetHeight / 5;
|
719
|
+
|
720
|
+
//
|
721
|
+
// First draw the chart
|
722
|
+
//
|
723
|
+
RG.SVG.redraw(this.svg);
|
724
|
+
|
725
|
+
for (var i=0; i<5; ++i) {
|
726
|
+
var div = doc.createElement('DIV');
|
727
|
+
div.id = 'rgraph_hblinds_' + i + '_' + obj.id;
|
728
|
+
div.style.left = 0;
|
729
|
+
div.style.top = ((this.container.offsetHeight * (i / 5))) + 'px';
|
730
|
+
div.style.width = this.container.offsetWidth + 'px';
|
731
|
+
div.style.height = (this.container.offsetHeight / 5) + 'px';
|
732
|
+
div.style.position = 'absolute';
|
733
|
+
div.style.backgroundColor = color;
|
734
|
+
this.container.appendChild(div);
|
735
|
+
|
736
|
+
jQuery('#rgraph_hblinds_' + i + '_' + obj.id).animate({height: 0}, duration);
|
737
|
+
}
|
738
|
+
|
739
|
+
setTimeout(function () {this.container.removeChild(doc.getElementById('rgraph_hblinds_0_' + obj.id));}, duration);
|
740
|
+
setTimeout(function () {this.container.removeChild(doc.getElementById('rgraph_hblinds_1_' + obj.id));}, duration);
|
741
|
+
setTimeout(function () {this.container.removeChild(doc.getElementById('rgraph_hblinds_2_' + obj.id));}, duration);
|
742
|
+
setTimeout(function () {this.container.removeChild(doc.getElementById('rgraph_hblinds_3_' + obj.id));}, duration);
|
743
|
+
setTimeout(function () {this.container.removeChild(doc.getElementById('rgraph_hblinds_4_' + obj.id));}, duration);
|
744
|
+
setTimeout(function () {callback(obj);}, duration);
|
745
|
+
|
746
|
+
return this;
|
747
|
+
};
|
748
|
+
|
749
|
+
|
750
|
+
|
751
|
+
|
752
|
+
|
753
|
+
|
754
|
+
|
755
|
+
|
756
|
+
//
|
757
|
+
// Horizontal Blinds (close)
|
758
|
+
//
|
759
|
+
// This function gets added to the chart object - so the this
|
760
|
+
// variable is the chart object
|
761
|
+
//
|
762
|
+
// @params object obj The graph object
|
763
|
+
//
|
764
|
+
RG.SVG.FX.hblindsclose = function ()
|
765
|
+
{
|
766
|
+
var obj = this,
|
767
|
+
opt = arguments[0] || {},
|
768
|
+
frames = opt.frames || 90,
|
769
|
+
duration = (frames / 60) * 1000,
|
770
|
+
frame = 0,
|
771
|
+
callback = opt.callback || function () {},
|
772
|
+
color = opt.color = 'white',
|
773
|
+
height = this.container.offsetHeight / 5;
|
774
|
+
|
775
|
+
|
776
|
+
|
777
|
+
for (var i=0; i<5; ++i) {
|
778
|
+
var div = doc.createElement('DIV');
|
779
|
+
div.id = 'rgraph_hblinds_' + i + '_' + obj.id;
|
780
|
+
div.style.left = 0;
|
781
|
+
div.style.top = (this.container.offsetHeight * (i / 5)) + 'px';
|
782
|
+
div.style.width = this.container.offsetWidth + 'px';
|
783
|
+
div.style.height = 0;
|
784
|
+
div.style.position = 'absolute';
|
785
|
+
div.style.backgroundColor = color;
|
786
|
+
this.container.appendChild(div);
|
787
|
+
|
788
|
+
jQuery('#rgraph_hblinds_' + i + '_' + obj.id)
|
789
|
+
.animate({
|
790
|
+
height: height + 'px'
|
791
|
+
}, duration);
|
792
|
+
}
|
793
|
+
|
794
|
+
|
795
|
+
|
796
|
+
setTimeout(function () {RG.SVG.clear(obj.svg);}, duration + 100);
|
797
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_hblinds_0_' + obj.id));}, duration + 100);
|
798
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_hblinds_1_' + obj.id));}, duration + 100);
|
799
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_hblinds_2_' + obj.id));}, duration + 100);
|
800
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_hblinds_3_' + obj.id));}, duration + 100);
|
801
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_hblinds_4_' + obj.id));}, duration + 100);
|
802
|
+
setTimeout(function () {callback(obj);}, duration + 100);
|
803
|
+
};
|
804
|
+
|
805
|
+
|
806
|
+
|
807
|
+
|
808
|
+
|
809
|
+
|
810
|
+
|
811
|
+
|
812
|
+
//
|
813
|
+
// Vertical Blinds (open)
|
814
|
+
//
|
815
|
+
// @params object obj The graph object
|
816
|
+
//
|
817
|
+
// This function gets added to the chart object - so the this
|
818
|
+
// variable is the chart object
|
819
|
+
RG.SVG.FX.vblindsopen = function ()
|
820
|
+
{
|
821
|
+
var obj = this,
|
822
|
+
opt = arguments[0] || {},
|
823
|
+
frames = opt.frames || 90,
|
824
|
+
duration = (frames / 60) * 1000,
|
825
|
+
frame = 0,
|
826
|
+
callback = opt.callback || function () {},
|
827
|
+
color = opt.color || 'white',
|
828
|
+
width = this.container.offsetWidth / 10;
|
829
|
+
|
830
|
+
//
|
831
|
+
// First draw the chart
|
832
|
+
//
|
833
|
+
RG.SVG.redraw(obj.svg);
|
834
|
+
|
835
|
+
for (var i=0; i<10; ++i) {
|
836
|
+
var div = doc.createElement('DIV');
|
837
|
+
div.id = 'rgraph_vblinds_' + i + '_' + obj.id;
|
838
|
+
div.style.width = width + 'px';
|
839
|
+
div.style.height = this.container.offsetHeight + 'px';
|
840
|
+
div.style.left = (this.container.offsetWidth * (i / 10)) + 'px';
|
841
|
+
div.style.top = 0;
|
842
|
+
div.style.position = 'absolute';
|
843
|
+
div.style.backgroundColor = color;
|
844
|
+
this.container.appendChild(div);
|
845
|
+
|
846
|
+
jQuery('#rgraph_vblinds_' + i + '_' + obj.id).animate({width: 0}, duration);
|
847
|
+
}
|
848
|
+
|
849
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_0_' + obj.id));}, duration + 100);
|
850
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_1_' + obj.id));}, duration + 100);
|
851
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_2_' + obj.id));}, duration + 100);
|
852
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_3_' + obj.id));}, duration + 100);
|
853
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_4_' + obj.id));}, duration + 100);
|
854
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_5_' + obj.id));}, duration + 100);
|
855
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_6_' + obj.id));}, duration + 100);
|
856
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_7_' + obj.id));}, duration + 100);
|
857
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_8_' + obj.id));}, duration + 100);
|
858
|
+
setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_9_' + obj.id));}, duration + 100);
|
859
|
+
|
860
|
+
setTimeout(function () {callback(obj);}, duration + 100);
|
861
|
+
|
862
|
+
return this;
|
863
|
+
};
|
864
|
+
|
865
|
+
|
866
|
+
|
867
|
+
|
868
|
+
|
869
|
+
|
870
|
+
|
871
|
+
|
872
|
+
//
|
873
|
+
// Vertical Blinds (close)
|
874
|
+
//
|
875
|
+
// This function gets added to the chart object - so the this
|
876
|
+
// variable is the chart object
|
877
|
+
//
|
878
|
+
// @params object obj The graph object
|
879
|
+
//
|
880
|
+
RG.SVG.FX.vblindsclose = function ()
|
881
|
+
{
|
882
|
+
var obj = this,
|
883
|
+
opt = arguments[0] || {},
|
884
|
+
frames = opt.frames || 90,
|
885
|
+
duration = (frames / 60) * 1000,
|
886
|
+
frame = 0,
|
887
|
+
callback = opt.callback || function () {},
|
888
|
+
color = opt.color || 'white',
|
889
|
+
width = this.container.offsetWidth / 10;
|
890
|
+
|
891
|
+
// Create the blinds
|
892
|
+
for (var i=0; i<10; ++i) {
|
893
|
+
var div = doc.createElement('DIV');
|
894
|
+
div.id = 'rgraph_vblinds_' + i + '_' + obj.id;
|
895
|
+
div.style.left = (this.container.offsetWidth * (i / 10)) + 'px';
|
896
|
+
div.style.top = 0;
|
897
|
+
div.style.width = 0;
|
898
|
+
div.style.height = this.container.offsetHeight + 'px';
|
899
|
+
div.style.position = 'absolute';
|
900
|
+
div.style.backgroundColor = color;
|
901
|
+
this.container.appendChild(div);
|
902
|
+
|
903
|
+
jQuery('#rgraph_vblinds_' + i + '_' + obj.id).animate({width: width}, duration);
|
904
|
+
}
|
905
|
+
|
906
|
+
setTimeout(function () {RG.SVG.clear(obj.svg);}, duration + 100);
|
907
|
+
|
908
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_0_' + obj.id));}, duration + 100);
|
909
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_1_' + obj.id));}, duration + 100);
|
910
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_2_' + obj.id));}, duration + 100);
|
911
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_3_' + obj.id));}, duration + 100);
|
912
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_4_' + obj.id));}, duration + 100);
|
913
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_5_' + obj.id));}, duration + 100);
|
914
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_6_' + obj.id));}, duration + 100);
|
915
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_7_' + obj.id));}, duration + 100);
|
916
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_8_' + obj.id));}, duration + 100);
|
917
|
+
setTimeout(function () {obj.container.removeChild(doc.getElementById('rgraph_vblinds_9_' + obj.id));}, duration + 100);
|
918
|
+
|
919
|
+
setTimeout(function () {callback(obj);}, duration + 100);
|
920
|
+
|
921
|
+
return this;
|
922
|
+
};
|
923
|
+
|
924
|
+
|
925
|
+
|
926
|
+
|
927
|
+
|
928
|
+
|
929
|
+
|
930
|
+
|
931
|
+
//
|
932
|
+
// Slide in
|
933
|
+
//
|
934
|
+
// This function is a wipe that can be used when switching the canvas to a
|
935
|
+
// new graph
|
936
|
+
//
|
937
|
+
// This function gets added to the chart object - so the this
|
938
|
+
// variable is the chart object
|
939
|
+
//
|
940
|
+
// @param object obj The graph object
|
941
|
+
//
|
942
|
+
RG.SVG.FX.slidein = function ()
|
943
|
+
{
|
944
|
+
var obj = this,
|
945
|
+
opt = arguments[0] || {},
|
946
|
+
frames = opt.frames || 90,
|
947
|
+
duration = (frames / 60) * 1000,
|
948
|
+
frame = 0,
|
949
|
+
callback = opt.callback || function () {},
|
950
|
+
color = opt.color || 'white',
|
951
|
+
width = this.container.offsetWidth / 10,
|
952
|
+
from = opt.from || 'left';
|
953
|
+
|
954
|
+
this.container.style.overflow = 'hidden';
|
955
|
+
|
956
|
+
RG.SVG.redraw(this.svg);
|
957
|
+
|
958
|
+
this.svg.style.position = 'relative';
|
959
|
+
|
960
|
+
if (from == 'left') {
|
961
|
+
this.svg.style.left = (0 - this.container.offsetWidth) + 'px';
|
962
|
+
this.svg.style.top = 0;
|
963
|
+
} else if (from == 'top') {
|
964
|
+
this.svg.style.left = 0;
|
965
|
+
this.svg.style.top = (0 - this.container.offsetHeight) + 'px';
|
966
|
+
} else if (from == 'bottom') {
|
967
|
+
this.svg.style.left = 0;
|
968
|
+
this.svg.style.top = this.container.offsetHeight + 'px';
|
969
|
+
} else {
|
970
|
+
this.svg.style.left = this.container.offsetWidth + 'px';
|
971
|
+
this.svg.style.top = 0;
|
972
|
+
}
|
973
|
+
|
974
|
+
jQuery(this.svg).animate({left:0,top:0}, duration, function ()
|
975
|
+
{
|
976
|
+
callback(this);
|
977
|
+
});
|
978
|
+
|
979
|
+
return this;
|
980
|
+
};
|
981
|
+
|
982
|
+
|
983
|
+
|
984
|
+
|
985
|
+
|
986
|
+
|
987
|
+
|
988
|
+
|
989
|
+
//
|
990
|
+
// Slide out
|
991
|
+
//
|
992
|
+
// This function is a wipe that can be used when switching the canvas to a new graph
|
993
|
+
//
|
994
|
+
// @param object Optional object containing configuration.
|
995
|
+
// @param function Optional callback function
|
996
|
+
//
|
997
|
+
RG.SVG.FX.slideout = function ()
|
998
|
+
{
|
999
|
+
// This function gets added to the chart object - so the this
|
1000
|
+
// variable is the chart object
|
1001
|
+
var opt = arguments[0] || {},
|
1002
|
+
frames = opt.frames || 90,
|
1003
|
+
color = opt.color || 'white',
|
1004
|
+
to = opt.to || 'left',
|
1005
|
+
duration = (frames / 60) * 1000,
|
1006
|
+
frame = 0,
|
1007
|
+
callback = opt.callback || function () {},
|
1008
|
+
width = this.container.offetsWidth / 10;
|
1009
|
+
|
1010
|
+
this.container.style.overflow= 'hidden';
|
1011
|
+
|
1012
|
+
this.svg.style.position = 'relative';
|
1013
|
+
this.svg.style.left = 0;
|
1014
|
+
this.svg.style.top = 0;
|
1015
|
+
|
1016
|
+
if (to == 'left') {
|
1017
|
+
jQuery(this.svg).animate({left: (0 - this.container.offsetWidth) + 'px'}, duration, function () {callback(this);});
|
1018
|
+
} else if (to == 'top') {
|
1019
|
+
jQuery(this.svg).animate({left: 0, top: (0 - this.container.offsetHeight) + 'px'}, duration, function () {callback(this);});
|
1020
|
+
} else if (to == 'bottom') {
|
1021
|
+
jQuery(this.svg).animate({top: (0 + this.container.offsetHeight) + 'px'}, duration, function () {callback(this);});
|
1022
|
+
} else {
|
1023
|
+
jQuery(this.svg).animate({left: (0 + this.container.offsetWidth) + 'px'}, duration, function () {callback(this);});
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
return this;
|
1027
|
+
};
|
1028
|
+
|
1029
|
+
|
1030
|
+
|
1031
|
+
|
1032
|
+
|
1033
|
+
|
1034
|
+
|
1035
|
+
|
1036
|
+
//
|
1037
|
+
// Horizontal Scissors (open)
|
1038
|
+
//
|
1039
|
+
// This function gets added to the chart object - so the this
|
1040
|
+
// variable is the chart object
|
1041
|
+
//
|
1042
|
+
// @param object Optional array of options
|
1043
|
+
// @param function Optional callback function
|
1044
|
+
//
|
1045
|
+
//
|
1046
|
+
RG.SVG.FX.hscissorsopen = function ()
|
1047
|
+
{
|
1048
|
+
var opt = arguments[0] || {},
|
1049
|
+
obj = this,
|
1050
|
+
frames = opt.frames || 90,
|
1051
|
+
callback = opt.callback || function () {},
|
1052
|
+
color = opt.color || 'white',
|
1053
|
+
to = opt.to || 'left',
|
1054
|
+
frame = 0,
|
1055
|
+
duration = (frames / 60) * 1000,
|
1056
|
+
width = this.container.offsetWidth / 10,
|
1057
|
+
height = this.container.offsetHeight / 5;
|
1058
|
+
|
1059
|
+
|
1060
|
+
//
|
1061
|
+
// First draw the chart
|
1062
|
+
//
|
1063
|
+
RG.SVG.redraw(this.svg);
|
1064
|
+
|
1065
|
+
|
1066
|
+
for (var i=0; i<5; ++i) {
|
1067
|
+
var div = doc.getElementById("rgraph_hscissors_" + i + '_' + this.id)
|
1068
|
+
if (!div) {
|
1069
|
+
var div = doc.createElement('DIV');
|
1070
|
+
div.id = 'rgraph_hscissors_' + i + '_' + this.id;
|
1071
|
+
div.style.width = this.container.offsetWidth + 'px';
|
1072
|
+
div.style.height = (this.container.offsetHeight / 5) + 'px';
|
1073
|
+
div.style.left = 0;
|
1074
|
+
div.style.top = (this.container.offsetHeight * (i / 5)) + 'px';
|
1075
|
+
div.style.position = 'absolute';
|
1076
|
+
div.style.backgroundColor = color;
|
1077
|
+
this.container.appendChild(div);
|
1078
|
+
}
|
1079
|
+
|
1080
|
+
if (i % 2 == 0) {
|
1081
|
+
jQuery('#' + 'rgraph_hscissors_' + i + '_' + this.id).animate({left: this.container.offsetWidth + 'px', width: 0}, duration);
|
1082
|
+
} else {
|
1083
|
+
jQuery('#' + 'rgraph_hscissors_' + i + '_' + this.id).animate({width: 0}, duration);
|
1084
|
+
}
|
1085
|
+
}
|
1086
|
+
|
1087
|
+
setTimeout(function ()
|
1088
|
+
{
|
1089
|
+
obj.container.removeChild(doc.getElementById('rgraph_hscissors_0_' + obj.id));
|
1090
|
+
obj.container.removeChild(doc.getElementById('rgraph_hscissors_1_' + obj.id));
|
1091
|
+
obj.container.removeChild(doc.getElementById('rgraph_hscissors_2_' + obj.id));
|
1092
|
+
obj.container.removeChild(doc.getElementById('rgraph_hscissors_3_' + obj.id));
|
1093
|
+
obj.container.removeChild(doc.getElementById('rgraph_hscissors_4_' + obj.id));
|
1094
|
+
|
1095
|
+
callback(obj);
|
1096
|
+
}, duration);
|
1097
|
+
|
1098
|
+
|
1099
|
+
return this;
|
1100
|
+
};
|
1101
|
+
|
1102
|
+
|
1103
|
+
|
1104
|
+
|
1105
|
+
|
1106
|
+
|
1107
|
+
|
1108
|
+
|
1109
|
+
//
|
1110
|
+
// Horizontal Scissors (Close)
|
1111
|
+
//
|
1112
|
+
// This function gets added to the chart object - so the this
|
1113
|
+
// variable is the chart object
|
1114
|
+
//
|
1115
|
+
// @param @object Optional object of options
|
1116
|
+
// @param function Optional callback function
|
1117
|
+
//
|
1118
|
+
//
|
1119
|
+
RG.SVG.FX.hscissorsclose = function ()
|
1120
|
+
{
|
1121
|
+
var obj = this,
|
1122
|
+
opt = arguments[0] || {},
|
1123
|
+
frames = opt.frames || 60,
|
1124
|
+
duration = (frames / 60) * 1000,
|
1125
|
+
frame = 0,
|
1126
|
+
callback = opt.callback || function () {},
|
1127
|
+
color = opt.color || 'white',
|
1128
|
+
height = this.container.offsetHeight / 5;
|
1129
|
+
|
1130
|
+
|
1131
|
+
for (var i=0; i<5; ++i) {
|
1132
|
+
var div = doc.createElement('DIV');
|
1133
|
+
div.id = 'rgraph_hscissors_' + i + '_' + this.id;
|
1134
|
+
div.style.width = 0;
|
1135
|
+
div.style.height = height + 'px';
|
1136
|
+
div.style.left = (i % 2 == 0 ? this.container.offsetWidth : 0) + 'px';
|
1137
|
+
div.style.top = (this.container.offsetHeight * (i / 5)) + 'px';
|
1138
|
+
div.style.position = 'absolute';
|
1139
|
+
div.style.backgroundColor = color;
|
1140
|
+
this.container.appendChild(div);
|
1141
|
+
|
1142
|
+
if (i % 2 == 0) {
|
1143
|
+
jQuery('#' + 'rgraph_hscissors_' + i + '_' + this.id).animate({left: 0, width: this.container.offsetWidth + 'px'}, duration);
|
1144
|
+
} else {
|
1145
|
+
jQuery('#' + 'rgraph_hscissors_' + i + '_' + this.id).animate({width: this.container.offsetWidth + 'px'}, duration);
|
1146
|
+
}
|
1147
|
+
}
|
1148
|
+
|
1149
|
+
setTimeout(function ()
|
1150
|
+
{
|
1151
|
+
RG.SVG.clear(obj.svg);
|
1152
|
+
jQuery('#' + 'rgraph_hscissors_' + 0 + '_' + obj.id).remove();
|
1153
|
+
jQuery('#' + 'rgraph_hscissors_' + 1 + '_' + obj.id).remove();
|
1154
|
+
jQuery('#' + 'rgraph_hscissors_' + 2 + '_' + obj.id).remove();
|
1155
|
+
jQuery('#' + 'rgraph_hscissors_' + 3 + '_' + obj.id).remove();
|
1156
|
+
jQuery('#' + 'rgraph_hscissors_' + 4 + '_' + obj.id).remove();
|
1157
|
+
callback(obj);
|
1158
|
+
}, duration);
|
1159
|
+
|
1160
|
+
return this;
|
1161
|
+
};
|
1162
|
+
|
1163
|
+
|
1164
|
+
|
1165
|
+
|
1166
|
+
|
1167
|
+
|
1168
|
+
|
1169
|
+
|
1170
|
+
//
|
1171
|
+
// Vertical Scissors (open)
|
1172
|
+
//
|
1173
|
+
// @param @object Optional An object of options. It can consist of:
|
1174
|
+
// o color - The color of the scissors. The default is white
|
1175
|
+
// o frames - Number of animation frames in the effect. Default
|
1176
|
+
// is 60
|
1177
|
+
// o callback - A function that's called when the effect is
|
1178
|
+
// finished
|
1179
|
+
//
|
1180
|
+
RG.SVG.FX.vscissorsopen = function ()
|
1181
|
+
{
|
1182
|
+
// This function gets added to the chart object - so the this
|
1183
|
+
// variable is the chart object
|
1184
|
+
var obj = this,
|
1185
|
+
opt = arguments[0] || {},
|
1186
|
+
frames = opt.frames || 90,
|
1187
|
+
duration = (frames / 60) * 1000,
|
1188
|
+
frame = 0,
|
1189
|
+
callback = opt.callback || function () {},
|
1190
|
+
color = opt.color || 'white',
|
1191
|
+
width = this.container.offsetWidth / 10;
|
1192
|
+
|
1193
|
+
|
1194
|
+
|
1195
|
+
//
|
1196
|
+
// First (re)draw the chart
|
1197
|
+
//
|
1198
|
+
RG.SVG.redraw(this.svg);
|
1199
|
+
|
1200
|
+
|
1201
|
+
|
1202
|
+
for (var i=0; i<10; ++i) {
|
1203
|
+
var div = doc.getElementById("rgraph_vscissors_" + i + '_' + this.id);
|
1204
|
+
|
1205
|
+
if (!div) {
|
1206
|
+
var div = doc.createElement('DIV');
|
1207
|
+
div.id = 'rgraph_vscissors_' + i + '_' + this.id;
|
1208
|
+
div.style.width = width + 'px';
|
1209
|
+
div.style.height = this.container.offsetHeight + 'px';
|
1210
|
+
div.style.left = this.container.offsetWidth * (i / 10) + 'px';
|
1211
|
+
div.style.top = 0;
|
1212
|
+
div.style.position = 'absolute';
|
1213
|
+
div.style.backgroundColor = color;
|
1214
|
+
this.container.appendChild(div);
|
1215
|
+
}
|
1216
|
+
|
1217
|
+
if (i % 2 == 0) {
|
1218
|
+
jQuery('#' + 'rgraph_vscissors_' + i + '_' + this.id).animate({top: this.container.offsetHeight + 'px', height: 0}, duration);
|
1219
|
+
} else {
|
1220
|
+
jQuery('#' + 'rgraph_vscissors_' + i + '_' + this.id).animate({height: 0}, duration);
|
1221
|
+
}
|
1222
|
+
}
|
1223
|
+
|
1224
|
+
setTimeout(function ()
|
1225
|
+
{
|
1226
|
+
this.container.removeChild(doc.getElementById('rgraph_vscissors_0' + '_' + this.id));
|
1227
|
+
this.container.removeChild(doc.getElementById('rgraph_vscissors_1' + '_' + this.id));
|
1228
|
+
this.container.removeChild(doc.getElementById('rgraph_vscissors_2' + '_' + this.id));
|
1229
|
+
this.container.removeChild(doc.getElementById('rgraph_vscissors_3' + '_' + this.id));
|
1230
|
+
this.container.removeChild(doc.getElementById('rgraph_vscissors_4' + '_' + this.id));
|
1231
|
+
|
1232
|
+
callback(this);
|
1233
|
+
|
1234
|
+
}, duration);
|
1235
|
+
|
1236
|
+
return this;
|
1237
|
+
};
|
1238
|
+
|
1239
|
+
|
1240
|
+
|
1241
|
+
|
1242
|
+
|
1243
|
+
|
1244
|
+
|
1245
|
+
|
1246
|
+
//
|
1247
|
+
// Vertical Scissors (close)
|
1248
|
+
//
|
1249
|
+
RG.SVG.FX.vscissorsclose = function ()
|
1250
|
+
{
|
1251
|
+
// This function gets added to the chart object - so the this
|
1252
|
+
// variable is the chart object
|
1253
|
+
var obj = this,
|
1254
|
+
opt = arguments[0] || {},
|
1255
|
+
frames = opt.frames || 90,
|
1256
|
+
duration = (frames / 60) * 1000,
|
1257
|
+
frame = 0,
|
1258
|
+
callback = opt.callback || function () {},
|
1259
|
+
color = opt.color || 'white',
|
1260
|
+
width = this.container.offsetWidth / 10;
|
1261
|
+
|
1262
|
+
|
1263
|
+
for (var i=0; i<10; ++i) {
|
1264
|
+
var div = doc.getElementById("rgraph_vscissors_" + i + '_' + this.id)
|
1265
|
+
if (!div) {
|
1266
|
+
var div = doc.createElement('DIV');
|
1267
|
+
div.id = 'rgraph_vscissors_' + i + '_' + this.id;
|
1268
|
+
div.style.width = width + 'px';
|
1269
|
+
div.style.height = 0;
|
1270
|
+
div.style.left = (width * i) + 'px';
|
1271
|
+
div.style.top = (i % 2 == 0 ? this.container.offsetHeight : 0) + 'px';
|
1272
|
+
div.style.position = 'absolute';
|
1273
|
+
div.style.backgroundColor = color;
|
1274
|
+
this.container.appendChild(div);
|
1275
|
+
}
|
1276
|
+
|
1277
|
+
if (i % 2 == 0) {
|
1278
|
+
jQuery('#' + 'rgraph_vscissors_' + i + '_' + this.id).animate({top: 0, height: this.container.offsetHeight + 'px'}, duration);
|
1279
|
+
} else {
|
1280
|
+
jQuery('#' + 'rgraph_vscissors_' + i + '_' + this.id).animate({height: this.container.offsetHeight + 'px'}, duration);
|
1281
|
+
}
|
1282
|
+
}
|
1283
|
+
|
1284
|
+
setTimeout(function ()
|
1285
|
+
{
|
1286
|
+
RG.SVG.clear(obj.svg);
|
1287
|
+
for (var i=0; i<10; i++) {
|
1288
|
+
jQuery('#rgraph_vscissors_' + i + '_' + obj.id).remove();
|
1289
|
+
}
|
1290
|
+
callback(obj);
|
1291
|
+
}, duration);
|
1292
|
+
|
1293
|
+
return this;
|
1294
|
+
};
|
1295
|
+
|
1296
|
+
|
1297
|
+
|
1298
|
+
|
1299
|
+
|
1300
|
+
|
1301
|
+
|
1302
|
+
|
1303
|
+
// End Module pattern
|
1304
|
+
})(window, document);
|