blackbeard 0.0.2.0 → 0.0.3.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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -0
  3. data/Guardfile +8 -0
  4. data/README.md +162 -20
  5. data/Rakefile +6 -0
  6. data/TODO.md +13 -34
  7. data/blackbeard.gemspec +5 -1
  8. data/console.rb +3 -0
  9. data/dashboard/public/bootstrap3-editable/css/bootstrap-editable.css +663 -0
  10. data/dashboard/public/bootstrap3-editable/img/clear.png +0 -0
  11. data/dashboard/public/bootstrap3-editable/img/loading.gif +0 -0
  12. data/dashboard/public/bootstrap3-editable/js/bootstrap-editable.min.js +7 -0
  13. data/dashboard/public/fonts/glyphicons-halflings-regular.eot +0 -0
  14. data/dashboard/public/fonts/glyphicons-halflings-regular.svg +229 -0
  15. data/dashboard/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  16. data/dashboard/public/fonts/glyphicons-halflings-regular.woff +0 -0
  17. data/dashboard/public/javascripts/bootstrap.min.js +7 -0
  18. data/dashboard/public/javascripts/jquery-1.10.2.min.js +6 -0
  19. data/dashboard/public/stylesheets/application.css +28 -0
  20. data/dashboard/public/stylesheets/bootstrap-theme.css +7 -0
  21. data/dashboard/public/stylesheets/bootstrap.css +7 -0
  22. data/dashboard/routes/base.rb +19 -0
  23. data/dashboard/routes/groups.rb +22 -0
  24. data/dashboard/routes/home.rb +11 -0
  25. data/dashboard/routes/metrics.rb +30 -0
  26. data/dashboard/routes/tests.rb +23 -0
  27. data/dashboard/views/groups/index.erb +22 -0
  28. data/dashboard/views/groups/show.erb +58 -0
  29. data/dashboard/views/index.erb +4 -0
  30. data/dashboard/views/layout.erb +48 -0
  31. data/dashboard/views/metrics/_metric_data.erb +59 -0
  32. data/dashboard/views/metrics/index.erb +23 -0
  33. data/dashboard/views/metrics/show.erb +73 -0
  34. data/dashboard/views/tests/index.erb +21 -0
  35. data/dashboard/views/tests/show.erb +58 -0
  36. data/lib/blackbeard/configuration.rb +8 -1
  37. data/lib/blackbeard/configuration_methods.rb +24 -0
  38. data/lib/blackbeard/context.rb +33 -21
  39. data/lib/blackbeard/dashboard.rb +17 -21
  40. data/lib/blackbeard/dashboard_helpers.rb +29 -0
  41. data/lib/blackbeard/errors.rb +2 -2
  42. data/lib/blackbeard/group.rb +35 -0
  43. data/lib/blackbeard/metric.rb +34 -32
  44. data/lib/blackbeard/metric_data/base.rb +101 -0
  45. data/lib/blackbeard/metric_data/total.rb +39 -0
  46. data/lib/blackbeard/metric_data/unique.rb +58 -0
  47. data/lib/blackbeard/metric_date.rb +11 -0
  48. data/lib/blackbeard/metric_hour.rb +17 -0
  49. data/lib/blackbeard/pirate.rb +33 -22
  50. data/lib/blackbeard/redis_store.rb +46 -2
  51. data/lib/blackbeard/selected_variation.rb +13 -0
  52. data/lib/blackbeard/storable.rb +39 -27
  53. data/lib/blackbeard/storable_attributes.rb +54 -0
  54. data/lib/blackbeard/storable_has_many.rb +60 -0
  55. data/lib/blackbeard/storable_has_set.rb +59 -0
  56. data/lib/blackbeard/test.rb +21 -0
  57. data/lib/blackbeard/version.rb +1 -1
  58. data/lib/blackbeard.rb +0 -8
  59. data/spec/configuration_spec.rb +15 -0
  60. data/spec/context_spec.rb +94 -19
  61. data/spec/dashboard/groups_spec.rb +50 -0
  62. data/spec/dashboard/home_spec.rb +20 -0
  63. data/spec/dashboard/metrics_spec.rb +57 -0
  64. data/spec/dashboard/tests_spec.rb +43 -0
  65. data/spec/group_spec.rb +36 -0
  66. data/spec/metric_data/base_spec.rb +57 -0
  67. data/spec/metric_data/total_spec.rb +116 -0
  68. data/spec/metric_data/unique_spec.rb +91 -0
  69. data/spec/metric_spec.rb +52 -44
  70. data/spec/pirate_spec.rb +32 -15
  71. data/spec/redis_store_spec.rb +121 -0
  72. data/spec/spec_helper.rb +13 -1
  73. data/spec/storable_attributes_spec.rb +47 -0
  74. data/spec/storable_has_many_spec.rb +49 -0
  75. data/spec/storable_has_set_spec.rb +39 -0
  76. data/spec/storable_spec.rb +33 -0
  77. data/spec/test_spec.rb +25 -0
  78. metadata +133 -17
  79. data/lib/blackbeard/dashboard/helpers.rb +0 -8
  80. data/lib/blackbeard/dashboard/views/layout.erb +0 -15
  81. data/lib/blackbeard/dashboard/views/metrics/index.erb +0 -10
  82. data/lib/blackbeard/dashboard/views/metrics/show.erb +0 -16
  83. data/lib/blackbeard/feature.rb +0 -13
  84. data/lib/blackbeard/metric/total.rb +0 -17
  85. data/lib/blackbeard/metric/unique.rb +0 -18
  86. data/spec/dashboard_spec.rb +0 -38
  87. data/spec/total_metric_spec.rb +0 -65
  88. data/spec/unique_metric_spec.rb +0 -60
@@ -0,0 +1,663 @@
1
+ /*! X-editable - v1.5.1
2
+ * In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
3
+ * http://github.com/vitalets/x-editable
4
+ * Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
5
+ .editableform {
6
+ margin-bottom: 0; /* overwrites bootstrap margin */
7
+ }
8
+
9
+ .editableform .control-group {
10
+ margin-bottom: 0; /* overwrites bootstrap margin */
11
+ white-space: nowrap; /* prevent wrapping buttons on new line */
12
+ line-height: 20px; /* overwriting bootstrap line-height. See #133 */
13
+ }
14
+
15
+ /*
16
+ BS3 width:1005 for inputs breaks editable form in popup
17
+ See: https://github.com/vitalets/x-editable/issues/393
18
+ */
19
+ .editableform .form-control {
20
+ width: auto;
21
+ }
22
+
23
+ .editable-buttons {
24
+ display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
25
+ vertical-align: top;
26
+ margin-left: 7px;
27
+ /* inline-block emulation for IE7*/
28
+ zoom: 1;
29
+ *display: inline;
30
+ }
31
+
32
+ .editable-buttons.editable-buttons-bottom {
33
+ display: block;
34
+ margin-top: 7px;
35
+ margin-left: 0;
36
+ }
37
+
38
+ .editable-input {
39
+ vertical-align: top;
40
+ display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
41
+ width: auto; /* bootstrap-responsive has width: 100% that breakes layout */
42
+ white-space: normal; /* reset white-space decalred in parent*/
43
+ /* display-inline emulation for IE7*/
44
+ zoom: 1;
45
+ *display: inline;
46
+ }
47
+
48
+ .editable-buttons .editable-cancel {
49
+ margin-left: 7px;
50
+ }
51
+
52
+ /*for jquery-ui buttons need set height to look more pretty*/
53
+ .editable-buttons button.ui-button-icon-only {
54
+ height: 24px;
55
+ width: 30px;
56
+ }
57
+
58
+ .editableform-loading {
59
+ background: url('../img/loading.gif') center center no-repeat;
60
+ height: 25px;
61
+ width: auto;
62
+ min-width: 25px;
63
+ }
64
+
65
+ .editable-inline .editableform-loading {
66
+ background-position: left 5px;
67
+ }
68
+
69
+ .editable-error-block {
70
+ max-width: 300px;
71
+ margin: 5px 0 0 0;
72
+ width: auto;
73
+ white-space: normal;
74
+ }
75
+
76
+ /*add padding for jquery ui*/
77
+ .editable-error-block.ui-state-error {
78
+ padding: 3px;
79
+ }
80
+
81
+ .editable-error {
82
+ color: red;
83
+ }
84
+
85
+ /* ---- For specific types ---- */
86
+
87
+ .editableform .editable-date {
88
+ padding: 0;
89
+ margin: 0;
90
+ float: left;
91
+ }
92
+
93
+ /* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */
94
+ .editable-inline .add-on .icon-th {
95
+ margin-top: 3px;
96
+ margin-left: 1px;
97
+ }
98
+
99
+
100
+ /* checklist vertical alignment */
101
+ .editable-checklist label input[type="checkbox"],
102
+ .editable-checklist label span {
103
+ vertical-align: middle;
104
+ margin: 0;
105
+ }
106
+
107
+ .editable-checklist label {
108
+ white-space: nowrap;
109
+ }
110
+
111
+ /* set exact width of textarea to fit buttons toolbar */
112
+ .editable-wysihtml5 {
113
+ width: 566px;
114
+ height: 250px;
115
+ }
116
+
117
+ /* clear button shown as link in date inputs */
118
+ .editable-clear {
119
+ clear: both;
120
+ font-size: 0.9em;
121
+ text-decoration: none;
122
+ text-align: right;
123
+ }
124
+
125
+ /* IOS-style clear button for text inputs */
126
+ .editable-clear-x {
127
+ background: url('../img/clear.png') center center no-repeat;
128
+ display: block;
129
+ width: 13px;
130
+ height: 13px;
131
+ position: absolute;
132
+ opacity: 0.6;
133
+ z-index: 100;
134
+
135
+ top: 50%;
136
+ right: 6px;
137
+ margin-top: -6px;
138
+
139
+ }
140
+
141
+ .editable-clear-x:hover {
142
+ opacity: 1;
143
+ }
144
+
145
+ .editable-pre-wrapped {
146
+ white-space: pre-wrap;
147
+ }
148
+ .editable-container.editable-popup {
149
+ max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
150
+ }
151
+
152
+ .editable-container.popover {
153
+ width: auto; /* without this rule popover does not stretch */
154
+ }
155
+
156
+ .editable-container.editable-inline {
157
+ display: inline-block;
158
+ vertical-align: middle;
159
+ width: auto;
160
+ /* inline-block emulation for IE7*/
161
+ zoom: 1;
162
+ *display: inline;
163
+ }
164
+
165
+ .editable-container.ui-widget {
166
+ font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */
167
+ z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */
168
+ }
169
+ .editable-click,
170
+ a.editable-click,
171
+ a.editable-click:hover {
172
+ text-decoration: none;
173
+ border-bottom: dashed 1px #0088cc;
174
+ }
175
+
176
+ .editable-click.editable-disabled,
177
+ a.editable-click.editable-disabled,
178
+ a.editable-click.editable-disabled:hover {
179
+ color: #585858;
180
+ cursor: default;
181
+ border-bottom: none;
182
+ }
183
+
184
+ .editable-empty, .editable-empty:hover, .editable-empty:focus{
185
+ font-style: italic;
186
+ color: #DD1144;
187
+ /* border-bottom: none; */
188
+ text-decoration: none;
189
+ }
190
+
191
+ .editable-unsaved {
192
+ font-weight: bold;
193
+ }
194
+
195
+ .editable-unsaved:after {
196
+ /* content: '*'*/
197
+ }
198
+
199
+ .editable-bg-transition {
200
+ -webkit-transition: background-color 1400ms ease-out;
201
+ -moz-transition: background-color 1400ms ease-out;
202
+ -o-transition: background-color 1400ms ease-out;
203
+ -ms-transition: background-color 1400ms ease-out;
204
+ transition: background-color 1400ms ease-out;
205
+ }
206
+
207
+ /*see https://github.com/vitalets/x-editable/issues/139 */
208
+ .form-horizontal .editable
209
+ {
210
+ padding-top: 5px;
211
+ display:inline-block;
212
+ }
213
+
214
+
215
+ /*!
216
+ * Datepicker for Bootstrap
217
+ *
218
+ * Copyright 2012 Stefan Petre
219
+ * Improvements by Andrew Rowls
220
+ * Licensed under the Apache License v2.0
221
+ * http://www.apache.org/licenses/LICENSE-2.0
222
+ *
223
+ */
224
+ .datepicker {
225
+ padding: 4px;
226
+ -webkit-border-radius: 4px;
227
+ -moz-border-radius: 4px;
228
+ border-radius: 4px;
229
+ direction: ltr;
230
+ /*.dow {
231
+ border-top: 1px solid #ddd !important;
232
+ }*/
233
+
234
+ }
235
+ .datepicker-inline {
236
+ width: 220px;
237
+ }
238
+ .datepicker.datepicker-rtl {
239
+ direction: rtl;
240
+ }
241
+ .datepicker.datepicker-rtl table tr td span {
242
+ float: right;
243
+ }
244
+ .datepicker-dropdown {
245
+ top: 0;
246
+ left: 0;
247
+ }
248
+ .datepicker-dropdown:before {
249
+ content: '';
250
+ display: inline-block;
251
+ border-left: 7px solid transparent;
252
+ border-right: 7px solid transparent;
253
+ border-bottom: 7px solid #ccc;
254
+ border-bottom-color: rgba(0, 0, 0, 0.2);
255
+ position: absolute;
256
+ top: -7px;
257
+ left: 6px;
258
+ }
259
+ .datepicker-dropdown:after {
260
+ content: '';
261
+ display: inline-block;
262
+ border-left: 6px solid transparent;
263
+ border-right: 6px solid transparent;
264
+ border-bottom: 6px solid #ffffff;
265
+ position: absolute;
266
+ top: -6px;
267
+ left: 7px;
268
+ }
269
+ .datepicker > div {
270
+ display: none;
271
+ }
272
+ .datepicker.days div.datepicker-days {
273
+ display: block;
274
+ }
275
+ .datepicker.months div.datepicker-months {
276
+ display: block;
277
+ }
278
+ .datepicker.years div.datepicker-years {
279
+ display: block;
280
+ }
281
+ .datepicker table {
282
+ margin: 0;
283
+ }
284
+ .datepicker td,
285
+ .datepicker th {
286
+ text-align: center;
287
+ width: 20px;
288
+ height: 20px;
289
+ -webkit-border-radius: 4px;
290
+ -moz-border-radius: 4px;
291
+ border-radius: 4px;
292
+ border: none;
293
+ }
294
+ .table-striped .datepicker table tr td,
295
+ .table-striped .datepicker table tr th {
296
+ background-color: transparent;
297
+ }
298
+ .datepicker table tr td.day:hover {
299
+ background: #eeeeee;
300
+ cursor: pointer;
301
+ }
302
+ .datepicker table tr td.old,
303
+ .datepicker table tr td.new {
304
+ color: #999999;
305
+ }
306
+ .datepicker table tr td.disabled,
307
+ .datepicker table tr td.disabled:hover {
308
+ background: none;
309
+ color: #999999;
310
+ cursor: default;
311
+ }
312
+ .datepicker table tr td.today,
313
+ .datepicker table tr td.today:hover,
314
+ .datepicker table tr td.today.disabled,
315
+ .datepicker table tr td.today.disabled:hover {
316
+ background-color: #fde19a;
317
+ background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
318
+ background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
319
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
320
+ background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
321
+ background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
322
+ background-image: linear-gradient(top, #fdd49a, #fdf59a);
323
+ background-repeat: repeat-x;
324
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
325
+ border-color: #fdf59a #fdf59a #fbed50;
326
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
327
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
328
+ color: #000;
329
+ }
330
+ .datepicker table tr td.today:hover,
331
+ .datepicker table tr td.today:hover:hover,
332
+ .datepicker table tr td.today.disabled:hover,
333
+ .datepicker table tr td.today.disabled:hover:hover,
334
+ .datepicker table tr td.today:active,
335
+ .datepicker table tr td.today:hover:active,
336
+ .datepicker table tr td.today.disabled:active,
337
+ .datepicker table tr td.today.disabled:hover:active,
338
+ .datepicker table tr td.today.active,
339
+ .datepicker table tr td.today:hover.active,
340
+ .datepicker table tr td.today.disabled.active,
341
+ .datepicker table tr td.today.disabled:hover.active,
342
+ .datepicker table tr td.today.disabled,
343
+ .datepicker table tr td.today:hover.disabled,
344
+ .datepicker table tr td.today.disabled.disabled,
345
+ .datepicker table tr td.today.disabled:hover.disabled,
346
+ .datepicker table tr td.today[disabled],
347
+ .datepicker table tr td.today:hover[disabled],
348
+ .datepicker table tr td.today.disabled[disabled],
349
+ .datepicker table tr td.today.disabled:hover[disabled] {
350
+ background-color: #fdf59a;
351
+ }
352
+ .datepicker table tr td.today:active,
353
+ .datepicker table tr td.today:hover:active,
354
+ .datepicker table tr td.today.disabled:active,
355
+ .datepicker table tr td.today.disabled:hover:active,
356
+ .datepicker table tr td.today.active,
357
+ .datepicker table tr td.today:hover.active,
358
+ .datepicker table tr td.today.disabled.active,
359
+ .datepicker table tr td.today.disabled:hover.active {
360
+ background-color: #fbf069 \9;
361
+ }
362
+ .datepicker table tr td.today:hover:hover {
363
+ color: #000;
364
+ }
365
+ .datepicker table tr td.today.active:hover {
366
+ color: #fff;
367
+ }
368
+ .datepicker table tr td.range,
369
+ .datepicker table tr td.range:hover,
370
+ .datepicker table tr td.range.disabled,
371
+ .datepicker table tr td.range.disabled:hover {
372
+ background: #eeeeee;
373
+ -webkit-border-radius: 0;
374
+ -moz-border-radius: 0;
375
+ border-radius: 0;
376
+ }
377
+ .datepicker table tr td.range.today,
378
+ .datepicker table tr td.range.today:hover,
379
+ .datepicker table tr td.range.today.disabled,
380
+ .datepicker table tr td.range.today.disabled:hover {
381
+ background-color: #f3d17a;
382
+ background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
383
+ background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
384
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
385
+ background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
386
+ background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
387
+ background-image: linear-gradient(top, #f3c17a, #f3e97a);
388
+ background-repeat: repeat-x;
389
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
390
+ border-color: #f3e97a #f3e97a #edde34;
391
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
392
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
393
+ -webkit-border-radius: 0;
394
+ -moz-border-radius: 0;
395
+ border-radius: 0;
396
+ }
397
+ .datepicker table tr td.range.today:hover,
398
+ .datepicker table tr td.range.today:hover:hover,
399
+ .datepicker table tr td.range.today.disabled:hover,
400
+ .datepicker table tr td.range.today.disabled:hover:hover,
401
+ .datepicker table tr td.range.today:active,
402
+ .datepicker table tr td.range.today:hover:active,
403
+ .datepicker table tr td.range.today.disabled:active,
404
+ .datepicker table tr td.range.today.disabled:hover:active,
405
+ .datepicker table tr td.range.today.active,
406
+ .datepicker table tr td.range.today:hover.active,
407
+ .datepicker table tr td.range.today.disabled.active,
408
+ .datepicker table tr td.range.today.disabled:hover.active,
409
+ .datepicker table tr td.range.today.disabled,
410
+ .datepicker table tr td.range.today:hover.disabled,
411
+ .datepicker table tr td.range.today.disabled.disabled,
412
+ .datepicker table tr td.range.today.disabled:hover.disabled,
413
+ .datepicker table tr td.range.today[disabled],
414
+ .datepicker table tr td.range.today:hover[disabled],
415
+ .datepicker table tr td.range.today.disabled[disabled],
416
+ .datepicker table tr td.range.today.disabled:hover[disabled] {
417
+ background-color: #f3e97a;
418
+ }
419
+ .datepicker table tr td.range.today:active,
420
+ .datepicker table tr td.range.today:hover:active,
421
+ .datepicker table tr td.range.today.disabled:active,
422
+ .datepicker table tr td.range.today.disabled:hover:active,
423
+ .datepicker table tr td.range.today.active,
424
+ .datepicker table tr td.range.today:hover.active,
425
+ .datepicker table tr td.range.today.disabled.active,
426
+ .datepicker table tr td.range.today.disabled:hover.active {
427
+ background-color: #efe24b \9;
428
+ }
429
+ .datepicker table tr td.selected,
430
+ .datepicker table tr td.selected:hover,
431
+ .datepicker table tr td.selected.disabled,
432
+ .datepicker table tr td.selected.disabled:hover {
433
+ background-color: #9e9e9e;
434
+ background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
435
+ background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
436
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
437
+ background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
438
+ background-image: -o-linear-gradient(top, #b3b3b3, #808080);
439
+ background-image: linear-gradient(top, #b3b3b3, #808080);
440
+ background-repeat: repeat-x;
441
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
442
+ border-color: #808080 #808080 #595959;
443
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
444
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
445
+ color: #fff;
446
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
447
+ }
448
+ .datepicker table tr td.selected:hover,
449
+ .datepicker table tr td.selected:hover:hover,
450
+ .datepicker table tr td.selected.disabled:hover,
451
+ .datepicker table tr td.selected.disabled:hover:hover,
452
+ .datepicker table tr td.selected:active,
453
+ .datepicker table tr td.selected:hover:active,
454
+ .datepicker table tr td.selected.disabled:active,
455
+ .datepicker table tr td.selected.disabled:hover:active,
456
+ .datepicker table tr td.selected.active,
457
+ .datepicker table tr td.selected:hover.active,
458
+ .datepicker table tr td.selected.disabled.active,
459
+ .datepicker table tr td.selected.disabled:hover.active,
460
+ .datepicker table tr td.selected.disabled,
461
+ .datepicker table tr td.selected:hover.disabled,
462
+ .datepicker table tr td.selected.disabled.disabled,
463
+ .datepicker table tr td.selected.disabled:hover.disabled,
464
+ .datepicker table tr td.selected[disabled],
465
+ .datepicker table tr td.selected:hover[disabled],
466
+ .datepicker table tr td.selected.disabled[disabled],
467
+ .datepicker table tr td.selected.disabled:hover[disabled] {
468
+ background-color: #808080;
469
+ }
470
+ .datepicker table tr td.selected:active,
471
+ .datepicker table tr td.selected:hover:active,
472
+ .datepicker table tr td.selected.disabled:active,
473
+ .datepicker table tr td.selected.disabled:hover:active,
474
+ .datepicker table tr td.selected.active,
475
+ .datepicker table tr td.selected:hover.active,
476
+ .datepicker table tr td.selected.disabled.active,
477
+ .datepicker table tr td.selected.disabled:hover.active {
478
+ background-color: #666666 \9;
479
+ }
480
+ .datepicker table tr td.active,
481
+ .datepicker table tr td.active:hover,
482
+ .datepicker table tr td.active.disabled,
483
+ .datepicker table tr td.active.disabled:hover {
484
+ background-color: #006dcc;
485
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
486
+ background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
487
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
488
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
489
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
490
+ background-image: linear-gradient(top, #0088cc, #0044cc);
491
+ background-repeat: repeat-x;
492
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
493
+ border-color: #0044cc #0044cc #002a80;
494
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
495
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
496
+ color: #fff;
497
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
498
+ }
499
+ .datepicker table tr td.active:hover,
500
+ .datepicker table tr td.active:hover:hover,
501
+ .datepicker table tr td.active.disabled:hover,
502
+ .datepicker table tr td.active.disabled:hover:hover,
503
+ .datepicker table tr td.active:active,
504
+ .datepicker table tr td.active:hover:active,
505
+ .datepicker table tr td.active.disabled:active,
506
+ .datepicker table tr td.active.disabled:hover:active,
507
+ .datepicker table tr td.active.active,
508
+ .datepicker table tr td.active:hover.active,
509
+ .datepicker table tr td.active.disabled.active,
510
+ .datepicker table tr td.active.disabled:hover.active,
511
+ .datepicker table tr td.active.disabled,
512
+ .datepicker table tr td.active:hover.disabled,
513
+ .datepicker table tr td.active.disabled.disabled,
514
+ .datepicker table tr td.active.disabled:hover.disabled,
515
+ .datepicker table tr td.active[disabled],
516
+ .datepicker table tr td.active:hover[disabled],
517
+ .datepicker table tr td.active.disabled[disabled],
518
+ .datepicker table tr td.active.disabled:hover[disabled] {
519
+ background-color: #0044cc;
520
+ }
521
+ .datepicker table tr td.active:active,
522
+ .datepicker table tr td.active:hover:active,
523
+ .datepicker table tr td.active.disabled:active,
524
+ .datepicker table tr td.active.disabled:hover:active,
525
+ .datepicker table tr td.active.active,
526
+ .datepicker table tr td.active:hover.active,
527
+ .datepicker table tr td.active.disabled.active,
528
+ .datepicker table tr td.active.disabled:hover.active {
529
+ background-color: #003399 \9;
530
+ }
531
+ .datepicker table tr td span {
532
+ display: block;
533
+ width: 23%;
534
+ height: 54px;
535
+ line-height: 54px;
536
+ float: left;
537
+ margin: 1%;
538
+ cursor: pointer;
539
+ -webkit-border-radius: 4px;
540
+ -moz-border-radius: 4px;
541
+ border-radius: 4px;
542
+ }
543
+ .datepicker table tr td span:hover {
544
+ background: #eeeeee;
545
+ }
546
+ .datepicker table tr td span.disabled,
547
+ .datepicker table tr td span.disabled:hover {
548
+ background: none;
549
+ color: #999999;
550
+ cursor: default;
551
+ }
552
+ .datepicker table tr td span.active,
553
+ .datepicker table tr td span.active:hover,
554
+ .datepicker table tr td span.active.disabled,
555
+ .datepicker table tr td span.active.disabled:hover {
556
+ background-color: #006dcc;
557
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
558
+ background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
559
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
560
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
561
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
562
+ background-image: linear-gradient(top, #0088cc, #0044cc);
563
+ background-repeat: repeat-x;
564
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
565
+ border-color: #0044cc #0044cc #002a80;
566
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
567
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
568
+ color: #fff;
569
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
570
+ }
571
+ .datepicker table tr td span.active:hover,
572
+ .datepicker table tr td span.active:hover:hover,
573
+ .datepicker table tr td span.active.disabled:hover,
574
+ .datepicker table tr td span.active.disabled:hover:hover,
575
+ .datepicker table tr td span.active:active,
576
+ .datepicker table tr td span.active:hover:active,
577
+ .datepicker table tr td span.active.disabled:active,
578
+ .datepicker table tr td span.active.disabled:hover:active,
579
+ .datepicker table tr td span.active.active,
580
+ .datepicker table tr td span.active:hover.active,
581
+ .datepicker table tr td span.active.disabled.active,
582
+ .datepicker table tr td span.active.disabled:hover.active,
583
+ .datepicker table tr td span.active.disabled,
584
+ .datepicker table tr td span.active:hover.disabled,
585
+ .datepicker table tr td span.active.disabled.disabled,
586
+ .datepicker table tr td span.active.disabled:hover.disabled,
587
+ .datepicker table tr td span.active[disabled],
588
+ .datepicker table tr td span.active:hover[disabled],
589
+ .datepicker table tr td span.active.disabled[disabled],
590
+ .datepicker table tr td span.active.disabled:hover[disabled] {
591
+ background-color: #0044cc;
592
+ }
593
+ .datepicker table tr td span.active:active,
594
+ .datepicker table tr td span.active:hover:active,
595
+ .datepicker table tr td span.active.disabled:active,
596
+ .datepicker table tr td span.active.disabled:hover:active,
597
+ .datepicker table tr td span.active.active,
598
+ .datepicker table tr td span.active:hover.active,
599
+ .datepicker table tr td span.active.disabled.active,
600
+ .datepicker table tr td span.active.disabled:hover.active {
601
+ background-color: #003399 \9;
602
+ }
603
+ .datepicker table tr td span.old,
604
+ .datepicker table tr td span.new {
605
+ color: #999999;
606
+ }
607
+ .datepicker th.datepicker-switch {
608
+ width: 145px;
609
+ }
610
+ .datepicker thead tr:first-child th,
611
+ .datepicker tfoot tr th {
612
+ cursor: pointer;
613
+ }
614
+ .datepicker thead tr:first-child th:hover,
615
+ .datepicker tfoot tr th:hover {
616
+ background: #eeeeee;
617
+ }
618
+ .datepicker .cw {
619
+ font-size: 10px;
620
+ width: 12px;
621
+ padding: 0 2px 0 5px;
622
+ vertical-align: middle;
623
+ }
624
+ .datepicker thead tr:first-child th.cw {
625
+ cursor: default;
626
+ background-color: transparent;
627
+ }
628
+ .input-append.date .add-on i,
629
+ .input-prepend.date .add-on i {
630
+ display: block;
631
+ cursor: pointer;
632
+ width: 16px;
633
+ height: 16px;
634
+ }
635
+ .input-daterange input {
636
+ text-align: center;
637
+ }
638
+ .input-daterange input:first-child {
639
+ -webkit-border-radius: 3px 0 0 3px;
640
+ -moz-border-radius: 3px 0 0 3px;
641
+ border-radius: 3px 0 0 3px;
642
+ }
643
+ .input-daterange input:last-child {
644
+ -webkit-border-radius: 0 3px 3px 0;
645
+ -moz-border-radius: 0 3px 3px 0;
646
+ border-radius: 0 3px 3px 0;
647
+ }
648
+ .input-daterange .add-on {
649
+ display: inline-block;
650
+ width: auto;
651
+ min-width: 16px;
652
+ height: 18px;
653
+ padding: 4px 5px;
654
+ font-weight: normal;
655
+ line-height: 18px;
656
+ text-align: center;
657
+ text-shadow: 0 1px 0 #ffffff;
658
+ vertical-align: middle;
659
+ background-color: #eeeeee;
660
+ border: 1px solid #ccc;
661
+ margin-left: -5px;
662
+ margin-right: -5px;
663
+ }