├── .gitignore ├── Gemfile ├── widgets ├── text │ ├── text.coffee │ ├── text.html │ └── text.scss ├── clock │ ├── clock.html │ ├── clock.coffee │ └── clock.scss ├── iframe │ ├── iframe.html │ ├── iframe.scss │ └── iframe.coffee ├── image │ ├── image.html │ ├── image.coffee │ └── image.scss ├── list │ ├── list.coffee │ ├── list.html │ └── list.scss ├── temperature │ ├── config.rb │ ├── temperature.html │ ├── temperature.scss │ └── temperature.coffee ├── graph │ ├── graph.html │ ├── graph.coffee │ └── graph.scss ├── comments │ ├── comments.html │ ├── comments.coffee │ └── comments.scss ├── meter │ ├── meter.html │ ├── meter.coffee │ └── meter.scss └── number │ ├── number.html │ ├── number.coffee │ └── number.scss ├── dashboards ├── default.erb └── layout.erb ├── public ├── favicon.ico └── 404.html ├── assets ├── images │ ├── AppIcon29x29.png │ ├── AppIcon40x40.png │ ├── AppIcon60x60.png │ └── AppIcon76x76.png ├── fonts │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── javascripts │ ├── gridster │ │ └── jquery.leanModal.min.js │ ├── application.coffee │ ├── dashing.gridster.coffee │ ├── jquery.knob.js │ └── rickshaw-1.4.3.min.js └── stylesheets │ ├── jquery.gridster.css │ ├── application.scss │ └── font-awesome.css ├── CONTRIBUTING.md ├── config.ru ├── LICENSE ├── Gemfile.lock ├── dashboard.sh └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *DS_STORE 2 | history.yml 3 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'dashing' -------------------------------------------------------------------------------- /widgets/text/text.coffee: -------------------------------------------------------------------------------- 1 | class Dashing.Text extends Dashing.Widget 2 | -------------------------------------------------------------------------------- /dashboards/default.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title do %><%= params[:dashboard] %><% end %> -------------------------------------------------------------------------------- /widgets/clock/clock.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /widgets/iframe/iframe.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suda/dashing-mining-dashboard/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /widgets/image/image.html: -------------------------------------------------------------------------------- 1 |6 | 7 |
8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Before starting it's best to read more about [Dashing](http://shopify.github.io/dashing/#setup). 4 | 5 | If you want to help but don't know where to start, there's [a list of features to implement](https://github.com/suda/dashing-mining-dashboard#todo) which should help. 6 | 7 | Don't hesitate to create a [GitHub Issue](https://github.com/suda/dashing-mining-dashboard/issues) 8 | if you have any questions or suggestions. 9 | -------------------------------------------------------------------------------- /widgets/meter/meter.coffee: -------------------------------------------------------------------------------- 1 | class Dashing.Meter extends Dashing.Widget 2 | 3 | @accessor 'value', Dashing.AnimatedValue 4 | 5 | constructor: -> 6 | super 7 | @observe 'value', (value) -> 8 | $(@node).find(".meter").val(value).trigger('change') 9 | 10 | ready: -> 11 | meter = $(@node).find(".meter") 12 | meter.attr("data-bgcolor", meter.css("background-color")) 13 | meter.attr("data-fgcolor", meter.css("color")) 14 | meter.knob() 15 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | require 'dashing' 2 | 3 | configure do 4 | set :auth_token, ENV['AUTH_TOKEN'] 5 | set :protection, :except => :frame_options 6 | 7 | helpers do 8 | def protected! 9 | # Put any authentication code you want in here. 10 | # This method is run before accessing any resource. 11 | end 12 | end 13 | end 14 | 15 | map Sinatra::Application.assets_prefix do 16 | run Sinatra::Application.sprockets 17 | end 18 | 19 | run Sinatra::Application 20 | -------------------------------------------------------------------------------- /widgets/clock/clock.coffee: -------------------------------------------------------------------------------- 1 | class Dashing.Clock extends Dashing.Widget 2 | 3 | ready: -> 4 | setInterval(@startTime, 500) 5 | 6 | startTime: => 7 | today = new Date() 8 | 9 | h = today.getHours() 10 | m = today.getMinutes() 11 | s = today.getSeconds() 12 | m = @formatTime(m) 13 | s = @formatTime(s) 14 | @set('time', h + ":" + m + ":" + s) 15 | @set('date', today.toDateString()) 16 | 17 | formatTime: (i) -> 18 | if i < 10 then "0" + i else i -------------------------------------------------------------------------------- /widgets/clock/clock.scss: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------------------------------- 2 | // Sass declarations 3 | // ---------------------------------------------------------------------------- 4 | $background-color: #dc5945; 5 | 6 | // ---------------------------------------------------------------------------- 7 | // Widget-clock styles 8 | // ---------------------------------------------------------------------------- 9 | .widget-clock { 10 | 11 | background-color: $background-color; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /widgets/image/image.scss: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------------------------------- 2 | // Sass declarations 3 | // ---------------------------------------------------------------------------- 4 | $background-color: #4b4b4b; 5 | 6 | // ---------------------------------------------------------------------------- 7 | // Widget-image styles 8 | // ---------------------------------------------------------------------------- 9 | .widget-image { 10 | 11 | background-color: $background-color; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /widgets/list/list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |You may have mistyped the address or the page may have moved.
24 |
42 | * k.o.call(this);
43 | *
44 | */
45 | k.o = function () {
46 | var s = this;
47 |
48 | this.o = null; // array of options
49 | this.$ = null; // jQuery wrapped element
50 | this.i = null; // mixed HTMLInputElement or array of HTMLInputElement
51 | this.g = null; // 2D graphics context for 'pre-rendering'
52 | this.v = null; // value ; mixed array or integer
53 | this.cv = null; // change value ; not commited value
54 | this.x = 0; // canvas x position
55 | this.y = 0; // canvas y position
56 | this.$c = null; // jQuery canvas element
57 | this.c = null; // rendered canvas context
58 | this.t = 0; // touches index
59 | this.isInit = false;
60 | this.fgColor = null; // main color
61 | this.pColor = null; // previous color
62 | this.dH = null; // draw hook
63 | this.cH = null; // change hook
64 | this.eH = null; // cancel hook
65 | this.rH = null; // release hook
66 |
67 | this.run = function () {
68 | var cf = function (e, conf) {
69 | var k;
70 | for (k in conf) {
71 | s.o[k] = conf[k];
72 | }
73 | s.init();
74 | s._configure()
75 | ._draw();
76 | };
77 |
78 | if(this.$.data('kontroled')) return;
79 | this.$.data('kontroled', true);
80 |
81 | this.extend();
82 | this.o = $.extend(
83 | {
84 | // Config
85 | min : this.$.data('min') || 0,
86 | max : this.$.data('max') || 100,
87 | stopper : true,
88 | readOnly : this.$.data('readonly'),
89 |
90 | // UI
91 | cursor : (this.$.data('cursor') === true && 30)
92 | || this.$.data('cursor')
93 | || 0,
94 | thickness : this.$.data('thickness') || 0.35,
95 | width : this.$.data('width') || 200,
96 | height : this.$.data('height') || 200,
97 | displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'),
98 | displayPrevious : this.$.data('displayprevious'),
99 | fgColor : this.$.data('fgcolor') || '#87CEEB',
100 | inline : false,
101 |
102 | // Hooks
103 | draw : null, // function () {}
104 | change : null, // function (value) {}
105 | cancel : null, // function () {}
106 | release : null // function (value) {}
107 | }, this.o
108 | );
109 |
110 | // routing value
111 | if(this.$.is('fieldset')) {
112 |
113 | // fieldset = array of integer
114 | this.v = {};
115 | this.i = this.$.find('input')
116 | this.i.each(function(k) {
117 | var $this = $(this);
118 | s.i[k] = $this;
119 | s.v[k] = $this.val();
120 |
121 | $this.bind(
122 | 'change'
123 | , function () {
124 | var val = {};
125 | val[k] = $this.val();
126 | s.val(val);
127 | }
128 | );
129 | });
130 | this.$.find('legend').remove();
131 |
132 | } else {
133 | // input = integer
134 | this.i = this.$;
135 | this.v = this.$.val();
136 | (this.v == '') && (this.v = this.o.min);
137 |
138 | this.$.bind(
139 | 'change'
140 | , function () {
141 | s.val(s.$.val());
142 | }
143 | );
144 | }
145 |
146 | (!this.o.displayInput) && this.$.hide();
147 |
148 | this.$c = $('');
151 | this.c = this.$c[0].getContext("2d");
152 |
153 | this.$
154 | .wrap($(''))
157 | .before(this.$c);
158 |
159 | if (this.v instanceof Object) {
160 | this.cv = {};
161 | this.copy(this.v, this.cv);
162 | } else {
163 | this.cv = this.v;
164 | }
165 |
166 | this.$
167 | .bind("configure", cf)
168 | .parent()
169 | .bind("configure", cf);
170 |
171 | this._listen()
172 | ._configure()
173 | ._xy()
174 | .init();
175 |
176 | this.isInit = true;
177 |
178 | this._draw();
179 |
180 | return this;
181 | };
182 |
183 | this._draw = function () {
184 |
185 | // canvas pre-rendering
186 | var d = true,
187 | c = document.createElement('canvas');
188 |
189 | c.width = s.o.width;
190 | c.height = s.o.height;
191 | s.g = c.getContext('2d');
192 |
193 | s.clear();
194 |
195 | s.dH
196 | && (d = s.dH());
197 |
198 | (d !== false) && s.draw();
199 |
200 | s.c.drawImage(c, 0, 0);
201 | c = null;
202 | };
203 |
204 | this._touch = function (e) {
205 |
206 | var touchMove = function (e) {
207 |
208 | var v = s.xy2val(
209 | e.originalEvent.touches[s.t].pageX,
210 | e.originalEvent.touches[s.t].pageY
211 | );
212 |
213 | if (v == s.cv) return;
214 |
215 | if (
216 | s.cH
217 | && (s.cH(v) === false)
218 | ) return;
219 |
220 |
221 | s.change(v);
222 | s._draw();
223 | };
224 |
225 | // get touches index
226 | this.t = k.c.t(e);
227 |
228 | // First touch
229 | touchMove(e);
230 |
231 | // Touch events listeners
232 | k.c.d
233 | .bind("touchmove.k", touchMove)
234 | .bind(
235 | "touchend.k"
236 | , function () {
237 | k.c.d.unbind('touchmove.k touchend.k');
238 |
239 | if (
240 | s.rH
241 | && (s.rH(s.cv) === false)
242 | ) return;
243 |
244 | s.val(s.cv);
245 | }
246 | );
247 |
248 | return this;
249 | };
250 |
251 | this._mouse = function (e) {
252 |
253 | var mouseMove = function (e) {
254 | var v = s.xy2val(e.pageX, e.pageY);
255 | if (v == s.cv) return;
256 |
257 | if (
258 | s.cH
259 | && (s.cH(v) === false)
260 | ) return;
261 |
262 | s.change(v);
263 | s._draw();
264 | };
265 |
266 | // First click
267 | mouseMove(e);
268 |
269 | // Mouse events listeners
270 | k.c.d
271 | .bind("mousemove.k", mouseMove)
272 | .bind(
273 | // Escape key cancel current change
274 | "keyup.k"
275 | , function (e) {
276 | if (e.keyCode === 27) {
277 | k.c.d.unbind("mouseup.k mousemove.k keyup.k");
278 |
279 | if (
280 | s.eH
281 | && (s.eH() === false)
282 | ) return;
283 |
284 | s.cancel();
285 | }
286 | }
287 | )
288 | .bind(
289 | "mouseup.k"
290 | , function (e) {
291 | k.c.d.unbind('mousemove.k mouseup.k keyup.k');
292 |
293 | if (
294 | s.rH
295 | && (s.rH(s.cv) === false)
296 | ) return;
297 |
298 | s.val(s.cv);
299 | }
300 | );
301 |
302 | return this;
303 | };
304 |
305 | this._xy = function () {
306 | var o = this.$c.offset();
307 | this.x = o.left;
308 | this.y = o.top;
309 | return this;
310 | };
311 |
312 | this._listen = function () {
313 |
314 | if (!this.o.readOnly) {
315 | this.$c
316 | .bind(
317 | "mousedown"
318 | , function (e) {
319 | e.preventDefault();
320 | s._xy()._mouse(e);
321 | }
322 | )
323 | .bind(
324 | "touchstart"
325 | , function (e) {
326 | e.preventDefault();
327 | s._xy()._touch(e);
328 | }
329 | );
330 | this.listen();
331 | } else {
332 | this.$.attr('readonly', 'readonly');
333 | }
334 |
335 | return this;
336 | };
337 |
338 | this._configure = function () {
339 |
340 | // Hooks
341 | if (this.o.draw) this.dH = this.o.draw;
342 | if (this.o.change) this.cH = this.o.change;
343 | if (this.o.cancel) this.eH = this.o.cancel;
344 | if (this.o.release) this.rH = this.o.release;
345 |
346 | if (this.o.displayPrevious) {
347 | this.pColor = this.h2rgba(this.o.fgColor, "0.4");
348 | this.fgColor = this.h2rgba(this.o.fgColor, "0.6");
349 | } else {
350 | this.fgColor = this.o.fgColor;
351 | }
352 |
353 | return this;
354 | };
355 |
356 | this._clear = function () {
357 | this.$c[0].width = this.$c[0].width;
358 | };
359 |
360 | // Abstract methods
361 | this.listen = function () {}; // on start, one time
362 | this.extend = function () {}; // each time configure triggered
363 | this.init = function () {}; // each time configure triggered
364 | this.change = function (v) {}; // on change
365 | this.val = function (v) {}; // on release
366 | this.xy2val = function (x, y) {}; //
367 | this.draw = function () {}; // on change / on release
368 | this.clear = function () { this._clear(); };
369 |
370 | // Utils
371 | this.h2rgba = function (h, a) {
372 | var rgb;
373 | h = h.substring(1,7)
374 | rgb = [parseInt(h.substring(0,2),16)
375 | ,parseInt(h.substring(2,4),16)
376 | ,parseInt(h.substring(4,6),16)];
377 | return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")";
378 | };
379 |
380 | this.copy = function (f, t) {
381 | for (var i in f) { t[i] = f[i]; }
382 | };
383 | };
384 |
385 |
386 | /**
387 | * k.Dial
388 | */
389 | k.Dial = function () {
390 | k.o.call(this);
391 |
392 | this.startAngle = null;
393 | this.xy = null;
394 | this.radius = null;
395 | this.lineWidth = null;
396 | this.cursorExt = null;
397 | this.w2 = null;
398 | this.PI2 = 2*Math.PI;
399 |
400 | this.extend = function () {
401 | this.o = $.extend(
402 | {
403 | bgColor : this.$.data('bgcolor') || '#EEEEEE',
404 | angleOffset : this.$.data('angleoffset') || 0,
405 | angleArc : this.$.data('anglearc') || 360,
406 | inline : true
407 | }, this.o
408 | );
409 | };
410 |
411 | this.val = function (v) {
412 | if (null != v) {
413 | this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v;
414 | this.v = this.cv;
415 | this.$.val(this.v);
416 | this._draw();
417 | } else {
418 | return this.v;
419 | }
420 | };
421 |
422 | this.xy2val = function (x, y) {
423 | var a, ret;
424 |
425 | a = Math.atan2(
426 | x - (this.x + this.w2)
427 | , - (y - this.y - this.w2)
428 | ) - this.angleOffset;
429 |
430 | if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) {
431 | // if isset angleArc option, set to min if .5 under min
432 | a = 0;
433 | } else if (a < 0) {
434 | a += this.PI2;
435 | }
436 |
437 | ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc))
438 | + this.o.min;
439 |
440 | this.o.stopper
441 | && (ret = max(min(ret, this.o.max), this.o.min));
442 |
443 | return ret;
444 | };
445 |
446 | this.listen = function () {
447 | // bind MouseWheel
448 | var s = this,
449 | mw = function (e) {
450 | e.preventDefault();
451 |
452 | var ori = e.originalEvent
453 | ,deltaX = ori.detail || ori.wheelDeltaX
454 | ,deltaY = ori.detail || ori.wheelDeltaY
455 | ,v = parseInt(s.$.val()) + (deltaX>0 || deltaY>0 ? 1 : deltaX<0 || deltaY<0 ? -1 : 0);
456 |
457 | if (
458 | s.cH
459 | && (s.cH(v) === false)
460 | ) return;
461 |
462 | s.val(v);
463 | }
464 | , kval, to, m = 1, kv = {37:-1, 38:1, 39:1, 40:-1};
465 |
466 | this.$
467 | .bind(
468 | "keydown"
469 | ,function (e) {
470 | var kc = e.keyCode;
471 | kval = parseInt(String.fromCharCode(kc));
472 |
473 | if (isNaN(kval)) {
474 |
475 | (kc !== 13) // enter
476 | && (kc !== 8) // bs
477 | && (kc !== 9) // tab
478 | && (kc !== 189) // -
479 | && e.preventDefault();
480 |
481 | // arrows
482 | if ($.inArray(kc,[37,38,39,40]) > -1) {
483 | e.preventDefault();
484 |
485 | var v = parseInt(s.$.val()) + kv[kc] * m;
486 |
487 | s.o.stopper
488 | && (v = max(min(v, s.o.max), s.o.min));
489 |
490 | s.change(v);
491 | s._draw();
492 |
493 | // long time keydown speed-up
494 | to = window.setTimeout(
495 | function () { m*=2; }
496 | ,30
497 | );
498 | }
499 | }
500 | }
501 | )
502 | .bind(
503 | "keyup"
504 | ,function (e) {
505 | if (isNaN(kval)) {
506 | if (to) {
507 | window.clearTimeout(to);
508 | to = null;
509 | m = 1;
510 | s.val(s.$.val());
511 | }
512 | } else {
513 | // kval postcond
514 | (s.$.val() > s.o.max && s.$.val(s.o.max))
515 | || (s.$.val() < s.o.min && s.$.val(s.o.min));
516 | }
517 |
518 | }
519 | );
520 |
521 | this.$c.bind("mousewheel DOMMouseScroll", mw);
522 | this.$.bind("mousewheel DOMMouseScroll", mw)
523 | };
524 |
525 | this.init = function () {
526 |
527 | if (
528 | this.v < this.o.min
529 | || this.v > this.o.max
530 | ) this.v = this.o.min;
531 |
532 | this.$.val(this.v);
533 | this.w2 = this.o.width / 2;
534 | this.cursorExt = this.o.cursor / 100;
535 | this.xy = this.w2;
536 | this.lineWidth = this.xy * this.o.thickness;
537 | this.radius = this.xy - this.lineWidth / 2;
538 |
539 | this.o.angleOffset
540 | && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset);
541 |
542 | this.o.angleArc
543 | && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc);
544 |
545 | // deg to rad
546 | this.angleOffset = this.o.angleOffset * Math.PI / 180;
547 | this.angleArc = this.o.angleArc * Math.PI / 180;
548 |
549 | // compute start and end angles
550 | this.startAngle = 1.5 * Math.PI + this.angleOffset;
551 | this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;
552 |
553 | var s = max(
554 | String(Math.abs(this.o.max)).length
555 | , String(Math.abs(this.o.min)).length
556 | , 2
557 | ) + 2;
558 |
559 | this.o.displayInput
560 | && this.i.css({
561 | 'width' : ((this.o.width / 2 + 4) >> 0) + 'px'
562 | ,'height' : ((this.o.width / 3) >> 0) + 'px'
563 | ,'position' : 'absolute'
564 | ,'vertical-align' : 'middle'
565 | ,'margin-top' : ((this.o.width / 3) >> 0) + 'px'
566 | ,'margin-left' : '-' + ((this.o.width * 3 / 4 + 2) >> 0) + 'px'
567 | ,'border' : 0
568 | ,'background' : 'none'
569 | ,'font' : 'bold ' + ((this.o.width / s) >> 0) + 'px Arial'
570 | ,'text-align' : 'center'
571 | ,'color' : this.o.fgColor
572 | ,'padding' : '0px'
573 | ,'-webkit-appearance': 'none'
574 | })
575 | || this.i.css({
576 | 'width' : '0px'
577 | ,'visibility' : 'hidden'
578 | });
579 | };
580 |
581 | this.change = function (v) {
582 | this.cv = v;
583 | this.$.val(v);
584 | };
585 |
586 | this.angle = function (v) {
587 | return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min);
588 | };
589 |
590 | this.draw = function () {
591 |
592 | var c = this.g, // context
593 | a = this.angle(this.cv) // Angle
594 | , sat = this.startAngle // Start angle
595 | , eat = sat + a // End angle
596 | , sa, ea // Previous angles
597 | , r = 1;
598 |
599 | c.lineWidth = this.lineWidth;
600 |
601 | this.o.cursor
602 | && (sat = eat - this.cursorExt)
603 | && (eat = eat + this.cursorExt);
604 |
605 | c.beginPath();
606 | c.strokeStyle = this.o.bgColor;
607 | c.arc(this.xy, this.xy, this.radius, this.endAngle, this.startAngle, true);
608 | c.stroke();
609 |
610 | if (this.o.displayPrevious) {
611 | ea = this.startAngle + this.angle(this.v);
612 | sa = this.startAngle;
613 | this.o.cursor
614 | && (sa = ea - this.cursorExt)
615 | && (ea = ea + this.cursorExt);
616 |
617 | c.beginPath();
618 | c.strokeStyle = this.pColor;
619 | c.arc(this.xy, this.xy, this.radius, sa, ea, false);
620 | c.stroke();
621 | r = (this.cv == this.v);
622 | }
623 |
624 | c.beginPath();
625 | c.strokeStyle = r ? this.o.fgColor : this.fgColor ;
626 | c.arc(this.xy, this.xy, this.radius, sat, eat, false);
627 | c.stroke();
628 | };
629 |
630 | this.cancel = function () {
631 | this.val(this.v);
632 | };
633 | };
634 |
635 | $.fn.dial = $.fn.knob = function (o) {
636 | return this.each(
637 | function () {
638 | var d = new k.Dial();
639 | d.o = o;
640 | d.$ = $(this);
641 | d.run();
642 | }
643 | ).parent();
644 | };
645 |
646 | });
--------------------------------------------------------------------------------
/assets/stylesheets/font-awesome.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 3.2.1
3 | * the iconic font designed for Bootstrap
4 | * ------------------------------------------------------------------------------
5 | * The full suite of pictographic icons, examples, and documentation can be
6 | * found at http://fontawesome.io. Stay up to date on Twitter at
7 | * http://twitter.com/fontawesome.
8 | *
9 | * License
10 | * ------------------------------------------------------------------------------
11 | * - The Font Awesome font is licensed under SIL OFL 1.1 -
12 | * http://scripts.sil.org/OFL
13 | * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
14 | * http://opensource.org/licenses/mit-license.html
15 | * - Font Awesome documentation licensed under CC BY 3.0 -
16 | * http://creativecommons.org/licenses/by/3.0/
17 | * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
18 | * "Font Awesome by Dave Gandy - http://fontawesome.io"
19 | *
20 | * Author - Dave Gandy
21 | * ------------------------------------------------------------------------------
22 | * Email: dave@fontawesome.io
23 | * Twitter: http://twitter.com/davegandy
24 | * Work: Lead Product Designer @ Kyruus - http://kyruus.com
25 | */
26 | /* FONT PATH
27 | * -------------------------- */
28 | @font-face {
29 | font-family: 'FontAwesome';
30 | src: url('../assets/fontawesome-webfont.eot?v=3.2.1');
31 | src: url('../assets/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../assets/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../assets/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../assets/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');
32 | font-weight: normal;
33 | font-style: normal;
34 | }
35 | /* FONT AWESOME CORE
36 | * -------------------------- */
37 | [class^="icon-"],
38 | [class*=" icon-"] {
39 | font-family: FontAwesome;
40 | font-weight: normal;
41 | font-style: normal;
42 | text-decoration: inherit;
43 | -webkit-font-smoothing: antialiased;
44 | *margin-right: .3em;
45 | }
46 | [class^="icon-"]:before,
47 | [class*=" icon-"]:before {
48 | text-decoration: inherit;
49 | display: inline-block;
50 | speak: none;
51 | }
52 | /* makes the font 33% larger relative to the icon container */
53 | .icon-large:before {
54 | vertical-align: -10%;
55 | font-size: 1.3333333333333333em;
56 | }
57 | /* makes sure icons active on rollover in links */
58 | a [class^="icon-"],
59 | a [class*=" icon-"] {
60 | display: inline;
61 | }
62 | /* increased font size for icon-large */
63 | [class^="icon-"].icon-fixed-width,
64 | [class*=" icon-"].icon-fixed-width {
65 | display: inline-block;
66 | width: 1.1428571428571428em;
67 | text-align: right;
68 | padding-right: 0.2857142857142857em;
69 | }
70 | [class^="icon-"].icon-fixed-width.icon-large,
71 | [class*=" icon-"].icon-fixed-width.icon-large {
72 | width: 1.4285714285714286em;
73 | }
74 | .icons-ul {
75 | margin-left: 2.142857142857143em;
76 | list-style-type: none;
77 | }
78 | .icons-ul > li {
79 | position: relative;
80 | }
81 | .icons-ul .icon-li {
82 | position: absolute;
83 | left: -2.142857142857143em;
84 | width: 2.142857142857143em;
85 | text-align: center;
86 | line-height: inherit;
87 | }
88 | [class^="icon-"].hide,
89 | [class*=" icon-"].hide {
90 | display: none;
91 | }
92 | .icon-muted {
93 | color: #eeeeee;
94 | }
95 | .icon-light {
96 | color: #ffffff;
97 | }
98 | .icon-dark {
99 | color: #333333;
100 | }
101 | .icon-border {
102 | border: solid 1px #eeeeee;
103 | padding: .2em .25em .15em;
104 | -webkit-border-radius: 3px;
105 | -moz-border-radius: 3px;
106 | border-radius: 3px;
107 | }
108 | .icon-2x {
109 | font-size: 2em;
110 | }
111 | .icon-2x.icon-border {
112 | border-width: 2px;
113 | -webkit-border-radius: 4px;
114 | -moz-border-radius: 4px;
115 | border-radius: 4px;
116 | }
117 | .icon-3x {
118 | font-size: 3em;
119 | }
120 | .icon-3x.icon-border {
121 | border-width: 3px;
122 | -webkit-border-radius: 5px;
123 | -moz-border-radius: 5px;
124 | border-radius: 5px;
125 | }
126 | .icon-4x {
127 | font-size: 4em;
128 | }
129 | .icon-4x.icon-border {
130 | border-width: 4px;
131 | -webkit-border-radius: 6px;
132 | -moz-border-radius: 6px;
133 | border-radius: 6px;
134 | }
135 | .icon-5x {
136 | font-size: 5em;
137 | }
138 | .icon-5x.icon-border {
139 | border-width: 5px;
140 | -webkit-border-radius: 7px;
141 | -moz-border-radius: 7px;
142 | border-radius: 7px;
143 | }
144 | .pull-right {
145 | float: right;
146 | }
147 | .pull-left {
148 | float: left;
149 | }
150 | [class^="icon-"].pull-left,
151 | [class*=" icon-"].pull-left {
152 | margin-right: .3em;
153 | }
154 | [class^="icon-"].pull-right,
155 | [class*=" icon-"].pull-right {
156 | margin-left: .3em;
157 | }
158 | /* BOOTSTRAP SPECIFIC CLASSES
159 | * -------------------------- */
160 | /* Bootstrap 2.0 sprites.less reset */
161 | [class^="icon-"],
162 | [class*=" icon-"] {
163 | display: inline;
164 | width: auto;
165 | height: auto;
166 | line-height: normal;
167 | vertical-align: baseline;
168 | background-image: none;
169 | background-position: 0% 0%;
170 | background-repeat: repeat;
171 | margin-top: 0;
172 | }
173 | /* more sprites.less reset */
174 | .icon-white,
175 | .nav-pills > .active > a > [class^="icon-"],
176 | .nav-pills > .active > a > [class*=" icon-"],
177 | .nav-list > .active > a > [class^="icon-"],
178 | .nav-list > .active > a > [class*=" icon-"],
179 | .navbar-inverse .nav > .active > a > [class^="icon-"],
180 | .navbar-inverse .nav > .active > a > [class*=" icon-"],
181 | .dropdown-menu > li > a:hover > [class^="icon-"],
182 | .dropdown-menu > li > a:hover > [class*=" icon-"],
183 | .dropdown-menu > .active > a > [class^="icon-"],
184 | .dropdown-menu > .active > a > [class*=" icon-"],
185 | .dropdown-submenu:hover > a > [class^="icon-"],
186 | .dropdown-submenu:hover > a > [class*=" icon-"] {
187 | background-image: none;
188 | }
189 | /* keeps Bootstrap styles with and without icons the same */
190 | .btn [class^="icon-"].icon-large,
191 | .nav [class^="icon-"].icon-large,
192 | .btn [class*=" icon-"].icon-large,
193 | .nav [class*=" icon-"].icon-large {
194 | line-height: .9em;
195 | }
196 | .btn [class^="icon-"].icon-spin,
197 | .nav [class^="icon-"].icon-spin,
198 | .btn [class*=" icon-"].icon-spin,
199 | .nav [class*=" icon-"].icon-spin {
200 | display: inline-block;
201 | }
202 | .nav-tabs [class^="icon-"],
203 | .nav-pills [class^="icon-"],
204 | .nav-tabs [class*=" icon-"],
205 | .nav-pills [class*=" icon-"],
206 | .nav-tabs [class^="icon-"].icon-large,
207 | .nav-pills [class^="icon-"].icon-large,
208 | .nav-tabs [class*=" icon-"].icon-large,
209 | .nav-pills [class*=" icon-"].icon-large {
210 | line-height: .9em;
211 | }
212 | .btn [class^="icon-"].pull-left.icon-2x,
213 | .btn [class*=" icon-"].pull-left.icon-2x,
214 | .btn [class^="icon-"].pull-right.icon-2x,
215 | .btn [class*=" icon-"].pull-right.icon-2x {
216 | margin-top: .18em;
217 | }
218 | .btn [class^="icon-"].icon-spin.icon-large,
219 | .btn [class*=" icon-"].icon-spin.icon-large {
220 | line-height: .8em;
221 | }
222 | .btn.btn-small [class^="icon-"].pull-left.icon-2x,
223 | .btn.btn-small [class*=" icon-"].pull-left.icon-2x,
224 | .btn.btn-small [class^="icon-"].pull-right.icon-2x,
225 | .btn.btn-small [class*=" icon-"].pull-right.icon-2x {
226 | margin-top: .25em;
227 | }
228 | .btn.btn-large [class^="icon-"],
229 | .btn.btn-large [class*=" icon-"] {
230 | margin-top: 0;
231 | }
232 | .btn.btn-large [class^="icon-"].pull-left.icon-2x,
233 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x,
234 | .btn.btn-large [class^="icon-"].pull-right.icon-2x,
235 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x {
236 | margin-top: .05em;
237 | }
238 | .btn.btn-large [class^="icon-"].pull-left.icon-2x,
239 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x {
240 | margin-right: .2em;
241 | }
242 | .btn.btn-large [class^="icon-"].pull-right.icon-2x,
243 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x {
244 | margin-left: .2em;
245 | }
246 | /* Fixes alignment in nav lists */
247 | .nav-list [class^="icon-"],
248 | .nav-list [class*=" icon-"] {
249 | line-height: inherit;
250 | }
251 | /* EXTRAS
252 | * -------------------------- */
253 | /* Stacked and layered icon */
254 | .icon-stack {
255 | position: relative;
256 | display: inline-block;
257 | width: 2em;
258 | height: 2em;
259 | line-height: 2em;
260 | vertical-align: -35%;
261 | }
262 | .icon-stack [class^="icon-"],
263 | .icon-stack [class*=" icon-"] {
264 | display: block;
265 | text-align: center;
266 | position: absolute;
267 | width: 100%;
268 | height: 100%;
269 | font-size: 1em;
270 | line-height: inherit;
271 | *line-height: 2em;
272 | }
273 | .icon-stack .icon-stack-base {
274 | font-size: 2em;
275 | *line-height: 1em;
276 | }
277 | /* Animated rotating icon */
278 | .icon-spin {
279 | display: inline-block;
280 | -moz-animation: spin 2s infinite linear;
281 | -o-animation: spin 2s infinite linear;
282 | -webkit-animation: spin 2s infinite linear;
283 | animation: spin 2s infinite linear;
284 | }
285 | /* Prevent stack and spinners from being taken inline when inside a link */
286 | a .icon-stack,
287 | a .icon-spin {
288 | display: inline-block;
289 | text-decoration: none;
290 | }
291 | @-moz-keyframes spin {
292 | 0% {
293 | -moz-transform: rotate(0deg);
294 | }
295 | 100% {
296 | -moz-transform: rotate(359deg);
297 | }
298 | }
299 | @-webkit-keyframes spin {
300 | 0% {
301 | -webkit-transform: rotate(0deg);
302 | }
303 | 100% {
304 | -webkit-transform: rotate(359deg);
305 | }
306 | }
307 | @-o-keyframes spin {
308 | 0% {
309 | -o-transform: rotate(0deg);
310 | }
311 | 100% {
312 | -o-transform: rotate(359deg);
313 | }
314 | }
315 | @-ms-keyframes spin {
316 | 0% {
317 | -ms-transform: rotate(0deg);
318 | }
319 | 100% {
320 | -ms-transform: rotate(359deg);
321 | }
322 | }
323 | @keyframes spin {
324 | 0% {
325 | transform: rotate(0deg);
326 | }
327 | 100% {
328 | transform: rotate(359deg);
329 | }
330 | }
331 | /* Icon rotations and mirroring */
332 | .icon-rotate-90:before {
333 | -webkit-transform: rotate(90deg);
334 | -moz-transform: rotate(90deg);
335 | -ms-transform: rotate(90deg);
336 | -o-transform: rotate(90deg);
337 | transform: rotate(90deg);
338 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
339 | }
340 | .icon-rotate-180:before {
341 | -webkit-transform: rotate(180deg);
342 | -moz-transform: rotate(180deg);
343 | -ms-transform: rotate(180deg);
344 | -o-transform: rotate(180deg);
345 | transform: rotate(180deg);
346 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
347 | }
348 | .icon-rotate-270:before {
349 | -webkit-transform: rotate(270deg);
350 | -moz-transform: rotate(270deg);
351 | -ms-transform: rotate(270deg);
352 | -o-transform: rotate(270deg);
353 | transform: rotate(270deg);
354 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
355 | }
356 | .icon-flip-horizontal:before {
357 | -webkit-transform: scale(-1, 1);
358 | -moz-transform: scale(-1, 1);
359 | -ms-transform: scale(-1, 1);
360 | -o-transform: scale(-1, 1);
361 | transform: scale(-1, 1);
362 | }
363 | .icon-flip-vertical:before {
364 | -webkit-transform: scale(1, -1);
365 | -moz-transform: scale(1, -1);
366 | -ms-transform: scale(1, -1);
367 | -o-transform: scale(1, -1);
368 | transform: scale(1, -1);
369 | }
370 | /* ensure rotation occurs inside anchor tags */
371 | a .icon-rotate-90:before,
372 | a .icon-rotate-180:before,
373 | a .icon-rotate-270:before,
374 | a .icon-flip-horizontal:before,
375 | a .icon-flip-vertical:before {
376 | display: inline-block;
377 | }
378 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
379 | readers do not read off random characters that represent icons */
380 | .icon-glass:before {
381 | content: "\f000";
382 | }
383 | .icon-music:before {
384 | content: "\f001";
385 | }
386 | .icon-search:before {
387 | content: "\f002";
388 | }
389 | .icon-envelope-alt:before {
390 | content: "\f003";
391 | }
392 | .icon-heart:before {
393 | content: "\f004";
394 | }
395 | .icon-star:before {
396 | content: "\f005";
397 | }
398 | .icon-star-empty:before {
399 | content: "\f006";
400 | }
401 | .icon-user:before {
402 | content: "\f007";
403 | }
404 | .icon-film:before {
405 | content: "\f008";
406 | }
407 | .icon-th-large:before {
408 | content: "\f009";
409 | }
410 | .icon-th:before {
411 | content: "\f00a";
412 | }
413 | .icon-th-list:before {
414 | content: "\f00b";
415 | }
416 | .icon-ok:before {
417 | content: "\f00c";
418 | }
419 | .icon-remove:before {
420 | content: "\f00d";
421 | }
422 | .icon-zoom-in:before {
423 | content: "\f00e";
424 | }
425 | .icon-zoom-out:before {
426 | content: "\f010";
427 | }
428 | .icon-power-off:before,
429 | .icon-off:before {
430 | content: "\f011";
431 | }
432 | .icon-signal:before {
433 | content: "\f012";
434 | }
435 | .icon-gear:before,
436 | .icon-cog:before {
437 | content: "\f013";
438 | }
439 | .icon-trash:before {
440 | content: "\f014";
441 | }
442 | .icon-home:before {
443 | content: "\f015";
444 | }
445 | .icon-file-alt:before {
446 | content: "\f016";
447 | }
448 | .icon-time:before {
449 | content: "\f017";
450 | }
451 | .icon-road:before {
452 | content: "\f018";
453 | }
454 | .icon-download-alt:before {
455 | content: "\f019";
456 | }
457 | .icon-download:before {
458 | content: "\f01a";
459 | }
460 | .icon-upload:before {
461 | content: "\f01b";
462 | }
463 | .icon-inbox:before {
464 | content: "\f01c";
465 | }
466 | .icon-play-circle:before {
467 | content: "\f01d";
468 | }
469 | .icon-rotate-right:before,
470 | .icon-repeat:before {
471 | content: "\f01e";
472 | }
473 | .icon-refresh:before {
474 | content: "\f021";
475 | }
476 | .icon-list-alt:before {
477 | content: "\f022";
478 | }
479 | .icon-lock:before {
480 | content: "\f023";
481 | }
482 | .icon-flag:before {
483 | content: "\f024";
484 | }
485 | .icon-headphones:before {
486 | content: "\f025";
487 | }
488 | .icon-volume-off:before {
489 | content: "\f026";
490 | }
491 | .icon-volume-down:before {
492 | content: "\f027";
493 | }
494 | .icon-volume-up:before {
495 | content: "\f028";
496 | }
497 | .icon-qrcode:before {
498 | content: "\f029";
499 | }
500 | .icon-barcode:before {
501 | content: "\f02a";
502 | }
503 | .icon-tag:before {
504 | content: "\f02b";
505 | }
506 | .icon-tags:before {
507 | content: "\f02c";
508 | }
509 | .icon-book:before {
510 | content: "\f02d";
511 | }
512 | .icon-bookmark:before {
513 | content: "\f02e";
514 | }
515 | .icon-print:before {
516 | content: "\f02f";
517 | }
518 | .icon-camera:before {
519 | content: "\f030";
520 | }
521 | .icon-font:before {
522 | content: "\f031";
523 | }
524 | .icon-bold:before {
525 | content: "\f032";
526 | }
527 | .icon-italic:before {
528 | content: "\f033";
529 | }
530 | .icon-text-height:before {
531 | content: "\f034";
532 | }
533 | .icon-text-width:before {
534 | content: "\f035";
535 | }
536 | .icon-align-left:before {
537 | content: "\f036";
538 | }
539 | .icon-align-center:before {
540 | content: "\f037";
541 | }
542 | .icon-align-right:before {
543 | content: "\f038";
544 | }
545 | .icon-align-justify:before {
546 | content: "\f039";
547 | }
548 | .icon-list:before {
549 | content: "\f03a";
550 | }
551 | .icon-indent-left:before {
552 | content: "\f03b";
553 | }
554 | .icon-indent-right:before {
555 | content: "\f03c";
556 | }
557 | .icon-facetime-video:before {
558 | content: "\f03d";
559 | }
560 | .icon-picture:before {
561 | content: "\f03e";
562 | }
563 | .icon-pencil:before {
564 | content: "\f040";
565 | }
566 | .icon-map-marker:before {
567 | content: "\f041";
568 | }
569 | .icon-adjust:before {
570 | content: "\f042";
571 | }
572 | .icon-tint:before {
573 | content: "\f043";
574 | }
575 | .icon-edit:before {
576 | content: "\f044";
577 | }
578 | .icon-share:before {
579 | content: "\f045";
580 | }
581 | .icon-check:before {
582 | content: "\f046";
583 | }
584 | .icon-move:before {
585 | content: "\f047";
586 | }
587 | .icon-step-backward:before {
588 | content: "\f048";
589 | }
590 | .icon-fast-backward:before {
591 | content: "\f049";
592 | }
593 | .icon-backward:before {
594 | content: "\f04a";
595 | }
596 | .icon-play:before {
597 | content: "\f04b";
598 | }
599 | .icon-pause:before {
600 | content: "\f04c";
601 | }
602 | .icon-stop:before {
603 | content: "\f04d";
604 | }
605 | .icon-forward:before {
606 | content: "\f04e";
607 | }
608 | .icon-fast-forward:before {
609 | content: "\f050";
610 | }
611 | .icon-step-forward:before {
612 | content: "\f051";
613 | }
614 | .icon-eject:before {
615 | content: "\f052";
616 | }
617 | .icon-chevron-left:before {
618 | content: "\f053";
619 | }
620 | .icon-chevron-right:before {
621 | content: "\f054";
622 | }
623 | .icon-plus-sign:before {
624 | content: "\f055";
625 | }
626 | .icon-minus-sign:before {
627 | content: "\f056";
628 | }
629 | .icon-remove-sign:before {
630 | content: "\f057";
631 | }
632 | .icon-ok-sign:before {
633 | content: "\f058";
634 | }
635 | .icon-question-sign:before {
636 | content: "\f059";
637 | }
638 | .icon-info-sign:before {
639 | content: "\f05a";
640 | }
641 | .icon-screenshot:before {
642 | content: "\f05b";
643 | }
644 | .icon-remove-circle:before {
645 | content: "\f05c";
646 | }
647 | .icon-ok-circle:before {
648 | content: "\f05d";
649 | }
650 | .icon-ban-circle:before {
651 | content: "\f05e";
652 | }
653 | .icon-arrow-left:before {
654 | content: "\f060";
655 | }
656 | .icon-arrow-right:before {
657 | content: "\f061";
658 | }
659 | .icon-arrow-up:before {
660 | content: "\f062";
661 | }
662 | .icon-arrow-down:before {
663 | content: "\f063";
664 | }
665 | .icon-mail-forward:before,
666 | .icon-share-alt:before {
667 | content: "\f064";
668 | }
669 | .icon-resize-full:before {
670 | content: "\f065";
671 | }
672 | .icon-resize-small:before {
673 | content: "\f066";
674 | }
675 | .icon-plus:before {
676 | content: "\f067";
677 | }
678 | .icon-minus:before {
679 | content: "\f068";
680 | }
681 | .icon-asterisk:before {
682 | content: "\f069";
683 | }
684 | .icon-exclamation-sign:before {
685 | content: "\f06a";
686 | }
687 | .icon-gift:before {
688 | content: "\f06b";
689 | }
690 | .icon-leaf:before {
691 | content: "\f06c";
692 | }
693 | .icon-fire:before {
694 | content: "\f06d";
695 | }
696 | .icon-eye-open:before {
697 | content: "\f06e";
698 | }
699 | .icon-eye-close:before {
700 | content: "\f070";
701 | }
702 | .icon-warning-sign:before {
703 | content: "\f071";
704 | }
705 | .icon-plane:before {
706 | content: "\f072";
707 | }
708 | .icon-calendar:before {
709 | content: "\f073";
710 | }
711 | .icon-random:before {
712 | content: "\f074";
713 | }
714 | .icon-comment:before {
715 | content: "\f075";
716 | }
717 | .icon-magnet:before {
718 | content: "\f076";
719 | }
720 | .icon-chevron-up:before {
721 | content: "\f077";
722 | }
723 | .icon-chevron-down:before {
724 | content: "\f078";
725 | }
726 | .icon-retweet:before {
727 | content: "\f079";
728 | }
729 | .icon-shopping-cart:before {
730 | content: "\f07a";
731 | }
732 | .icon-folder-close:before {
733 | content: "\f07b";
734 | }
735 | .icon-folder-open:before {
736 | content: "\f07c";
737 | }
738 | .icon-resize-vertical:before {
739 | content: "\f07d";
740 | }
741 | .icon-resize-horizontal:before {
742 | content: "\f07e";
743 | }
744 | .icon-bar-chart:before {
745 | content: "\f080";
746 | }
747 | .icon-twitter-sign:before {
748 | content: "\f081";
749 | }
750 | .icon-facebook-sign:before {
751 | content: "\f082";
752 | }
753 | .icon-camera-retro:before {
754 | content: "\f083";
755 | }
756 | .icon-key:before {
757 | content: "\f084";
758 | }
759 | .icon-gears:before,
760 | .icon-cogs:before {
761 | content: "\f085";
762 | }
763 | .icon-comments:before {
764 | content: "\f086";
765 | }
766 | .icon-thumbs-up-alt:before {
767 | content: "\f087";
768 | }
769 | .icon-thumbs-down-alt:before {
770 | content: "\f088";
771 | }
772 | .icon-star-half:before {
773 | content: "\f089";
774 | }
775 | .icon-heart-empty:before {
776 | content: "\f08a";
777 | }
778 | .icon-signout:before {
779 | content: "\f08b";
780 | }
781 | .icon-linkedin-sign:before {
782 | content: "\f08c";
783 | }
784 | .icon-pushpin:before {
785 | content: "\f08d";
786 | }
787 | .icon-external-link:before {
788 | content: "\f08e";
789 | }
790 | .icon-signin:before {
791 | content: "\f090";
792 | }
793 | .icon-trophy:before {
794 | content: "\f091";
795 | }
796 | .icon-github-sign:before {
797 | content: "\f092";
798 | }
799 | .icon-upload-alt:before {
800 | content: "\f093";
801 | }
802 | .icon-lemon:before {
803 | content: "\f094";
804 | }
805 | .icon-phone:before {
806 | content: "\f095";
807 | }
808 | .icon-unchecked:before,
809 | .icon-check-empty:before {
810 | content: "\f096";
811 | }
812 | .icon-bookmark-empty:before {
813 | content: "\f097";
814 | }
815 | .icon-phone-sign:before {
816 | content: "\f098";
817 | }
818 | .icon-twitter:before {
819 | content: "\f099";
820 | }
821 | .icon-facebook:before {
822 | content: "\f09a";
823 | }
824 | .icon-github:before {
825 | content: "\f09b";
826 | }
827 | .icon-unlock:before {
828 | content: "\f09c";
829 | }
830 | .icon-credit-card:before {
831 | content: "\f09d";
832 | }
833 | .icon-rss:before {
834 | content: "\f09e";
835 | }
836 | .icon-hdd:before {
837 | content: "\f0a0";
838 | }
839 | .icon-bullhorn:before {
840 | content: "\f0a1";
841 | }
842 | .icon-bell:before {
843 | content: "\f0a2";
844 | }
845 | .icon-certificate:before {
846 | content: "\f0a3";
847 | }
848 | .icon-hand-right:before {
849 | content: "\f0a4";
850 | }
851 | .icon-hand-left:before {
852 | content: "\f0a5";
853 | }
854 | .icon-hand-up:before {
855 | content: "\f0a6";
856 | }
857 | .icon-hand-down:before {
858 | content: "\f0a7";
859 | }
860 | .icon-circle-arrow-left:before {
861 | content: "\f0a8";
862 | }
863 | .icon-circle-arrow-right:before {
864 | content: "\f0a9";
865 | }
866 | .icon-circle-arrow-up:before {
867 | content: "\f0aa";
868 | }
869 | .icon-circle-arrow-down:before {
870 | content: "\f0ab";
871 | }
872 | .icon-globe:before {
873 | content: "\f0ac";
874 | }
875 | .icon-wrench:before {
876 | content: "\f0ad";
877 | }
878 | .icon-tasks:before {
879 | content: "\f0ae";
880 | }
881 | .icon-filter:before {
882 | content: "\f0b0";
883 | }
884 | .icon-briefcase:before {
885 | content: "\f0b1";
886 | }
887 | .icon-fullscreen:before {
888 | content: "\f0b2";
889 | }
890 | .icon-group:before {
891 | content: "\f0c0";
892 | }
893 | .icon-link:before {
894 | content: "\f0c1";
895 | }
896 | .icon-cloud:before {
897 | content: "\f0c2";
898 | }
899 | .icon-beaker:before {
900 | content: "\f0c3";
901 | }
902 | .icon-cut:before {
903 | content: "\f0c4";
904 | }
905 | .icon-copy:before {
906 | content: "\f0c5";
907 | }
908 | .icon-paperclip:before,
909 | .icon-paper-clip:before {
910 | content: "\f0c6";
911 | }
912 | .icon-save:before {
913 | content: "\f0c7";
914 | }
915 | .icon-sign-blank:before {
916 | content: "\f0c8";
917 | }
918 | .icon-reorder:before {
919 | content: "\f0c9";
920 | }
921 | .icon-list-ul:before {
922 | content: "\f0ca";
923 | }
924 | .icon-list-ol:before {
925 | content: "\f0cb";
926 | }
927 | .icon-strikethrough:before {
928 | content: "\f0cc";
929 | }
930 | .icon-underline:before {
931 | content: "\f0cd";
932 | }
933 | .icon-table:before {
934 | content: "\f0ce";
935 | }
936 | .icon-magic:before {
937 | content: "\f0d0";
938 | }
939 | .icon-truck:before {
940 | content: "\f0d1";
941 | }
942 | .icon-pinterest:before {
943 | content: "\f0d2";
944 | }
945 | .icon-pinterest-sign:before {
946 | content: "\f0d3";
947 | }
948 | .icon-google-plus-sign:before {
949 | content: "\f0d4";
950 | }
951 | .icon-google-plus:before {
952 | content: "\f0d5";
953 | }
954 | .icon-money:before {
955 | content: "\f0d6";
956 | }
957 | .icon-caret-down:before {
958 | content: "\f0d7";
959 | }
960 | .icon-caret-up:before {
961 | content: "\f0d8";
962 | }
963 | .icon-caret-left:before {
964 | content: "\f0d9";
965 | }
966 | .icon-caret-right:before {
967 | content: "\f0da";
968 | }
969 | .icon-columns:before {
970 | content: "\f0db";
971 | }
972 | .icon-sort:before {
973 | content: "\f0dc";
974 | }
975 | .icon-sort-down:before {
976 | content: "\f0dd";
977 | }
978 | .icon-sort-up:before {
979 | content: "\f0de";
980 | }
981 | .icon-envelope:before {
982 | content: "\f0e0";
983 | }
984 | .icon-linkedin:before {
985 | content: "\f0e1";
986 | }
987 | .icon-rotate-left:before,
988 | .icon-undo:before {
989 | content: "\f0e2";
990 | }
991 | .icon-legal:before {
992 | content: "\f0e3";
993 | }
994 | .icon-dashboard:before {
995 | content: "\f0e4";
996 | }
997 | .icon-comment-alt:before {
998 | content: "\f0e5";
999 | }
1000 | .icon-comments-alt:before {
1001 | content: "\f0e6";
1002 | }
1003 | .icon-bolt:before {
1004 | content: "\f0e7";
1005 | }
1006 | .icon-sitemap:before {
1007 | content: "\f0e8";
1008 | }
1009 | .icon-umbrella:before {
1010 | content: "\f0e9";
1011 | }
1012 | .icon-paste:before {
1013 | content: "\f0ea";
1014 | }
1015 | .icon-lightbulb:before {
1016 | content: "\f0eb";
1017 | }
1018 | .icon-exchange:before {
1019 | content: "\f0ec";
1020 | }
1021 | .icon-cloud-download:before {
1022 | content: "\f0ed";
1023 | }
1024 | .icon-cloud-upload:before {
1025 | content: "\f0ee";
1026 | }
1027 | .icon-user-md:before {
1028 | content: "\f0f0";
1029 | }
1030 | .icon-stethoscope:before {
1031 | content: "\f0f1";
1032 | }
1033 | .icon-suitcase:before {
1034 | content: "\f0f2";
1035 | }
1036 | .icon-bell-alt:before {
1037 | content: "\f0f3";
1038 | }
1039 | .icon-coffee:before {
1040 | content: "\f0f4";
1041 | }
1042 | .icon-food:before {
1043 | content: "\f0f5";
1044 | }
1045 | .icon-file-text-alt:before {
1046 | content: "\f0f6";
1047 | }
1048 | .icon-building:before {
1049 | content: "\f0f7";
1050 | }
1051 | .icon-hospital:before {
1052 | content: "\f0f8";
1053 | }
1054 | .icon-ambulance:before {
1055 | content: "\f0f9";
1056 | }
1057 | .icon-medkit:before {
1058 | content: "\f0fa";
1059 | }
1060 | .icon-fighter-jet:before {
1061 | content: "\f0fb";
1062 | }
1063 | .icon-beer:before {
1064 | content: "\f0fc";
1065 | }
1066 | .icon-h-sign:before {
1067 | content: "\f0fd";
1068 | }
1069 | .icon-plus-sign-alt:before {
1070 | content: "\f0fe";
1071 | }
1072 | .icon-double-angle-left:before {
1073 | content: "\f100";
1074 | }
1075 | .icon-double-angle-right:before {
1076 | content: "\f101";
1077 | }
1078 | .icon-double-angle-up:before {
1079 | content: "\f102";
1080 | }
1081 | .icon-double-angle-down:before {
1082 | content: "\f103";
1083 | }
1084 | .icon-angle-left:before {
1085 | content: "\f104";
1086 | }
1087 | .icon-angle-right:before {
1088 | content: "\f105";
1089 | }
1090 | .icon-angle-up:before {
1091 | content: "\f106";
1092 | }
1093 | .icon-angle-down:before {
1094 | content: "\f107";
1095 | }
1096 | .icon-desktop:before {
1097 | content: "\f108";
1098 | }
1099 | .icon-laptop:before {
1100 | content: "\f109";
1101 | }
1102 | .icon-tablet:before {
1103 | content: "\f10a";
1104 | }
1105 | .icon-mobile-phone:before {
1106 | content: "\f10b";
1107 | }
1108 | .icon-circle-blank:before {
1109 | content: "\f10c";
1110 | }
1111 | .icon-quote-left:before {
1112 | content: "\f10d";
1113 | }
1114 | .icon-quote-right:before {
1115 | content: "\f10e";
1116 | }
1117 | .icon-spinner:before {
1118 | content: "\f110";
1119 | }
1120 | .icon-circle:before {
1121 | content: "\f111";
1122 | }
1123 | .icon-mail-reply:before,
1124 | .icon-reply:before {
1125 | content: "\f112";
1126 | }
1127 | .icon-github-alt:before {
1128 | content: "\f113";
1129 | }
1130 | .icon-folder-close-alt:before {
1131 | content: "\f114";
1132 | }
1133 | .icon-folder-open-alt:before {
1134 | content: "\f115";
1135 | }
1136 | .icon-expand-alt:before {
1137 | content: "\f116";
1138 | }
1139 | .icon-collapse-alt:before {
1140 | content: "\f117";
1141 | }
1142 | .icon-smile:before {
1143 | content: "\f118";
1144 | }
1145 | .icon-frown:before {
1146 | content: "\f119";
1147 | }
1148 | .icon-meh:before {
1149 | content: "\f11a";
1150 | }
1151 | .icon-gamepad:before {
1152 | content: "\f11b";
1153 | }
1154 | .icon-keyboard:before {
1155 | content: "\f11c";
1156 | }
1157 | .icon-flag-alt:before {
1158 | content: "\f11d";
1159 | }
1160 | .icon-flag-checkered:before {
1161 | content: "\f11e";
1162 | }
1163 | .icon-terminal:before {
1164 | content: "\f120";
1165 | }
1166 | .icon-code:before {
1167 | content: "\f121";
1168 | }
1169 | .icon-reply-all:before {
1170 | content: "\f122";
1171 | }
1172 | .icon-mail-reply-all:before {
1173 | content: "\f122";
1174 | }
1175 | .icon-star-half-full:before,
1176 | .icon-star-half-empty:before {
1177 | content: "\f123";
1178 | }
1179 | .icon-location-arrow:before {
1180 | content: "\f124";
1181 | }
1182 | .icon-crop:before {
1183 | content: "\f125";
1184 | }
1185 | .icon-code-fork:before {
1186 | content: "\f126";
1187 | }
1188 | .icon-unlink:before {
1189 | content: "\f127";
1190 | }
1191 | .icon-question:before {
1192 | content: "\f128";
1193 | }
1194 | .icon-info:before {
1195 | content: "\f129";
1196 | }
1197 | .icon-exclamation:before {
1198 | content: "\f12a";
1199 | }
1200 | .icon-superscript:before {
1201 | content: "\f12b";
1202 | }
1203 | .icon-subscript:before {
1204 | content: "\f12c";
1205 | }
1206 | .icon-eraser:before {
1207 | content: "\f12d";
1208 | }
1209 | .icon-puzzle-piece:before {
1210 | content: "\f12e";
1211 | }
1212 | .icon-microphone:before {
1213 | content: "\f130";
1214 | }
1215 | .icon-microphone-off:before {
1216 | content: "\f131";
1217 | }
1218 | .icon-shield:before {
1219 | content: "\f132";
1220 | }
1221 | .icon-calendar-empty:before {
1222 | content: "\f133";
1223 | }
1224 | .icon-fire-extinguisher:before {
1225 | content: "\f134";
1226 | }
1227 | .icon-rocket:before {
1228 | content: "\f135";
1229 | }
1230 | .icon-maxcdn:before {
1231 | content: "\f136";
1232 | }
1233 | .icon-chevron-sign-left:before {
1234 | content: "\f137";
1235 | }
1236 | .icon-chevron-sign-right:before {
1237 | content: "\f138";
1238 | }
1239 | .icon-chevron-sign-up:before {
1240 | content: "\f139";
1241 | }
1242 | .icon-chevron-sign-down:before {
1243 | content: "\f13a";
1244 | }
1245 | .icon-html5:before {
1246 | content: "\f13b";
1247 | }
1248 | .icon-css3:before {
1249 | content: "\f13c";
1250 | }
1251 | .icon-anchor:before {
1252 | content: "\f13d";
1253 | }
1254 | .icon-unlock-alt:before {
1255 | content: "\f13e";
1256 | }
1257 | .icon-bullseye:before {
1258 | content: "\f140";
1259 | }
1260 | .icon-ellipsis-horizontal:before {
1261 | content: "\f141";
1262 | }
1263 | .icon-ellipsis-vertical:before {
1264 | content: "\f142";
1265 | }
1266 | .icon-rss-sign:before {
1267 | content: "\f143";
1268 | }
1269 | .icon-play-sign:before {
1270 | content: "\f144";
1271 | }
1272 | .icon-ticket:before {
1273 | content: "\f145";
1274 | }
1275 | .icon-minus-sign-alt:before {
1276 | content: "\f146";
1277 | }
1278 | .icon-check-minus:before {
1279 | content: "\f147";
1280 | }
1281 | .icon-level-up:before {
1282 | content: "\f148";
1283 | }
1284 | .icon-level-down:before {
1285 | content: "\f149";
1286 | }
1287 | .icon-check-sign:before {
1288 | content: "\f14a";
1289 | }
1290 | .icon-edit-sign:before {
1291 | content: "\f14b";
1292 | }
1293 | .icon-external-link-sign:before {
1294 | content: "\f14c";
1295 | }
1296 | .icon-share-sign:before {
1297 | content: "\f14d";
1298 | }
1299 | .icon-compass:before {
1300 | content: "\f14e";
1301 | }
1302 | .icon-collapse:before {
1303 | content: "\f150";
1304 | }
1305 | .icon-collapse-top:before {
1306 | content: "\f151";
1307 | }
1308 | .icon-expand:before {
1309 | content: "\f152";
1310 | }
1311 | .icon-euro:before,
1312 | .icon-eur:before {
1313 | content: "\f153";
1314 | }
1315 | .icon-gbp:before {
1316 | content: "\f154";
1317 | }
1318 | .icon-dollar:before,
1319 | .icon-usd:before {
1320 | content: "\f155";
1321 | }
1322 | .icon-rupee:before,
1323 | .icon-inr:before {
1324 | content: "\f156";
1325 | }
1326 | .icon-yen:before,
1327 | .icon-jpy:before {
1328 | content: "\f157";
1329 | }
1330 | .icon-renminbi:before,
1331 | .icon-cny:before {
1332 | content: "\f158";
1333 | }
1334 | .icon-won:before,
1335 | .icon-krw:before {
1336 | content: "\f159";
1337 | }
1338 | .icon-bitcoin:before,
1339 | .icon-btc:before {
1340 | content: "\f15a";
1341 | }
1342 | .icon-file:before {
1343 | content: "\f15b";
1344 | }
1345 | .icon-file-text:before {
1346 | content: "\f15c";
1347 | }
1348 | .icon-sort-by-alphabet:before {
1349 | content: "\f15d";
1350 | }
1351 | .icon-sort-by-alphabet-alt:before {
1352 | content: "\f15e";
1353 | }
1354 | .icon-sort-by-attributes:before {
1355 | content: "\f160";
1356 | }
1357 | .icon-sort-by-attributes-alt:before {
1358 | content: "\f161";
1359 | }
1360 | .icon-sort-by-order:before {
1361 | content: "\f162";
1362 | }
1363 | .icon-sort-by-order-alt:before {
1364 | content: "\f163";
1365 | }
1366 | .icon-thumbs-up:before {
1367 | content: "\f164";
1368 | }
1369 | .icon-thumbs-down:before {
1370 | content: "\f165";
1371 | }
1372 | .icon-youtube-sign:before {
1373 | content: "\f166";
1374 | }
1375 | .icon-youtube:before {
1376 | content: "\f167";
1377 | }
1378 | .icon-xing:before {
1379 | content: "\f168";
1380 | }
1381 | .icon-xing-sign:before {
1382 | content: "\f169";
1383 | }
1384 | .icon-youtube-play:before {
1385 | content: "\f16a";
1386 | }
1387 | .icon-dropbox:before {
1388 | content: "\f16b";
1389 | }
1390 | .icon-stackexchange:before {
1391 | content: "\f16c";
1392 | }
1393 | .icon-instagram:before {
1394 | content: "\f16d";
1395 | }
1396 | .icon-flickr:before {
1397 | content: "\f16e";
1398 | }
1399 | .icon-adn:before {
1400 | content: "\f170";
1401 | }
1402 | .icon-bitbucket:before {
1403 | content: "\f171";
1404 | }
1405 | .icon-bitbucket-sign:before {
1406 | content: "\f172";
1407 | }
1408 | .icon-tumblr:before {
1409 | content: "\f173";
1410 | }
1411 | .icon-tumblr-sign:before {
1412 | content: "\f174";
1413 | }
1414 | .icon-long-arrow-down:before {
1415 | content: "\f175";
1416 | }
1417 | .icon-long-arrow-up:before {
1418 | content: "\f176";
1419 | }
1420 | .icon-long-arrow-left:before {
1421 | content: "\f177";
1422 | }
1423 | .icon-long-arrow-right:before {
1424 | content: "\f178";
1425 | }
1426 | .icon-apple:before {
1427 | content: "\f179";
1428 | }
1429 | .icon-windows:before {
1430 | content: "\f17a";
1431 | }
1432 | .icon-android:before {
1433 | content: "\f17b";
1434 | }
1435 | .icon-linux:before {
1436 | content: "\f17c";
1437 | }
1438 | .icon-dribbble:before {
1439 | content: "\f17d";
1440 | }
1441 | .icon-skype:before {
1442 | content: "\f17e";
1443 | }
1444 | .icon-foursquare:before {
1445 | content: "\f180";
1446 | }
1447 | .icon-trello:before {
1448 | content: "\f181";
1449 | }
1450 | .icon-female:before {
1451 | content: "\f182";
1452 | }
1453 | .icon-male:before {
1454 | content: "\f183";
1455 | }
1456 | .icon-gittip:before {
1457 | content: "\f184";
1458 | }
1459 | .icon-sun:before {
1460 | content: "\f185";
1461 | }
1462 | .icon-moon:before {
1463 | content: "\f186";
1464 | }
1465 | .icon-archive:before {
1466 | content: "\f187";
1467 | }
1468 | .icon-bug:before {
1469 | content: "\f188";
1470 | }
1471 | .icon-vk:before {
1472 | content: "\f189";
1473 | }
1474 | .icon-weibo:before {
1475 | content: "\f18a";
1476 | }
1477 | .icon-renren:before {
1478 | content: "\f18b";
1479 | }
1480 |
--------------------------------------------------------------------------------
/assets/javascripts/rickshaw-1.4.3.min.js:
--------------------------------------------------------------------------------
1 | var Rickshaw={namespace:function(namespace,obj){var parts=namespace.split(".");var parent=Rickshaw;for(var i=1,length=parts.length;i
![]()
4 | 5 |