nyoibo 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
})();
|