snapstats 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/app/assets/javascripts/snapstats/application.js +19 -0
  5. data/app/assets/javascripts/snapstats/lib/d3.min.js +5 -0
  6. data/app/assets/javascripts/snapstats/lib/jquery.min.js +4 -0
  7. data/app/assets/javascripts/snapstats/lib/metricsgraphics.min.js +3 -0
  8. data/app/assets/javascripts/snapstats/main/main_controller.js +51 -0
  9. data/app/assets/javascripts/snapstats/performances/performances_controller.js +49 -0
  10. data/app/assets/javascripts/snapstats/users/users_controller.js +47 -0
  11. data/app/assets/stylesheets/snapstats/animate.css +3158 -0
  12. data/app/assets/stylesheets/snapstats/app.css +58 -0
  13. data/app/assets/stylesheets/snapstats/application.css +18 -0
  14. data/app/assets/stylesheets/snapstats/bootstrap.min.css +5 -0
  15. data/app/assets/stylesheets/snapstats/metricsgraphics-demo-dark.css +636 -0
  16. data/app/assets/stylesheets/snapstats/metricsgraphics.css +363 -0
  17. data/app/controllers/snapstats/application_controller.rb +5 -0
  18. data/app/controllers/snapstats/mains_controller.rb +18 -0
  19. data/app/controllers/snapstats/performances_controller.rb +18 -0
  20. data/app/controllers/snapstats/users_controller.rb +22 -0
  21. data/app/helpers/snapstats/application_helper.rb +7 -0
  22. data/app/views/layouts/snapstats/application.html.erb +20 -0
  23. data/app/views/snapstats/application/_main_menu.html.erb +8 -0
  24. data/app/views/snapstats/mains/show.html.erb +87 -0
  25. data/app/views/snapstats/performances/show.html.erb +80 -0
  26. data/app/views/snapstats/users/activity.html.erb +49 -0
  27. data/app/views/snapstats/users/show.html.erb +32 -0
  28. data/config/routes.rb +23 -0
  29. data/lib/event_logger/event_logger.rb +45 -0
  30. data/lib/event_logger/event_logger_static.rb +55 -0
  31. data/lib/event_logger/event_logger_store.rb +89 -0
  32. data/lib/event_reader/event_reader.rb +168 -0
  33. data/lib/ext/redis.rb +19 -0
  34. data/lib/snapstats/engine.rb +9 -0
  35. data/lib/snapstats/version.rb +3 -0
  36. data/lib/snapstats.rb +8 -0
  37. data/lib/tasks/snapstats_tasks.rake +4 -0
  38. data/test/dummy/README.rdoc +28 -0
  39. data/test/dummy/Rakefile +6 -0
  40. data/test/dummy/app/assets/javascripts/application.js +13 -0
  41. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  42. data/test/dummy/app/controllers/application_controller.rb +5 -0
  43. data/test/dummy/app/helpers/application_helper.rb +2 -0
  44. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  45. data/test/dummy/bin/bundle +3 -0
  46. data/test/dummy/bin/rails +4 -0
  47. data/test/dummy/bin/rake +4 -0
  48. data/test/dummy/config/application.rb +23 -0
  49. data/test/dummy/config/boot.rb +5 -0
  50. data/test/dummy/config/database.yml +25 -0
  51. data/test/dummy/config/environment.rb +5 -0
  52. data/test/dummy/config/environments/development.rb +29 -0
  53. data/test/dummy/config/environments/production.rb +80 -0
  54. data/test/dummy/config/environments/test.rb +36 -0
  55. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  56. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  57. data/test/dummy/config/initializers/inflections.rb +16 -0
  58. data/test/dummy/config/initializers/mime_types.rb +5 -0
  59. data/test/dummy/config/initializers/secret_token.rb +12 -0
  60. data/test/dummy/config/initializers/session_store.rb +3 -0
  61. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  62. data/test/dummy/config/locales/en.yml +23 -0
  63. data/test/dummy/config/routes.rb +4 -0
  64. data/test/dummy/config.ru +4 -0
  65. data/test/dummy/public/404.html +58 -0
  66. data/test/dummy/public/422.html +58 -0
  67. data/test/dummy/public/500.html +57 -0
  68. data/test/dummy/public/favicon.ico +0 -0
  69. data/test/integration/navigation_test.rb +10 -0
  70. data/test/snapstats_test.rb +7 -0
  71. data/test/test_helper.rb +15 -0
  72. metadata +206 -0
@@ -0,0 +1,636 @@
1
+ a,
2
+ a:active,
3
+ a:visited {
4
+ color: #71b4eb;
5
+ }
6
+
7
+ a:hover {
8
+ color: #71b4eb;
9
+ }
10
+
11
+ a.active {
12
+ color: #fff;
13
+ }
14
+
15
+ .mg-active-datapoint {
16
+ fill: #fff;
17
+ }
18
+
19
+ .mg-area1-color {
20
+ fill: #ffd300;
21
+ }
22
+
23
+ .mg-area2-color {
24
+ fill: #18ff00;
25
+ }
26
+
27
+ .mg-area3-color {
28
+ fill: #f57070;
29
+ }
30
+
31
+ .mg-area4-color {
32
+ fill: #BF96E8;
33
+ }
34
+
35
+ .mg-area5-color {
36
+ fill: #f7f7f7;
37
+ }
38
+
39
+ .mg-barplot .mg-bar-prediction {
40
+ fill: #5b5b5b;
41
+ }
42
+
43
+ .mg-barplot .mg-bar-baseline {
44
+ stroke: #5b5b5b;
45
+ }
46
+
47
+ .mg-baselines line {
48
+ stroke: #676767;
49
+ }
50
+
51
+ .mg-baselines text {
52
+ fill: #fff;
53
+ }
54
+
55
+ body {
56
+ background-color: #272727;
57
+ color: #cfcfcf;
58
+ }
59
+
60
+ .divider {
61
+ color: #f1f1f1;
62
+ opacity: 0.1;
63
+ }
64
+
65
+ h1 {
66
+ color: #f1f1f1;
67
+ }
68
+
69
+ h2.chart_title span {
70
+ color: #f1f1f1;
71
+ }
72
+
73
+ .mg-histogram .axis path,
74
+ .mg-histogram .axis line {
75
+ opacity: 0.5;
76
+ stroke: #ccc;
77
+ }
78
+
79
+ .mg-histogram .mg-bar rect,
80
+ .mg-barplot rect.mg-bar {
81
+ fill: #d8b307;
82
+ }
83
+
84
+ .mg-histogram .mg-bar rect.active,
85
+ .mg-barplot rect.mg-bar.active {
86
+ fill: #b3960f;
87
+ }
88
+
89
+ .mg-histogram .mg-bar text {
90
+ fill: #fff;
91
+ }
92
+
93
+ .mg-histogram .axis .tick line {
94
+ opacity: 0.3;
95
+ }
96
+
97
+ li {
98
+ color: #cfcfcf;
99
+ }
100
+
101
+ .mg-least-squares-line {
102
+ stroke: #f57070;
103
+ }
104
+
105
+ .mg-line1-color {
106
+ stroke: #ffd300;
107
+ }
108
+
109
+ .mg-line2-color {
110
+ stroke: #18ff00;
111
+ }
112
+
113
+ .mg-line3-color {
114
+ stroke: #f57070;
115
+ }
116
+
117
+ .mg-line4-color {
118
+ stroke: #BF96E8;
119
+ }
120
+
121
+ .mg-line5-color {
122
+ stroke: #f7f7f7;
123
+ }
124
+
125
+ .mg-line1-legend-color {
126
+ color: #ffd300;
127
+ }
128
+
129
+ .mg-line2-legend-color {
130
+ color: #18ff00;
131
+ }
132
+
133
+ .mg-line3-legend-color {
134
+ color: #f57070;
135
+ }
136
+
137
+ .mg-line4-legend-color {
138
+ color: #BF96E8;
139
+ }
140
+
141
+ .mg-line5-legend-color {
142
+ color: #f7f7f7;
143
+ }
144
+
145
+ #logo g path {
146
+ fill: #e8e8e8;
147
+ }
148
+
149
+ .mg-main-area-solid svg .mg-main-area {
150
+ fill: #52491f;
151
+ }
152
+
153
+ .mg-markers line {
154
+ stroke: #676767;
155
+ }
156
+
157
+ .mg-markers text {
158
+ fill: #fff;
159
+ }
160
+
161
+ circle.mg-points-mono {
162
+ fill-opacity: 0.6;
163
+ stroke: #a89641;
164
+ fill: #a89641;
165
+ stroke-opacity: 1;
166
+ }
167
+
168
+ circle.mg-points-mono.selected {
169
+ fill: #a89641;
170
+ fill-opacity: 1;
171
+ stroke-opacity: 1;
172
+ }
173
+
174
+ .popover {
175
+ color: #737373;
176
+ }
177
+
178
+ text {
179
+ fill: #fff;
180
+ }
181
+
182
+ .mg-x-rug-mono,
183
+ .mg-y-rug-mono {
184
+ stroke: #cfcfcf;
185
+ }
186
+
187
+ .mg-x-axis line,
188
+ .mg-y-axis line {
189
+ stroke: #676767;
190
+ }
191
+
192
+ .mg-x-axis text,
193
+ .mg-y-axis text,
194
+ .mg-histogram .axis text {
195
+ fill: #fff;
196
+ }
197
+
198
+ .mg-year-marker text {
199
+ fill: #fff;
200
+ }
201
+
202
+ .mg-year-marker line {
203
+ stroke: #676767;
204
+ }
205
+
206
+ /*
207
+ CSS from http://bootswatch.com/slate
208
+ Made by Thomas Park. Contact him at thomas@bootswatch.com
209
+ Code released under the MIT License.
210
+ */
211
+ .btn:active, .btn.active {
212
+ outline: 0;
213
+ background-image: none;
214
+ -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0.125);
215
+ box-shadow: inset 0 3px 5px rgba(0,0,0,0.125);
216
+ }
217
+
218
+ .btn.disabled,.btn[disabled],fieldset[disabled] .btn {
219
+ cursor: not-allowed;
220
+ pointer-events: none;
221
+ opacity: 0.65;
222
+ filter: alpha(opacity=65);
223
+ -webkit-box-shadow: none;
224
+ box-shadow: none;
225
+ }
226
+
227
+ .btn-default {
228
+ color: #ffffff;
229
+ background-color: #3a3f44;
230
+ border-color: #3a3f44;
231
+ }
232
+
233
+ .btn-default:hover,
234
+ .btn-default:focus,
235
+ .btn-default:active,
236
+ .btn-default.active,
237
+ .open .dropdown-toggle.btn-default {
238
+ color: #ffffff;
239
+ background-color: #272b2e;
240
+ border-color: #1e2023;
241
+ }
242
+
243
+ .btn-default:active,
244
+ .btn-default.active,
245
+ .open .dropdown-toggle.btn-default {
246
+ background-image: none;
247
+ }
248
+
249
+ .btn-default.disabled,
250
+ .btn-default[disabled],
251
+ fieldset[disabled] .btn-default,
252
+ .btn-default.disabled:hover,
253
+ .btn-default[disabled]:hover,
254
+ fieldset[disabled] .btn-default:hover,
255
+ .btn-default.disabled:focus,
256
+ .btn-default[disabled]:focus,
257
+ fieldset[disabled] .btn-default:focus,
258
+ .btn-default.disabled:active,
259
+ .btn-default[disabled]:active,
260
+ fieldset[disabled] .btn-default:active,
261
+ .btn-default.disabled.active,
262
+ .btn-default[disabled].active,
263
+ fieldset[disabled] .btn-default.active {
264
+ background-color: #3a3f44;
265
+ border-color: #3a3f44;
266
+ }
267
+
268
+ .btn-default .badge {
269
+ color: #3a3f44;
270
+ background-color: #ffffff;
271
+ }
272
+
273
+ .btn-primary {
274
+ color: #ffffff;
275
+ background-color: #7a8288;
276
+ border-color: #7a8288;
277
+ }
278
+
279
+ .btn-primary:hover,
280
+ .btn-primary:focus,
281
+ .btn-primary:active,
282
+ .btn-primary.active,
283
+ .open .dropdown-toggle.btn-primary {
284
+ color: #ffffff;
285
+ background-color: #676d73;
286
+ border-color: #5d6368;
287
+ }
288
+
289
+ .btn-primary:active,
290
+ .btn-primary.active,
291
+ .open .dropdown-toggle.btn-primary {
292
+ background-image: none;
293
+ }
294
+
295
+ .btn-primary.disabled,
296
+ .btn-primary[disabled],
297
+ fieldset[disabled] .btn-primary,
298
+ .btn-primary.disabled:hover,
299
+ .btn-primary[disabled]:hover,
300
+ fieldset[disabled] .btn-primary:hover,
301
+ .btn-primary.disabled:focus,
302
+ .btn-primary[disabled]:focus,
303
+ fieldset[disabled] .btn-primary:focus,
304
+ .btn-primary.disabled:active,
305
+ .btn-primary[disabled]:active,
306
+ fieldset[disabled] .btn-primary:active,
307
+ .btn-primary.disabled.active,
308
+ .btn-primary[disabled].active,
309
+ fieldset[disabled] .btn-primary.active {
310
+ background-color: #7a8288;
311
+ border-color: #7a8288;
312
+ }
313
+
314
+ .btn-primary .badge {
315
+ color: #7a8288;
316
+ background-color: #ffffff;
317
+ }
318
+
319
+ .btn-success {
320
+ color: #ffffff;
321
+ background-color: #62c462;
322
+ border-color: #62c462;
323
+ }
324
+
325
+ .btn-success:hover,
326
+ .btn-success:focus,
327
+ .btn-success:active,
328
+ .btn-success.active,
329
+ .open .dropdown-toggle.btn-success {
330
+ color: #ffffff;
331
+ background-color: #45b845;
332
+ border-color: #40a940;
333
+ }
334
+
335
+ .btn-success:active,
336
+ .btn-success.active,
337
+ .open .dropdown-toggle.btn-success {
338
+ background-image: none;
339
+ }
340
+
341
+ .btn-success.disabled,
342
+ .btn-success[disabled],
343
+ fieldset[disabled] .btn-success,
344
+ .btn-success.disabled:hover,
345
+ .btn-success[disabled]:hover,
346
+ fieldset[disabled] .btn-success:hover,
347
+ .btn-success.disabled:focus,
348
+ .btn-success[disabled]:focus,
349
+ fieldset[disabled] .btn-success:focus,
350
+ .btn-success.disabled:active,
351
+ .btn-success[disabled]:active,
352
+ fieldset[disabled] .btn-success:active,
353
+ .btn-success.disabled.active,
354
+ .btn-success[disabled].active,
355
+ fieldset[disabled] .btn-success.active {
356
+ background-color: #62c462;
357
+ border-color: #62c462;
358
+ }
359
+
360
+ .btn-success .badge {
361
+ color: #62c462;
362
+ background-color: #ffffff;
363
+ }
364
+
365
+ .btn-info {
366
+ color: #ffffff;
367
+ background-color: #5bc0de;
368
+ border-color: #5bc0de;
369
+ }
370
+
371
+ .btn-info:hover,
372
+ .btn-info:focus,
373
+ .btn-info:active,
374
+ .btn-info.active,
375
+ .open .dropdown-toggle.btn-info {
376
+ color: #ffffff;
377
+ background-color: #39b3d7;
378
+ border-color: #2aabd2;
379
+ }
380
+
381
+ .btn-info:active,
382
+ .btn-info.active,
383
+ .open .dropdown-toggle.btn-info {
384
+ background-image: none;
385
+ }
386
+
387
+ .btn-info.disabled,.btn-info[disabled],
388
+ fieldset[disabled] .btn-info,
389
+ .btn-info.disabled:hover,
390
+ .btn-info[disabled]:hover,
391
+ fieldset[disabled] .btn-info:hover,
392
+ .btn-info.disabled:focus,
393
+ .btn-info[disabled]:focus,
394
+ fieldset[disabled] .btn-info:focus,
395
+ .btn-info.disabled:active,
396
+ .btn-info[disabled]:active,
397
+ fieldset[disabled] .btn-info:active,
398
+ .btn-info.disabled.active,
399
+ .btn-info[disabled].active,
400
+ fieldset[disabled] .btn-info.active {
401
+ background-color: #5bc0de;
402
+ border-color: #5bc0de;
403
+ }
404
+
405
+ .btn-info .badge {
406
+ color: #5bc0de;
407
+ background-color: #ffffff;
408
+ }
409
+
410
+ .btn-warning {
411
+ color: #ffffff;
412
+ background-color: #f89406;
413
+ border-color: #f89406;
414
+ }
415
+
416
+ .btn-warning:hover,.btn-warning:focus,
417
+ .btn-warning:active,.btn-warning.active,
418
+ .open .dropdown-toggle.btn-warning {
419
+ color: #ffffff;
420
+ background-color: #d07c05;
421
+ border-color: #bc7005;
422
+ }
423
+
424
+ .btn-warning:active,
425
+ .btn-warning.active,
426
+ .open .dropdown-toggle.btn-warning {
427
+ background-image: none;
428
+ }
429
+
430
+ .btn-warning.disabled,.btn-warning[disabled],
431
+ fieldset[disabled] .btn-warning,
432
+ .btn-warning.disabled:hover,
433
+ .btn-warning[disabled]:hover,
434
+ fieldset[disabled] .btn-warning:hover,
435
+ .btn-warning.disabled:focus,
436
+ .btn-warning[disabled]:focus,
437
+ fieldset[disabled] .btn-warning:focus,
438
+ .btn-warning.disabled:active,
439
+ .btn-warning[disabled]:active,
440
+ fieldset[disabled] .btn-warning:active,
441
+ .btn-warning.disabled.active,
442
+ .btn-warning[disabled].active,
443
+ fieldset[disabled] .btn-warning.active {
444
+ background-color: #f89406;
445
+ border-color: #f89406;
446
+ }
447
+
448
+ .btn-warning .badge {
449
+ color: #f89406;
450
+ background-color: #ffffff;
451
+ }
452
+
453
+ .btn-danger {
454
+ color: #ffffff;
455
+ background-color: #ee5f5b;
456
+ border-color: #ee5f5b;
457
+ }
458
+
459
+ .btn-danger:hover,
460
+ .btn-danger:focus,
461
+ .btn-danger:active,
462
+ .btn-danger.active,
463
+ .open .dropdown-toggle.btn-danger {
464
+ color: #ffffff;
465
+ background-color: #ea3b36;
466
+ border-color: #e82924;
467
+ }
468
+
469
+ .btn-danger:active,.btn-danger.active,
470
+ .open .dropdown-toggle.btn-danger {
471
+ background-image: none;
472
+ }
473
+
474
+ .btn-danger.disabled,
475
+ .btn-danger[disabled],
476
+ fieldset[disabled] .btn-danger,
477
+ .btn-danger.disabled:hover,
478
+ .btn-danger[disabled]:hover,
479
+ fieldset[disabled] .btn-danger:hover,
480
+ .btn-danger.disabled:focus,
481
+ .btn-danger[disabled]:focus,
482
+ fieldset[disabled] .btn-danger:focus,
483
+ .btn-danger.disabled:active,
484
+ .btn-danger[disabled]:active,
485
+ fieldset[disabled] .btn-danger:active,
486
+ .btn-danger.disabled.active,
487
+ .btn-danger[disabled].active,
488
+ fieldset[disabled] .btn-danger.active {
489
+ background-color: #ee5f5b;
490
+ border-color: #ee5f5b;
491
+ }
492
+
493
+ .btn-danger .badge {
494
+ color: #ee5f5b;
495
+ background-color: #ffffff;
496
+ }
497
+
498
+ .btn-link {
499
+ color: #ffffff;
500
+ font-weight: normal;
501
+ cursor: pointer;
502
+ border-radius: 0;
503
+ }
504
+
505
+ .btn-link,.btn-link:active,
506
+ .btn-link[disabled],
507
+ fieldset[disabled] .btn-link {
508
+ background-color: transparent;
509
+ -webkit-box-shadow: none;
510
+ box-shadow: none;
511
+ }
512
+
513
+ .btn-link,.btn-link:hover,
514
+ .btn-link:focus,
515
+ .btn-link:active {
516
+ border-color: transparent;
517
+ }
518
+
519
+ .btn-link:hover,.btn-link:focus {
520
+ color: #ffffff;
521
+ text-decoration: underline;
522
+ background-color: transparent;
523
+ }
524
+
525
+ .btn-link[disabled]:hover,
526
+ fieldset[disabled] .btn-link:hover,
527
+ .btn-link[disabled]:focus,
528
+ fieldset[disabled] .btn-link:focus {
529
+ color: #7a8288;
530
+ text-decoration: none;
531
+ }
532
+
533
+ .btn,.btn:hover {
534
+ border-color: rgba(0,0,0,0.6);
535
+ text-shadow: 1px 1px 1px rgba(0,0,0,0.3);
536
+ }
537
+
538
+ .btn-default {
539
+ background-image: -webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);
540
+ background-image: linear-gradient(#484e55, #3a3f44 60%, #313539);
541
+ background-repeat: no-repeat;
542
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);
543
+ filter: none;
544
+ }
545
+
546
+ .btn-default:hover {
547
+ background-image: -webkit-linear-gradient(#020202, #101112 40%, #191b1d);
548
+ background-image: linear-gradient(#020202, #101112 40%, #191b1d);
549
+ background-repeat: no-repeat;
550
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);
551
+ filter: none;
552
+ }
553
+
554
+ .btn-primary {
555
+ background-image: -webkit-linear-gradient(#8a9196, #7a8288 60%, #70787d);
556
+ background-image: linear-gradient(#8a9196, #7a8288 60%, #70787d);
557
+ background-repeat: no-repeat;
558
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8a9196', endColorstr='#ff70787d', GradientType=0);
559
+ filter: none;
560
+ }
561
+
562
+ .btn-primary:hover {
563
+ background-image: -webkit-linear-gradient(#404448, #4e5458 40%, #585e62);
564
+ background-image: linear-gradient(#404448, #4e5458 40%, #585e62);
565
+ background-repeat: no-repeat;
566
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff404448', endColorstr='#ff585e62', GradientType=0);
567
+ filter: none;
568
+ }
569
+
570
+ .btn-success {
571
+ background-image: -webkit-linear-gradient(#78cc78, #62c462 60%, #53be53);
572
+ background-image: linear-gradient(#78cc78, #62c462 60%, #53be53);
573
+ background-repeat: no-repeat;
574
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff78cc78', endColorstr='#ff53be53', GradientType=0);
575
+ filter: none;
576
+ }
577
+
578
+ .btn-success:hover {
579
+ background-image: -webkit-linear-gradient(#2f7d2f, #379337 40%, #3da23d);
580
+ background-image: linear-gradient(#2f7d2f, #379337 40%, #3da23d);
581
+ background-repeat: no-repeat;
582
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f7d2f', endColorstr='#ff3da23d', GradientType=0);
583
+ filter: none;
584
+ }
585
+
586
+ .btn-info {
587
+ background-image: -webkit-linear-gradient(#74cae3, #5bc0de 60%, #4ab9db);
588
+ background-image: linear-gradient(#74cae3, #5bc0de 60%, #4ab9db);
589
+ background-repeat: no-repeat;
590
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74cae3', endColorstr='#ff4ab9db', GradientType=0);
591
+ filter: none;
592
+ }
593
+
594
+ .btn-info:hover {
595
+ background-image: -webkit-linear-gradient(#20829f, #2596b8 40%, #28a4c9);
596
+ background-image: linear-gradient(#20829f, #2596b8 40%, #28a4c9);
597
+ background-repeat: no-repeat;
598
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff20829f', endColorstr='#ff28a4c9', GradientType=0);
599
+ filter: none;
600
+ }
601
+
602
+ .btn-warning {
603
+ background-image: -webkit-linear-gradient(#faa123, #f89406 60%, #e48806);
604
+ background-image: linear-gradient(#faa123, #f89406 60%, #e48806);
605
+ background-repeat: no-repeat;
606
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffaa123', endColorstr='#ffe48806', GradientType=0);
607
+ filter: none;
608
+ }
609
+
610
+ .btn-warning:hover {
611
+ background-image: -webkit-linear-gradient(#804d03, #9e5f04 40%, #b26a04);
612
+ background-image: linear-gradient(#804d03, #9e5f04 40%, #b26a04);
613
+ background-repeat: no-repeat;
614
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff804d03', endColorstr='#ffb26a04', GradientType=0);
615
+ filter: none;
616
+ }
617
+
618
+ .btn-danger {
619
+ background-image: -webkit-linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49);
620
+ background-image: linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49);
621
+ background-repeat: no-repeat;
622
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff17a77', endColorstr='#ffec4d49', GradientType=0);
623
+ filter: none;
624
+ }
625
+
626
+ .btn-danger:hover {
627
+ background-image: -webkit-linear-gradient(#bb1813, #d71c16 40%, #e7201a);
628
+ background-image: linear-gradient(#bb1813, #d71c16 40%, #e7201a);
629
+ background-repeat: no-repeat;
630
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbb1813', endColorstr='#ffe7201a', GradientType=0);
631
+ filter: none;
632
+ }
633
+
634
+ .btn-link,.btn-link:hover {
635
+ border-color: transparent;
636
+ }