nyoibo 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +6 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +11 -0
- data/app/helpers/nyoibo_helper.rb +15 -0
- data/lib/generators/nyoibo/install_generator.rb +20 -0
- data/lib/generators/nyoibo/templates/nyoibo.js.coffee +65 -0
- data/lib/generators/nyoibo/templates/nyoibo.rb.erb +4 -0
- data/lib/generators/nyoibo/templates/nyoibo_en.yml +3 -0
- data/lib/nyoibo.rb +17 -0
- data/lib/nyoibo/callback.rb +28 -0
- data/lib/nyoibo/configure.rb +19 -0
- data/lib/nyoibo/daemon.rb +58 -0
- data/lib/nyoibo/rails.rb +4 -0
- data/lib/nyoibo/railtie.rb +8 -0
- data/lib/nyoibo/version.rb +3 -0
- data/nyoibo.gemspec +26 -0
- data/test/fixtures/test.jpg +0 -0
- data/test/test_helper.rb +19 -0
- data/test/unit/callback_test.rb +17 -0
- data/test/unit/configure_test.rb +15 -0
- data/test/unit/daemon_test.rb +60 -0
- data/vendor/html5jp/progress.js +929 -0
- data/vendor/web-socket-js/README.md +157 -0
- data/vendor/web-socket-js/WebSocketMain.swf +0 -0
- data/vendor/web-socket-js/swfobject.js +4 -0
- data/vendor/web-socket-js/web_socket.js +361 -0
- metadata +124 -0
@@ -0,0 +1,929 @@
|
|
1
|
+
// Copyright 2007-2009 futomi http://www.html5.jp/
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
//
|
15
|
+
// progress.js v1.0.1
|
16
|
+
|
17
|
+
/* -------------------------------------------------------------------
|
18
|
+
* define objects (name space) for this library.
|
19
|
+
* ----------------------------------------------------------------- */
|
20
|
+
if( typeof html5jp == 'undefined' ) {
|
21
|
+
html5jp = new Object();
|
22
|
+
}
|
23
|
+
|
24
|
+
(function () {
|
25
|
+
|
26
|
+
/* -------------------------------------------------------------------
|
27
|
+
* constructor
|
28
|
+
* ----------------------------------------------------------------- */
|
29
|
+
html5jp.progress = function (id, p) {
|
30
|
+
if( ! id ) { return; }
|
31
|
+
var pnode = document.getElementById(id);
|
32
|
+
if(! pnode) { return; }
|
33
|
+
if( ! pnode.nodeName.match(/^DIV$/i) ) { return; }
|
34
|
+
var nodes = {};
|
35
|
+
nodes.parent = pnode;
|
36
|
+
/* -------------------------------------------------------------------
|
37
|
+
* default settings
|
38
|
+
* ----------------------------------------------------------------- */
|
39
|
+
var dp = {
|
40
|
+
full: 100, // value of 100%
|
41
|
+
from: 0, // value of start point
|
42
|
+
to: 0, // value of end point
|
43
|
+
animation: 5, // animation speed
|
44
|
+
nd: 0, //number of decimals
|
45
|
+
width: 300, // width of progress bar (pixel)
|
46
|
+
height: 12, //height of progress bar (pixel)
|
47
|
+
// styles of frame
|
48
|
+
frm_bgc: "#cccccc", // backgroundColor
|
49
|
+
frm_bdtc: null, // borderTopColor
|
50
|
+
frm_bdrc: null, // borderRightColor
|
51
|
+
frm_bdbc: null, // borderBottomColor
|
52
|
+
frm_bdlc: null, // borderLeftColor
|
53
|
+
frm_bdw: "1px", // borderWidth
|
54
|
+
// styles of bar
|
55
|
+
bar_bgc: "#039ab2", // backgroundColor
|
56
|
+
bar_bdtc: null, // borderTopColor
|
57
|
+
bar_bdrc: null, // borderRightColor
|
58
|
+
bar_bdbc: null, // borderBottomColor
|
59
|
+
bar_bdlc: null, // borderLeftColor
|
60
|
+
bar_bdw: "1px", // borderWidth
|
61
|
+
// styles of percentage
|
62
|
+
per_shw: true,
|
63
|
+
per_ftc: "white", // color
|
64
|
+
per_ftf: "Arial,sans-serif", // fontFamily
|
65
|
+
per_fts: "11px", // fontSize
|
66
|
+
// styles of percentage shadow
|
67
|
+
per_sd: true,
|
68
|
+
per_sdc: "#101010", // color
|
69
|
+
// gradation
|
70
|
+
gradation: true
|
71
|
+
};
|
72
|
+
/* -------------------------------
|
73
|
+
* initialize parameters
|
74
|
+
* ----------------------------- */
|
75
|
+
if( typeof(p) == "undefined" ) { p = {}; }
|
76
|
+
for( var k in dp ) {
|
77
|
+
if( typeof(p[k]) == "undefined" ) {
|
78
|
+
p[k] = dp[k];
|
79
|
+
}
|
80
|
+
}
|
81
|
+
// value of 100%
|
82
|
+
p.full = parseFloat(p.full);
|
83
|
+
// value of start point
|
84
|
+
p.from = parseFloat(p.from);
|
85
|
+
if( p.from < 0 ) {
|
86
|
+
p.from = 0;
|
87
|
+
} else if( p.from > p.full ) {
|
88
|
+
p.from = p.full;
|
89
|
+
}
|
90
|
+
|
91
|
+
// value of end point
|
92
|
+
p.to = parseFloat(p.to);
|
93
|
+
if( p.to < 0 ) {
|
94
|
+
p.to = 0;
|
95
|
+
} else if( p.to > p.full ) {
|
96
|
+
p.to = p.full;
|
97
|
+
}
|
98
|
+
// animation speed
|
99
|
+
p.animation = parseFloat(p.animation);
|
100
|
+
if( p.animation < 0 ) {
|
101
|
+
p.animation = 0;
|
102
|
+
} else if( p.animation > 10 ) {
|
103
|
+
p.animation = 10;
|
104
|
+
}
|
105
|
+
// number of decimals
|
106
|
+
p.nd = parseFloat(p.nd);
|
107
|
+
if( p.nd < 0 ) {
|
108
|
+
p.nd = 0;
|
109
|
+
} else if( p.nd > 8 ) {
|
110
|
+
p.nd = 8;
|
111
|
+
}
|
112
|
+
// width of progress bar
|
113
|
+
p.width = parseFloat(p.width);
|
114
|
+
if( p.width < 10 ) {
|
115
|
+
p.width = 10;
|
116
|
+
} else if( p.width > 2400 ) {
|
117
|
+
p.width = 2400;
|
118
|
+
}
|
119
|
+
// height of progress bar
|
120
|
+
p.height = parseFloat(p.height);
|
121
|
+
if( p.height < 5 ) {
|
122
|
+
p.height = 5;
|
123
|
+
} else if( p.height > 500 ) {
|
124
|
+
p.height = 500;
|
125
|
+
}
|
126
|
+
// boolean parameters
|
127
|
+
var boolean_params = ["per_shw", "per_sd", "gradation"];
|
128
|
+
for( var i=0; i<boolean_params.length; i++ ) {
|
129
|
+
var k = boolean_params[i];
|
130
|
+
if( typeof(p[k]) == "string" ) {
|
131
|
+
if(p[k] == "true") {
|
132
|
+
p[k] = true;
|
133
|
+
} else if(p[k] == "false") {
|
134
|
+
p[k] = false;
|
135
|
+
}
|
136
|
+
} else if( typeof(p[k]) != "boolean" ) {
|
137
|
+
p[k] = dp[k];
|
138
|
+
}
|
139
|
+
}
|
140
|
+
// current value
|
141
|
+
p.val = p.to;
|
142
|
+
// current percentage
|
143
|
+
p.per = p.to * 100 / p.full;
|
144
|
+
/* -------------------------------
|
145
|
+
* save initialize parameters
|
146
|
+
* ----------------------------- */
|
147
|
+
var initp = {};
|
148
|
+
for( var k in p ) {
|
149
|
+
var v = p[k];
|
150
|
+
initp[k] = v;
|
151
|
+
}
|
152
|
+
//
|
153
|
+
this.p = p;
|
154
|
+
this.initp = initp;
|
155
|
+
this.nodes = nodes;
|
156
|
+
|
157
|
+
};
|
158
|
+
|
159
|
+
/* -------------------------------------------------------------------
|
160
|
+
* prototypes
|
161
|
+
* ----------------------------------------------------------------- */
|
162
|
+
var proto = html5jp.progress.prototype;
|
163
|
+
|
164
|
+
/* -------------------------------------------------------------------
|
165
|
+
* public methods
|
166
|
+
* ----------------------------------------------------------------- */
|
167
|
+
proto.get_val = function() {
|
168
|
+
return this.p.val;
|
169
|
+
};
|
170
|
+
|
171
|
+
proto.get_per = function() {
|
172
|
+
return parseInt( this.p.per * Math.pow(10, this.p.nd) ) / Math.pow(10, this.p.nd);
|
173
|
+
};
|
174
|
+
|
175
|
+
proto.set_val = function(val) {
|
176
|
+
val = parseFloat(val);
|
177
|
+
var current = this.get_val();
|
178
|
+
if(current != val) {
|
179
|
+
this.incr( val - current );
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
183
|
+
proto.set_param = function(k, v) {
|
184
|
+
if( typeof(k) == "undefined" || ! k ) { return; }
|
185
|
+
if( typeof(this.p[k]) == "undefined" ) { return; }
|
186
|
+
if( ! /^(animation|nd)$/.test(k) ) { return; }
|
187
|
+
if( typeof(v) == "undefined" || v == null ) { return; }
|
188
|
+
// animation speed
|
189
|
+
if(k == "animation") {
|
190
|
+
v = parseFloat(v);
|
191
|
+
if( v < 0 ) {
|
192
|
+
v = 0;
|
193
|
+
} else if( v > 10 ) {
|
194
|
+
v = 10;
|
195
|
+
}
|
196
|
+
// number of decimals
|
197
|
+
} else if(k == "nd") {
|
198
|
+
v = parseFloat(v);
|
199
|
+
if( v < 0 ) {
|
200
|
+
v = 0;
|
201
|
+
} else if( v > 8 ) {
|
202
|
+
v = 8;
|
203
|
+
}
|
204
|
+
}
|
205
|
+
//
|
206
|
+
this.p[k] = v;
|
207
|
+
};
|
208
|
+
|
209
|
+
proto.incr = function(num) {
|
210
|
+
if( ! num ) { return; }
|
211
|
+
num = parseFloat(num);
|
212
|
+
if(num == 0) { return; }
|
213
|
+
this.p.from = this.p.val;
|
214
|
+
this.p.val += num;
|
215
|
+
if(this.p.val < 0) {
|
216
|
+
this.p.val = 0;
|
217
|
+
} else if(this.p.val > this.p.full) {
|
218
|
+
this.p.val = this.p.full;
|
219
|
+
}
|
220
|
+
this.p.to = this.p.val;
|
221
|
+
this.p.per = this._set_per();
|
222
|
+
this._draw_bar();
|
223
|
+
return this.p.val;
|
224
|
+
};
|
225
|
+
|
226
|
+
proto.decr = function(num) {
|
227
|
+
if( ! num ) { return; }
|
228
|
+
num = parseFloat(num);
|
229
|
+
if(num == 0) { return; }
|
230
|
+
this.p.from = this.p.val;
|
231
|
+
this.p.val -= num;
|
232
|
+
if(this.p.val < 0) {
|
233
|
+
this.p.val = 0;
|
234
|
+
} else if(this.p.val > this.p.full) {
|
235
|
+
this.p.val = this.p.full;
|
236
|
+
}
|
237
|
+
this.p.to = this.p.val;
|
238
|
+
this.p.per = this._set_per();
|
239
|
+
this._draw_bar();
|
240
|
+
return this.p.val;
|
241
|
+
};
|
242
|
+
|
243
|
+
proto.draw = function() {
|
244
|
+
var p = this.p;
|
245
|
+
var nodes = this.nodes;
|
246
|
+
var pnode = nodes.parent;
|
247
|
+
// clear child nodes
|
248
|
+
this._clear();
|
249
|
+
// create div element for the frame
|
250
|
+
nodes.frm = this._create_frame_div_node();
|
251
|
+
pnode.appendChild(nodes.frm);
|
252
|
+
// create div element for the bar
|
253
|
+
nodes.bar = this._create_bar_div_node();
|
254
|
+
nodes.frm.appendChild(nodes.bar);
|
255
|
+
// create div element for the percentage display box
|
256
|
+
if(p.per_shw == true) {
|
257
|
+
nodes.per = this._create_per_div_node();
|
258
|
+
this._draw_per(50);
|
259
|
+
var per_size = this._get_box_size(nodes.per);
|
260
|
+
// define a position of the percentage display box
|
261
|
+
p.per_left = ( ( p.width + parseInt(p.bar_bdw) * 2 ) / 2 ) - ( per_size.w / 2);
|
262
|
+
p.per_top = ( ( p.height + parseInt(p.bar_bdw) * 2 ) / 2 ) - ( per_size.h / 2);
|
263
|
+
nodes.per.style.left = p.per_left + "px";
|
264
|
+
nodes.per.style.top = p.per_top + "px";
|
265
|
+
// create div element for the percentage shadow display box
|
266
|
+
if(p.per_sd == true) {
|
267
|
+
this._create_per_shadow();
|
268
|
+
}
|
269
|
+
nodes.frm.appendChild(nodes.per);
|
270
|
+
}
|
271
|
+
// draw the bar
|
272
|
+
this._draw_bar();
|
273
|
+
};
|
274
|
+
|
275
|
+
proto.reset = function() {
|
276
|
+
for( var k in this.initp ) {
|
277
|
+
var v = this.initp[k];
|
278
|
+
this.p[k] = v;
|
279
|
+
}
|
280
|
+
this.draw();
|
281
|
+
};
|
282
|
+
|
283
|
+
/* -------------------------------------------------------------------
|
284
|
+
* private methods
|
285
|
+
* ----------------------------------------------------------------- */
|
286
|
+
|
287
|
+
proto._create_per_shadow = function() {
|
288
|
+
var p = this.p;
|
289
|
+
if(p.per_shw != true) { return ;}
|
290
|
+
var nodes = this.nodes;
|
291
|
+
nodes.persd = [];
|
292
|
+
var dif = [ [ 0, 1], [ 0, -1], [ 1, 0], [ 1, 1], [ 1, -1], [-1, 0], [-1, 1], [-1, -1] ];
|
293
|
+
for(var j=0; j<8; j++) {
|
294
|
+
var sd = nodes.per.cloneNode(true);
|
295
|
+
sd.style.margin = "0px";
|
296
|
+
sd.style.padding = "0px";
|
297
|
+
sd.style.position = "absolute";
|
298
|
+
sd.style.color = p.per_sdc;
|
299
|
+
sd.style.fontFamily = p.per_ftf;
|
300
|
+
sd.style.fontSize = p.per_fts;
|
301
|
+
sd.style.left = (p.per_left + dif[j][0]) + "px";
|
302
|
+
sd.style.top = (p.per_top + dif[j][1]) + "px";
|
303
|
+
nodes.frm.appendChild(sd);
|
304
|
+
nodes.persd.push(sd);
|
305
|
+
}
|
306
|
+
};
|
307
|
+
|
308
|
+
proto._create_per_div_node = function() {
|
309
|
+
var p = this.p;
|
310
|
+
if(p.per_shw != true) { return ;}
|
311
|
+
var el = this._create_div_node();
|
312
|
+
el.style.position = "absolute";
|
313
|
+
el.style.color = p.per_ftc;
|
314
|
+
el.style.fontFamily = p.per_ftf;
|
315
|
+
el.style.fontSize = p.per_fts;
|
316
|
+
return el;
|
317
|
+
};
|
318
|
+
|
319
|
+
proto._create_bar_div_node = function() {
|
320
|
+
var p = this.p;
|
321
|
+
var el = this._create_div_node();
|
322
|
+
el.style.borderWidth = p.bar_bdw;
|
323
|
+
el.style.borderStyle = "solid";
|
324
|
+
var w = p.width;
|
325
|
+
var h = p.height;
|
326
|
+
if(document.uniqueID && document.compatMode == "BackCompat") {
|
327
|
+
w += ( parseInt(p.bar_bdw) * 2 );
|
328
|
+
h += ( parseInt(p.bar_bdw) * 2 );
|
329
|
+
}
|
330
|
+
el.style.width = w + "px";
|
331
|
+
el.style.height = h + "px";
|
332
|
+
el.style.position = "absolute";
|
333
|
+
el.style.left = "-" + p.width + "px";
|
334
|
+
el.style.top = "0px";
|
335
|
+
el.style.fontSize = "1px";
|
336
|
+
// calculate border color of the bar
|
337
|
+
var bar_rgb = this._conv_color_to_rgb(p.bar_bgc);
|
338
|
+
var bar_border_rgb1 = this._lighten_rgb(bar_rgb, 0.25);
|
339
|
+
var bar_border_rgb2 = this._lighten_rgb(bar_rgb, -0.25);
|
340
|
+
var bar_border_color1 = this._conv_rgb_to_css(bar_border_rgb1);
|
341
|
+
var bar_border_color2 = this._conv_rgb_to_css(bar_border_rgb2);
|
342
|
+
if(p.bar_bdtc == null) {
|
343
|
+
el.style.borderTopColor = bar_border_color1;
|
344
|
+
} else {
|
345
|
+
el.style.borderTopColor = p.bar_bdtc;
|
346
|
+
}
|
347
|
+
if(p.bar_bdrc == null) {
|
348
|
+
el.style.borderRightColor = bar_border_color2; // borderRightColor
|
349
|
+
} else {
|
350
|
+
el.style.borderRightColor = p.bar_bdrc;
|
351
|
+
}
|
352
|
+
if(p.bar_bdbc == null) {
|
353
|
+
el.style.borderBottomColor = bar_border_color2; // borderBottomColor
|
354
|
+
} else {
|
355
|
+
el.style.borderBottomColor = p.bar_bdbc;
|
356
|
+
}
|
357
|
+
if(p.bar_bdlc == null) {
|
358
|
+
el.style.borderLeftColor = bar_border_color1; // borderLeftColor
|
359
|
+
} else {
|
360
|
+
el.style.borderLeftColor = p.bar_bdlc;
|
361
|
+
}
|
362
|
+
//gradation
|
363
|
+
if(p.gradation == true) {
|
364
|
+
var rgb = this._conv_color_to_rgb(p.bar_bgc);
|
365
|
+
var rgb1 = this._lighten_rgb(rgb, -0.15);
|
366
|
+
var rgb2 = this._lighten_rgb(rgb, 0.15);
|
367
|
+
var canvas = document.createElement("CANVAS");
|
368
|
+
if ( canvas && canvas.getContext ) {
|
369
|
+
var color1 = this._conv_rgb_to_css(rgb1);
|
370
|
+
var color2 = this._conv_rgb_to_css(rgb2);
|
371
|
+
// draw by CANVAS
|
372
|
+
var ctx = canvas.getContext('2d');
|
373
|
+
canvas.style.margin = "0px";
|
374
|
+
canvas.style.padding = "0px";
|
375
|
+
canvas.width = w;
|
376
|
+
canvas.height = h;
|
377
|
+
el.appendChild(canvas);
|
378
|
+
ctx.beginPath();
|
379
|
+
var grad = ctx.createLinearGradient(0, 0, 0, h);
|
380
|
+
grad.addColorStop(0, color2);
|
381
|
+
grad.addColorStop(0.4, p.bar_bgc);
|
382
|
+
grad.addColorStop(1, color1);
|
383
|
+
ctx.fillStyle = grad;
|
384
|
+
ctx.rect(0, 0, w, h);
|
385
|
+
ctx.fill();
|
386
|
+
} else if(document.uniqueID) {
|
387
|
+
// for Internet Explorer
|
388
|
+
var color1 = this._conv_rgb_to_css_hex(rgb1);
|
389
|
+
var color2 = this._conv_rgb_to_css_hex(rgb2);
|
390
|
+
el.style.filter = "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=" + color2 + ",EndColorStr=" + color1 + ")";
|
391
|
+
} else {
|
392
|
+
el.style.backgroundColor = p.bar_bgc;
|
393
|
+
}
|
394
|
+
} else {
|
395
|
+
el.style.backgroundColor = p.bar_bgc;
|
396
|
+
}
|
397
|
+
//
|
398
|
+
return el;
|
399
|
+
};
|
400
|
+
|
401
|
+
proto._create_frame_div_node = function() {
|
402
|
+
var p = this.p;
|
403
|
+
var el = this._create_div_node();
|
404
|
+
var w = p.width + parseInt(p.bar_bdw) * 2;
|
405
|
+
var h = p.height + parseInt(p.bar_bdw) * 2;
|
406
|
+
if(document.uniqueID && document.compatMode == "BackCompat") {
|
407
|
+
w += parseInt(p.frm_bdw) * 2;
|
408
|
+
h += parseInt(p.frm_bdw) * 2;
|
409
|
+
}
|
410
|
+
el.style.width = w + "px";
|
411
|
+
el.style.height = h + "px";
|
412
|
+
el.style.position = "relative";
|
413
|
+
el.style.overflow = "hidden";
|
414
|
+
el.style.borderWidth = p.frm_bdw;
|
415
|
+
el.style.borderStyle = "solid";
|
416
|
+
// calculate border color of the frame
|
417
|
+
var frm_rgb = this._conv_color_to_rgb(p.frm_bgc);
|
418
|
+
var frm_border_rgb = this._lighten_rgb(frm_rgb, -0.25);
|
419
|
+
var frm_border_color = this._conv_rgb_to_css(frm_border_rgb);
|
420
|
+
if(p.frm_bdtc == null) {
|
421
|
+
el.style.borderTopColor = frm_border_color;
|
422
|
+
} else {
|
423
|
+
el.style.borderTopColor = p.frm_bdtc;
|
424
|
+
}
|
425
|
+
if(p.frm_bdrc == null) {
|
426
|
+
el.style.borderRightColor = frm_border_color;
|
427
|
+
} else {
|
428
|
+
el.style.borderRightColor = p.frm_bdrc;
|
429
|
+
}
|
430
|
+
if(p.frm_bdbc == null) {
|
431
|
+
el.style.borderBottomColor = frm_border_color;
|
432
|
+
} else {
|
433
|
+
el.style.borderBottomColor = p.frm_bdbc;
|
434
|
+
}
|
435
|
+
if(p.frm_bdlc == null) {
|
436
|
+
el.style.borderLeftColor = frm_border_color;
|
437
|
+
} else {
|
438
|
+
el.style.borderLeftColor = p.frm_bdlc;
|
439
|
+
}
|
440
|
+
//gradation
|
441
|
+
if(p.gradation == true) {
|
442
|
+
var rgb = this._conv_color_to_rgb(p.frm_bgc);
|
443
|
+
var rgb1 = this._lighten_rgb(rgb, 0.15);
|
444
|
+
var rgb2 = this._lighten_rgb(rgb, -0.15);
|
445
|
+
var canvas = document.createElement("CANVAS");
|
446
|
+
if ( canvas && canvas.getContext ) {
|
447
|
+
var color1 = this._conv_rgb_to_css(rgb1);
|
448
|
+
var color2 = this._conv_rgb_to_css(rgb2);
|
449
|
+
// draw by CANVAS
|
450
|
+
var ctx = canvas.getContext('2d');
|
451
|
+
canvas.style.margin = "0px";
|
452
|
+
canvas.style.padding = "0px";
|
453
|
+
canvas.width = w;
|
454
|
+
canvas.height = h;
|
455
|
+
el.appendChild(canvas);
|
456
|
+
ctx.beginPath();
|
457
|
+
var grad = ctx.createLinearGradient(0, 0, 0, h);
|
458
|
+
grad.addColorStop(0, color2);
|
459
|
+
grad.addColorStop(0.4, p.frm_bgc);
|
460
|
+
grad.addColorStop(1, color1);
|
461
|
+
ctx.fillStyle = grad;
|
462
|
+
ctx.rect(0, 0, w, h);
|
463
|
+
ctx.fill();
|
464
|
+
} else if(document.uniqueID) {
|
465
|
+
// draw by VML for Internet Explorer
|
466
|
+
var color1 = this._conv_rgb_to_css_hex(rgb1);
|
467
|
+
var color2 = this._conv_rgb_to_css_hex(rgb2);
|
468
|
+
el.style.filter = "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=" + color2 + ",EndColorStr=" + color1 + ")";
|
469
|
+
} else {
|
470
|
+
el.style.backgroundColor = p.frm_bgc;
|
471
|
+
}
|
472
|
+
} else {
|
473
|
+
el.style.backgroundColor = p.frm_bgc;
|
474
|
+
}
|
475
|
+
//
|
476
|
+
return el;
|
477
|
+
}
|
478
|
+
|
479
|
+
proto._create_div_node = function() {
|
480
|
+
var node = document.createElement("DIV");
|
481
|
+
node.style.margin = "0px";
|
482
|
+
node.style.padding = "0px";
|
483
|
+
return node;
|
484
|
+
};
|
485
|
+
|
486
|
+
proto._clear = function() {
|
487
|
+
var pnode = this.nodes.parent;
|
488
|
+
while (pnode.firstChild) {
|
489
|
+
pnode.removeChild(pnode.firstChild);
|
490
|
+
}
|
491
|
+
};
|
492
|
+
|
493
|
+
proto._draw_per = function(per) {
|
494
|
+
if(this.p.per_shw != true) { return ;}
|
495
|
+
if( ! per ) {
|
496
|
+
per = this.p.per;
|
497
|
+
}
|
498
|
+
var nd = this.p.nd;
|
499
|
+
per = parseInt( per * Math.pow(10, nd) ) / Math.pow(10, nd);
|
500
|
+
var cap = per + "%";
|
501
|
+
if( this.nodes.persd ) {
|
502
|
+
for( var i=0; i<this.nodes.persd.length; i++ ) {
|
503
|
+
this.nodes.persd[i].innerHTML = cap;
|
504
|
+
}
|
505
|
+
}
|
506
|
+
this.nodes.per.innerHTML = cap;
|
507
|
+
};
|
508
|
+
|
509
|
+
proto._set_per = function() {
|
510
|
+
this.p.per = this._calc_per(this.p.val);
|
511
|
+
this._draw_per();
|
512
|
+
return this.p.per;
|
513
|
+
};
|
514
|
+
|
515
|
+
proto._calc_per = function(val) {
|
516
|
+
if( isNaN(val) ) { val = 0; }
|
517
|
+
var ful = this.p.full;
|
518
|
+
var per = val * 100 / ful;
|
519
|
+
if( per > 100 ) { per = 100; }
|
520
|
+
return per;
|
521
|
+
};
|
522
|
+
|
523
|
+
proto._draw_bar_static = function(per) {
|
524
|
+
this.nodes.bar.style.left = "-" + ( this.p.width * (100 - per) / 100 ) + "px";
|
525
|
+
this._draw_per(per);
|
526
|
+
}
|
527
|
+
|
528
|
+
proto._draw_bar = function() {
|
529
|
+
var speed = this.p.animation;
|
530
|
+
var from = this.p.from;
|
531
|
+
var to = this.p.to;
|
532
|
+
if( speed <= 0 || speed > 10 || from == to ) {
|
533
|
+
this._draw_bar_static(this.p.per);
|
534
|
+
} else {
|
535
|
+
var per1 = this._calc_per(this.p.from);
|
536
|
+
var per2 = this.p.per;
|
537
|
+
var _this = this;
|
538
|
+
var fn = function() {
|
539
|
+
var dif = 0.1 * _this.p.animation;
|
540
|
+
if(per1 < per2) {
|
541
|
+
per1 += dif;
|
542
|
+
if(per1 > per2) {
|
543
|
+
per1 = per2;
|
544
|
+
}
|
545
|
+
} else {
|
546
|
+
per1 -= dif;
|
547
|
+
if(per1 < per2) {
|
548
|
+
per1 = per2;
|
549
|
+
}
|
550
|
+
}
|
551
|
+
_this._draw_bar_static(per1);
|
552
|
+
if(per1 != per2) {
|
553
|
+
setTimeout(fn, 10 );
|
554
|
+
}
|
555
|
+
}
|
556
|
+
fn();
|
557
|
+
}
|
558
|
+
};
|
559
|
+
|
560
|
+
proto._get_box_size = function(el) {
|
561
|
+
var visible = el.style.visible;
|
562
|
+
el.style.visible = "hidden";
|
563
|
+
this.nodes.frm.appendChild( el );
|
564
|
+
var o = {
|
565
|
+
w: el.offsetWidth,
|
566
|
+
h: el.offsetHeight
|
567
|
+
};
|
568
|
+
this.nodes.frm.removeChild(el);
|
569
|
+
el.style.visible = visible;
|
570
|
+
return o;
|
571
|
+
}
|
572
|
+
|
573
|
+
proto._conv_rgb_to_css = function(rgb) {
|
574
|
+
if( typeof(rgb.a) == "undefined" ) {
|
575
|
+
return "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")";
|
576
|
+
} else {
|
577
|
+
return "rgba(" + rgb.r + "," + rgb.g + "," + rgb.b + "," + rgb.a + ")";
|
578
|
+
}
|
579
|
+
};
|
580
|
+
|
581
|
+
proto._conv_rgb_to_css_hex = function(rgb) {
|
582
|
+
var r = rgb.r.toString(16);
|
583
|
+
var g = rgb.g.toString(16);
|
584
|
+
var b = rgb.b.toString(16);
|
585
|
+
if( r.length == 1 ) { r = "0" + r; }
|
586
|
+
if( g.length == 1 ) { g = "0" + g; }
|
587
|
+
if( b.length == 1 ) { b = "0" + b; }
|
588
|
+
return "#" + r + g + b;
|
589
|
+
};
|
590
|
+
|
591
|
+
proto._lighten_rgb = function(rgb, gain_rate) {
|
592
|
+
// convert rgb to yuv
|
593
|
+
var yuv = this._rgb_to_yuv(rgb);
|
594
|
+
// compute the luma (Y') information
|
595
|
+
var luma = yuv.y + gain_rate * 256;
|
596
|
+
yuv.y = luma;
|
597
|
+
return this._yuv_to_rgb(yuv);
|
598
|
+
};
|
599
|
+
|
600
|
+
proto._conv_color_to_rgb = function(color) {
|
601
|
+
/* color name mapping */
|
602
|
+
var color_name_map = {
|
603
|
+
aliceblue : "#F0F8FF",
|
604
|
+
antiquewhite : "#FAEBD7",
|
605
|
+
aqua : "#00FFFF",
|
606
|
+
aquamarine : "#7FFFD4",
|
607
|
+
azure : "#F0FFFF",
|
608
|
+
beige : "#F5F5DC",
|
609
|
+
bisque : "#FFE4C4",
|
610
|
+
black : "#000000",
|
611
|
+
blanchedalmond : "#FFEBCD",
|
612
|
+
blue : "#0000FF",
|
613
|
+
blueviolet : "#8A2BE2",
|
614
|
+
brass : "#B5A642",
|
615
|
+
brown : "#A52A2A",
|
616
|
+
burlywood : "#DEB887",
|
617
|
+
cadetblue : "#5F9EA0",
|
618
|
+
chartreuse : "#7FFF00",
|
619
|
+
chocolate : "#D2691E",
|
620
|
+
coolcopper : "#D98719",
|
621
|
+
copper : "#BF00DF",
|
622
|
+
coral : "#FF7F50",
|
623
|
+
cornflower : "#BFEFDF",
|
624
|
+
cornflowerblue : "#6495ED",
|
625
|
+
cornsilk : "#FFF8DC",
|
626
|
+
crimson : "#DC143C",
|
627
|
+
cyan : "#00FFFF",
|
628
|
+
darkblue : "#00008B",
|
629
|
+
darkbrown : "#DA0B00",
|
630
|
+
darkcyan : "#008B8B",
|
631
|
+
darkgoldenrod : "#B8860B",
|
632
|
+
darkgray : "#A9A9A9",
|
633
|
+
darkgreen : "#006400",
|
634
|
+
darkkhaki : "#BDB76B",
|
635
|
+
darkmagenta : "#8B008B",
|
636
|
+
darkolivegreen : "#556B2F",
|
637
|
+
darkorange : "#FF8C00",
|
638
|
+
darkorchid : "#9932CC",
|
639
|
+
darkred : "#8B0000",
|
640
|
+
darksalmon : "#E9967A",
|
641
|
+
darkseagreen : "#8FBC8F",
|
642
|
+
darkslateblue : "#483D8B",
|
643
|
+
darkslategray : "#2F4F4F",
|
644
|
+
darkturquoise : "#00CED1",
|
645
|
+
darkviolet : "#9400D3",
|
646
|
+
deeppink : "#FF1493",
|
647
|
+
deepskyblue : "#00BFFF",
|
648
|
+
dimgray : "#696969",
|
649
|
+
dodgerblue : "#1E90FF",
|
650
|
+
feldsper : "#FED0E0",
|
651
|
+
firebrick : "#B22222",
|
652
|
+
floralwhite : "#FFFAF0",
|
653
|
+
forestgreen : "#228B22",
|
654
|
+
fuchsia : "#FF00FF",
|
655
|
+
gainsboro : "#DCDCDC",
|
656
|
+
ghostwhite : "#F8F8FF",
|
657
|
+
gold : "#FFD700",
|
658
|
+
goldenrod : "#DAA520",
|
659
|
+
gray : "#808080",
|
660
|
+
green : "#008000",
|
661
|
+
greenyellow : "#ADFF2F",
|
662
|
+
honeydew : "#F0FFF0",
|
663
|
+
hotpink : "#FF69B4",
|
664
|
+
indianred : "#CD5C5C",
|
665
|
+
indigo : "#4B0082",
|
666
|
+
ivory : "#FFFFF0",
|
667
|
+
khaki : "#F0E68C",
|
668
|
+
lavender : "#E6E6FA",
|
669
|
+
lavenderblush : "#FFF0F5",
|
670
|
+
lawngreen : "#7CFC00",
|
671
|
+
lemonchiffon : "#FFFACD",
|
672
|
+
lightblue : "#ADD8E6",
|
673
|
+
lightcoral : "#F08080",
|
674
|
+
lightcyan : "#E0FFFF",
|
675
|
+
lightgoldenrodyellow : "#FAFAD2",
|
676
|
+
lightgreen : "#90EE90",
|
677
|
+
lightgrey : "#D3D3D3",
|
678
|
+
lightpink : "#FFB6C1",
|
679
|
+
lightsalmon : "#FFA07A",
|
680
|
+
lightseagreen : "#20B2AA",
|
681
|
+
lightskyblue : "#87CEFA",
|
682
|
+
lightslategray : "#778899",
|
683
|
+
lightsteelblue : "#B0C4DE",
|
684
|
+
lightyellow : "#FFFFE0",
|
685
|
+
lime : "#00FF00",
|
686
|
+
limegreen : "#32CD32",
|
687
|
+
linen : "#FAF0E6",
|
688
|
+
magenta : "#FF00FF",
|
689
|
+
maroon : "#800000",
|
690
|
+
mediumaquamarine : "#66CDAA",
|
691
|
+
mediumblue : "#0000CD",
|
692
|
+
mediumorchid : "#BA55D3",
|
693
|
+
mediumpurple : "#9370DB",
|
694
|
+
mediumseagreen : "#3CB371",
|
695
|
+
mediumslateblue : "#7B68EE",
|
696
|
+
mediumspringgreen : "#00FA9A",
|
697
|
+
mediumturquoise : "#48D1CC",
|
698
|
+
mediumvioletred : "#C71585",
|
699
|
+
midnightblue : "#191970",
|
700
|
+
mintcream : "#F5FFFA",
|
701
|
+
mistyrose : "#FFE4E1",
|
702
|
+
moccasin : "#FFE4B5",
|
703
|
+
navajowhite : "#FFDEAD",
|
704
|
+
navy : "#000080",
|
705
|
+
oldlace : "#FDF5E6",
|
706
|
+
olive : "#808000",
|
707
|
+
olivedrab : "#6B8E23",
|
708
|
+
orange : "#FFA500",
|
709
|
+
orangered : "#FF4500",
|
710
|
+
orchid : "#DA70D6",
|
711
|
+
palegoldenrod : "#EEE8AA",
|
712
|
+
palegreen : "#98FB98",
|
713
|
+
paleturquoise : "#AFEEEE",
|
714
|
+
palevioletred : "#DB7093",
|
715
|
+
papayawhip : "#FFEFD5",
|
716
|
+
peachpuff : "#FFDAB9",
|
717
|
+
peru : "#CD853F",
|
718
|
+
pink : "#FFC0CB",
|
719
|
+
plum : "#DDA0DD",
|
720
|
+
powderblue : "#B0E0E6",
|
721
|
+
purple : "#800080",
|
722
|
+
red : "#FF0000",
|
723
|
+
richblue : "#0CB0E0",
|
724
|
+
rosybrown : "#BC8F8F",
|
725
|
+
royalblue : "#4169E1",
|
726
|
+
saddlebrown : "#8B4513",
|
727
|
+
salmon : "#FA8072",
|
728
|
+
sandybrown : "#F4A460",
|
729
|
+
seagreen : "#2E8B57",
|
730
|
+
seashell : "#FFF5EE",
|
731
|
+
sienna : "#A0522D",
|
732
|
+
silver : "#C0C0C0",
|
733
|
+
skyblue : "#87CEEB",
|
734
|
+
slateblue : "#6A5ACD",
|
735
|
+
slategray : "#708090",
|
736
|
+
snow : "#FFFAFA",
|
737
|
+
springgreen : "#00FF7F",
|
738
|
+
steelblue : "#4682B4",
|
739
|
+
tan : "#D2B48C",
|
740
|
+
teal : "#008080",
|
741
|
+
thistle : "#D8BFD8",
|
742
|
+
tomato : "#FF6347",
|
743
|
+
turquoise : "#40E0D0",
|
744
|
+
violet : "#EE82EE",
|
745
|
+
wheat : "#F5DEB3",
|
746
|
+
white : "#FFFFFF",
|
747
|
+
whitesmoke : "#F5F5F5",
|
748
|
+
yellow : "#FFFF00",
|
749
|
+
yellowgreen : "#9ACD32"
|
750
|
+
};
|
751
|
+
if( /^[a-zA-Z]+$/.test(color) && color_name_map[color] ) {
|
752
|
+
color = color_name_map[color];
|
753
|
+
}
|
754
|
+
var rgb = {};
|
755
|
+
var m;
|
756
|
+
if( m = color.match( /rgb\(\s*(\d+)\,\s*(\d+)\,\s*(\d+)\s*\)/ ) ) {
|
757
|
+
rgb.r = parseInt(m[1], 10);
|
758
|
+
rgb.g = parseInt(m[2], 10);
|
759
|
+
rgb.b = parseInt(m[3], 10);
|
760
|
+
rgb.a = 1;
|
761
|
+
} else if( m = color.match( /rgba\(\s*(\d+)\,\s*(\d+)\,\s*(\d+),\s*(\d+)\s*\)/ ) ) {
|
762
|
+
rgb.r = parseInt(m[1], 10);
|
763
|
+
rgb.g = parseInt(m[2], 10);
|
764
|
+
rgb.b = parseInt(m[3], 10);
|
765
|
+
rgb.a = parseInt(m[4], 10);
|
766
|
+
} else if( m = color.match( /\#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/ ) ) {
|
767
|
+
rgb.r = parseInt(m[1], 16);
|
768
|
+
rgb.g = parseInt(m[2], 16);
|
769
|
+
rgb.b = parseInt(m[3], 16);
|
770
|
+
rgb.a = 1;
|
771
|
+
} else if( m = color.match( /\#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/ ) ) {
|
772
|
+
rgb.r = parseInt(m[1]+m[1], 16);
|
773
|
+
rgb.g = parseInt(m[2]+m[2], 16);
|
774
|
+
rgb.b = parseInt(m[3]+m[3], 16);
|
775
|
+
rgb.a = 1;
|
776
|
+
} else if( color == "transparent" ) {
|
777
|
+
rgb.r = 255;
|
778
|
+
rgb.g = 255;
|
779
|
+
rgb.b = 255;
|
780
|
+
rgb.a = 1;
|
781
|
+
} else {
|
782
|
+
return null;
|
783
|
+
}
|
784
|
+
/* for Safari */
|
785
|
+
if( rgb.r == 0 && rgb.g == 0 && rgb.b == 0 && rgb.a == 0 ) {
|
786
|
+
rgb.r = 255;
|
787
|
+
rgb.g = 255;
|
788
|
+
rgb.b = 255;
|
789
|
+
rgb.a = 1;
|
790
|
+
}
|
791
|
+
/* */
|
792
|
+
return rgb;
|
793
|
+
};
|
794
|
+
|
795
|
+
proto._rgb_to_yuv = function(rgb) {
|
796
|
+
var yuv = {
|
797
|
+
y: parseInt( 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b ),
|
798
|
+
u: parseInt( -0.169 * rgb.r - 0.3316 * rgb.g + 0.500 * rgb.b ),
|
799
|
+
v: parseInt( 0.500 * rgb.r - 0.4186 * rgb.g - 0.0813 * rgb.b )
|
800
|
+
};
|
801
|
+
return yuv;
|
802
|
+
};
|
803
|
+
|
804
|
+
proto._yuv_to_rgb = function(yuv) {
|
805
|
+
var rgb = {
|
806
|
+
r: parseInt( yuv.y + 1.402 * yuv.v ),
|
807
|
+
g: parseInt( yuv.y - 0.714 * yuv.v - 0.344 * yuv.u ),
|
808
|
+
b: parseInt( yuv.y + 1.772 * yuv.u )
|
809
|
+
};
|
810
|
+
for( var k in rgb ) {
|
811
|
+
if(rgb[k] > 255) {
|
812
|
+
rgb[k] = 255;
|
813
|
+
} else if(rgb[k] < 0) {
|
814
|
+
rgb[k] = 0;
|
815
|
+
}
|
816
|
+
}
|
817
|
+
return rgb;
|
818
|
+
};
|
819
|
+
|
820
|
+
/* -------------------------------------------------------------------
|
821
|
+
* for static drawing by class attributes
|
822
|
+
* ----------------------------------------------------------------- */
|
823
|
+
|
824
|
+
_add_event_listener(window, "load", _static_init);
|
825
|
+
|
826
|
+
function _static_init() {
|
827
|
+
var elms = _get_elements_by_class_name(document, "html5jp-progress");
|
828
|
+
for( var i=0; i<elms.length; i++ ) {
|
829
|
+
var elm = elms.item(i);
|
830
|
+
if( ! /^DIV$/i.test(elm.nodeName) ) { continue; }
|
831
|
+
var id = elm.id;
|
832
|
+
if( ! id ) { continue; }
|
833
|
+
var p = {};
|
834
|
+
var m = elm.className.match(/\[([^\]]+)\]/);
|
835
|
+
if(m && m[1]) {
|
836
|
+
var parts = m[1].split(";");
|
837
|
+
for( var j=0; j<parts.length; j++ ) {
|
838
|
+
var pair = parts[j];
|
839
|
+
if(pair == "") { continue; }
|
840
|
+
var m2 = pair.match(/^([a-zA-Z0-9\-\_]+)\:([a-zA-Z0-9\-\_\#\(\)\,\.]+)$/);
|
841
|
+
if( ! m2 ) { continue; }
|
842
|
+
var k = m2[1];
|
843
|
+
var v = m2[2];
|
844
|
+
p[k] = v;
|
845
|
+
}
|
846
|
+
}
|
847
|
+
var o = new html5jp.progress(id, p);
|
848
|
+
o.draw();
|
849
|
+
}
|
850
|
+
}
|
851
|
+
|
852
|
+
function _add_event_listener(elm, type, func) {
|
853
|
+
if(! elm) { return false; }
|
854
|
+
if(elm.addEventListener) {
|
855
|
+
elm.addEventListener(type, func, false);
|
856
|
+
} else if(elm.attachEvent) {
|
857
|
+
elm['e'+type+func] = func;
|
858
|
+
elm[type+func] = function(){elm['e'+type+func]( window.event );}
|
859
|
+
elm.attachEvent( 'on'+type, elm[type+func] );
|
860
|
+
} else {
|
861
|
+
return false;
|
862
|
+
}
|
863
|
+
return true;
|
864
|
+
}
|
865
|
+
|
866
|
+
function _get_elements_by_class_name(element, classNames) {
|
867
|
+
if(element.getElementsByClassName) {
|
868
|
+
return element.getElementsByClassName(classNames);
|
869
|
+
}
|
870
|
+
/* split a string on spaces */
|
871
|
+
var split_a_string_on_spaces = function(string) {
|
872
|
+
string = string.replace(/^[\t\s]+/, "");
|
873
|
+
string = string.replace(/[\t\s]+$/, "");
|
874
|
+
var tokens = string.split(/[\t\s]+/);
|
875
|
+
return tokens;
|
876
|
+
};
|
877
|
+
var tokens = split_a_string_on_spaces(classNames);
|
878
|
+
var tn = tokens.length;
|
879
|
+
var nodes = element.all ? element.all : element.getElementsByTagName("*");
|
880
|
+
var n = nodes.length;
|
881
|
+
var array = new Array();
|
882
|
+
if( tn > 0 ) {
|
883
|
+
if( document.evaluate ) {
|
884
|
+
var contains = new Array();
|
885
|
+
for(var i=0; i<tn; i++) {
|
886
|
+
contains.push('contains(concat(" ",@class," "), " '+ tokens[i] + '")');
|
887
|
+
}
|
888
|
+
var xpathExpression = "/descendant::*[" + contains.join(" and ") + "]";
|
889
|
+
var iterator = document.evaluate(xpathExpression, element, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
890
|
+
var inum = iterator.snapshotLength;
|
891
|
+
for( var i=0; i<inum; i++ ) {
|
892
|
+
var elm = iterator.snapshotItem(i);
|
893
|
+
if( elm != element ) {
|
894
|
+
array.push(iterator.snapshotItem(i));
|
895
|
+
}
|
896
|
+
}
|
897
|
+
} else {
|
898
|
+
for(var i=0; i<n; i++) {
|
899
|
+
var elm = nodes.item(i);
|
900
|
+
if( elm.className == "" ) { continue; }
|
901
|
+
var class_list = split_a_string_on_spaces(elm.className);
|
902
|
+
var class_name = class_list.join(" ");
|
903
|
+
var f = true;
|
904
|
+
for(var j=0; j<tokens.length; j++) {
|
905
|
+
var re = new RegExp('(^|\\s)' + tokens[j] + '(\\s|$)')
|
906
|
+
if( ! re.test(class_name) ) {
|
907
|
+
f = false;
|
908
|
+
break;
|
909
|
+
}
|
910
|
+
}
|
911
|
+
if(f == true) {
|
912
|
+
array.push(elm);
|
913
|
+
}
|
914
|
+
}
|
915
|
+
}
|
916
|
+
}
|
917
|
+
/* add item(index) method to the array as if it behaves such as a NodeList interface. */
|
918
|
+
array.item = function(index) {
|
919
|
+
if(array[index]) {
|
920
|
+
return array[index];
|
921
|
+
} else {
|
922
|
+
return null;
|
923
|
+
}
|
924
|
+
};
|
925
|
+
//
|
926
|
+
return array;
|
927
|
+
}
|
928
|
+
|
929
|
+
})();
|