nodectl 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +24 -0
  5. data/Gemfile +4 -0
  6. data/README.md +3 -0
  7. data/Rakefile +1 -0
  8. data/TODO.md +7 -0
  9. data/assets/javascript/application.coffee +22 -0
  10. data/assets/javascript/bootstrap.js +2006 -0
  11. data/assets/javascript/controllers/application_controller.coffee +73 -0
  12. data/assets/javascript/controllers/service_controller.coffee +62 -0
  13. data/assets/javascript/event_handler.coffee +51 -0
  14. data/assets/javascript/models/action.coffee +28 -0
  15. data/assets/javascript/models/instance.coffee +7 -0
  16. data/assets/javascript/models/service.coffee +75 -0
  17. data/assets/javascript/models/version.coffee +3 -0
  18. data/assets/javascript/notifier.coffee +64 -0
  19. data/assets/javascript/router.coffee +3 -0
  20. data/assets/javascript/routes/application.coffee +6 -0
  21. data/assets/javascript/routes/log.coffee +4 -0
  22. data/assets/javascript/routes/service.coffee +3 -0
  23. data/assets/javascript/store.coffee +32 -0
  24. data/assets/javascript/templates/application.hbs +82 -0
  25. data/assets/javascript/templates/index.hbs +1 -0
  26. data/assets/javascript/templates/log.hbs +1 -0
  27. data/assets/javascript/templates/service.hbs +110 -0
  28. data/assets/javascript/templates/views/action.hbs +20 -0
  29. data/assets/javascript/templates/views/actions_list.hbs +26 -0
  30. data/assets/javascript/templates/views/environments_list.hbs +9 -0
  31. data/assets/javascript/templates/views/install_button.hbs +1 -0
  32. data/assets/javascript/templates/views/mass_run.hbs +30 -0
  33. data/assets/javascript/templates/views/notifier_control.hbs +7 -0
  34. data/assets/javascript/templates/views/param.hbs +6 -0
  35. data/assets/javascript/templates/views/terminal.hbs +8 -0
  36. data/assets/javascript/ui.coffee +24 -0
  37. data/assets/javascript/vendor/ansiparse.js +186 -0
  38. data/assets/javascript/vendor/audio.min.js +24 -0
  39. data/assets/javascript/vendor/audiojs.swf +0 -0
  40. data/assets/javascript/vendor/ember-data.js +10528 -0
  41. data/assets/javascript/vendor/ember.js +40583 -0
  42. data/assets/javascript/vendor/handlebars.js +2746 -0
  43. data/assets/javascript/vendor/jquery.js +8829 -0
  44. data/assets/javascript/vendor/ladda.js +157 -0
  45. data/assets/javascript/vendor/moment.min.js +6 -0
  46. data/assets/javascript/vendor/notify-osd.js +319 -0
  47. data/assets/javascript/vendor/player-graphics.gif +0 -0
  48. data/assets/javascript/vendor/spin.js +218 -0
  49. data/assets/javascript/views/action_view.coffee +18 -0
  50. data/assets/javascript/views/actions_list_view.coffee +2 -0
  51. data/assets/javascript/views/environments_list_view.coffee +2 -0
  52. data/assets/javascript/views/install_button_view.coffee +34 -0
  53. data/assets/javascript/views/mass_run_view.coffee +107 -0
  54. data/assets/javascript/views/notifier_control_view.coffee +29 -0
  55. data/assets/javascript/views/terminal_view.coffee +56 -0
  56. data/assets/stylesheets/application.css +137 -0
  57. data/assets/stylesheets/bootstrap-theme.css +347 -0
  58. data/assets/stylesheets/bootstrap.css +5785 -0
  59. data/assets/stylesheets/fonts/glyphicons-halflings-regular.eot +0 -0
  60. data/assets/stylesheets/fonts/glyphicons-halflings-regular.svg +229 -0
  61. data/assets/stylesheets/fonts/glyphicons-halflings-regular.ttf +0 -0
  62. data/assets/stylesheets/fonts/glyphicons-halflings-regular.woff +0 -0
  63. data/assets/stylesheets/ladda-themeless.css +330 -0
  64. data/assets/stylesheets/ladda.css +392 -0
  65. data/assets/stylesheets/notify-osd.css +49 -0
  66. data/assets/stylesheets/terminal.css +12 -0
  67. data/bin/nodectl +4 -0
  68. data/lib/nodectl.rb +137 -0
  69. data/lib/nodectl/action.rb +80 -0
  70. data/lib/nodectl/binding.rb +13 -0
  71. data/lib/nodectl/cli.rb +123 -0
  72. data/lib/nodectl/context.rb +34 -0
  73. data/lib/nodectl/database.rb +55 -0
  74. data/lib/nodectl/generators/init.rb +22 -0
  75. data/lib/nodectl/generators/templates/init/.gitignore +5 -0
  76. data/lib/nodectl/generators/templates/init/config/manifest.yml +1 -0
  77. data/lib/nodectl/generators/templates/init/config/server.yml +7 -0
  78. data/lib/nodectl/instance.rb +100 -0
  79. data/lib/nodectl/log.rb +13 -0
  80. data/lib/nodectl/manager.rb +71 -0
  81. data/lib/nodectl/multi_io.rb +16 -0
  82. data/lib/nodectl/options.rb +47 -0
  83. data/lib/nodectl/process.rb +145 -0
  84. data/lib/nodectl/promised_file.rb +37 -0
  85. data/lib/nodectl/recipe.rb +197 -0
  86. data/lib/nodectl/repository.rb +80 -0
  87. data/lib/nodectl/server.rb +103 -0
  88. data/lib/nodectl/service.rb +126 -0
  89. data/lib/nodectl/stream/buffer.rb +44 -0
  90. data/lib/nodectl/stream/events_session.rb +39 -0
  91. data/lib/nodectl/stream/file.rb +69 -0
  92. data/lib/nodectl/stream/file_session.rb +35 -0
  93. data/lib/nodectl/stream/file_with_memory.rb +17 -0
  94. data/lib/nodectl/stream/websocket.rb +90 -0
  95. data/lib/nodectl/version.rb +3 -0
  96. data/lib/nodectl/watchdog.rb +17 -0
  97. data/lib/nodectl/webapp/actions.rb +21 -0
  98. data/lib/nodectl/webapp/base.rb +29 -0
  99. data/lib/nodectl/webapp/instances.rb +46 -0
  100. data/lib/nodectl/webapp/public/sounds/alert.mp3 +0 -0
  101. data/lib/nodectl/webapp/public/sounds/error.mp3 +0 -0
  102. data/lib/nodectl/webapp/public/sounds/question.mp3 +0 -0
  103. data/lib/nodectl/webapp/services.rb +39 -0
  104. data/lib/nodectl/webapp/settings.rb +7 -0
  105. data/lib/nodectl/webapp/ui.rb +19 -0
  106. data/lib/nodectl/webapp/versions.rb +12 -0
  107. data/lib/nodectl/webapp/views/ui.haml +20 -0
  108. data/nodectl.gemspec +35 -0
  109. data/spec/spec_helper.rb +12 -0
  110. data/spec/stream/buffer_spec.rb +33 -0
  111. metadata +365 -0
@@ -0,0 +1,137 @@
1
+ /*
2
+ *= require bootstrap.css
3
+ *= require bootstrap-theme.css
4
+ *= require terminal.css
5
+ *= require ladda-themeless.css
6
+ *= require notify-osd.css
7
+ */
8
+
9
+ /* environments */
10
+
11
+ /*main-wrapper.development .navbar {
12
+ background: #922;
13
+ }*/
14
+
15
+ body { padding-top: 70px; }
16
+
17
+ .modal-window {
18
+ background: rgba(0,0,0,0.9);
19
+ position: fixed;
20
+ width: 100%;
21
+
22
+ top: 50px; left: 0; bottom: 0;
23
+ z-index: 1000;
24
+ color: #EEE;
25
+ }
26
+
27
+ .modal-window-close {
28
+ position: absolute;
29
+ top: 30px;
30
+ right: 50px;
31
+ cursor: pointer;
32
+ z-index: 2000;
33
+ color: #F99;
34
+ }
35
+
36
+ .modal-window-content {
37
+ position: absolute;
38
+ top: 30px;
39
+ left: 50px;
40
+ right: 50px;
41
+ bottom: 20px;
42
+ }
43
+
44
+ .instances-table .stopping {
45
+ background: #FEE;
46
+ }
47
+
48
+ .instances-table-pid {
49
+ width: 10%;
50
+ }
51
+
52
+ .instances-table-status {
53
+ width: 10%;
54
+ }
55
+
56
+ .instances-table-actions {
57
+ width: 15%;
58
+ }
59
+
60
+ .badge-running {
61
+ background: #0F0;
62
+ }
63
+
64
+ .list-group-item-service {
65
+ position: relative;
66
+ }
67
+
68
+ .list-group-item-service-controlls .btn-group:first-child {
69
+ margin-left: 20px;
70
+ }
71
+
72
+ .list-group-item-uninstalled {
73
+ background: #F6F6F6;
74
+ color: #999;
75
+ }
76
+
77
+ .sidebar-services-id {
78
+ margin-left: 20px;
79
+ }
80
+
81
+ .service-run-indicator {
82
+ background: #5CB85C;
83
+ width: 3px;
84
+ height: 100%;
85
+ position: absolute;
86
+ left: 0;
87
+ top: 0;
88
+ display: none;
89
+ }
90
+
91
+ .btn-group-actions {
92
+ padding-left: 5px;
93
+ padding-right: 5px;
94
+ }
95
+
96
+ .notify-control-disabled {
97
+ color: #F60 !important;
98
+ }
99
+
100
+ .action-list-item-succeed {
101
+ background: #CFC;
102
+ }
103
+
104
+ .action-list-item-failed {
105
+ background: #FCC;
106
+ }
107
+
108
+ .mass-run-list-item {
109
+ position: relative;
110
+ font-weight: normal;
111
+ }
112
+
113
+ .sidebar-services-id {
114
+ display: inline-block;
115
+ margin-left: 20px;
116
+ }
117
+
118
+ .mass-run-list-item .checkbox {
119
+ display: block;
120
+ position: absolute;
121
+ top: 10px;
122
+ left: 10px;
123
+ }
124
+
125
+ .list-group-item-service.is-running > span.badge {
126
+ background-color: #5CB85C;
127
+ color: #fff;
128
+ -webkit-transition: background-color 150ms linear;
129
+ -moz-transition: background-color 150ms linear;
130
+ -o-transition: background-color 150ms linear;
131
+ -ms-transition: background-color 150ms linear;
132
+ transition: background-color 150ms linear;
133
+ }
134
+
135
+ .list-group-item-service.is-running > .service-run-indicator {
136
+ display: block;
137
+ }
@@ -0,0 +1,347 @@
1
+ /*!
2
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
3
+ * Copyright 2011-2014 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ .btn-default,
8
+ .btn-primary,
9
+ .btn-success,
10
+ .btn-info,
11
+ .btn-warning,
12
+ .btn-danger {
13
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
14
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
16
+ }
17
+ .btn-default:active,
18
+ .btn-primary:active,
19
+ .btn-success:active,
20
+ .btn-info:active,
21
+ .btn-warning:active,
22
+ .btn-danger:active,
23
+ .btn-default.active,
24
+ .btn-primary.active,
25
+ .btn-success.active,
26
+ .btn-info.active,
27
+ .btn-warning.active,
28
+ .btn-danger.active {
29
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
31
+ }
32
+ .btn:active,
33
+ .btn.active {
34
+ background-image: none;
35
+ }
36
+ .btn-default {
37
+ text-shadow: 0 1px 0 #fff;
38
+ background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
39
+ background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
40
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
41
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
42
+ background-repeat: repeat-x;
43
+ border-color: #dbdbdb;
44
+ border-color: #ccc;
45
+ }
46
+ .btn-default:hover,
47
+ .btn-default:focus {
48
+ background-color: #e0e0e0;
49
+ background-position: 0 -15px;
50
+ }
51
+ .btn-default:active,
52
+ .btn-default.active {
53
+ background-color: #e0e0e0;
54
+ border-color: #dbdbdb;
55
+ }
56
+ .btn-primary {
57
+ background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
58
+ background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
59
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
60
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
61
+ background-repeat: repeat-x;
62
+ border-color: #2b669a;
63
+ }
64
+ .btn-primary:hover,
65
+ .btn-primary:focus {
66
+ background-color: #2d6ca2;
67
+ background-position: 0 -15px;
68
+ }
69
+ .btn-primary:active,
70
+ .btn-primary.active {
71
+ background-color: #2d6ca2;
72
+ border-color: #2b669a;
73
+ }
74
+ .btn-success {
75
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
76
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
77
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
78
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
79
+ background-repeat: repeat-x;
80
+ border-color: #3e8f3e;
81
+ }
82
+ .btn-success:hover,
83
+ .btn-success:focus {
84
+ background-color: #419641;
85
+ background-position: 0 -15px;
86
+ }
87
+ .btn-success:active,
88
+ .btn-success.active {
89
+ background-color: #419641;
90
+ border-color: #3e8f3e;
91
+ }
92
+ .btn-info {
93
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
94
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
95
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
96
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
97
+ background-repeat: repeat-x;
98
+ border-color: #28a4c9;
99
+ }
100
+ .btn-info:hover,
101
+ .btn-info:focus {
102
+ background-color: #2aabd2;
103
+ background-position: 0 -15px;
104
+ }
105
+ .btn-info:active,
106
+ .btn-info.active {
107
+ background-color: #2aabd2;
108
+ border-color: #28a4c9;
109
+ }
110
+ .btn-warning {
111
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
112
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
113
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
114
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
115
+ background-repeat: repeat-x;
116
+ border-color: #e38d13;
117
+ }
118
+ .btn-warning:hover,
119
+ .btn-warning:focus {
120
+ background-color: #eb9316;
121
+ background-position: 0 -15px;
122
+ }
123
+ .btn-warning:active,
124
+ .btn-warning.active {
125
+ background-color: #eb9316;
126
+ border-color: #e38d13;
127
+ }
128
+ .btn-danger {
129
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
130
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
131
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
132
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
133
+ background-repeat: repeat-x;
134
+ border-color: #b92c28;
135
+ }
136
+ .btn-danger:hover,
137
+ .btn-danger:focus {
138
+ background-color: #c12e2a;
139
+ background-position: 0 -15px;
140
+ }
141
+ .btn-danger:active,
142
+ .btn-danger.active {
143
+ background-color: #c12e2a;
144
+ border-color: #b92c28;
145
+ }
146
+ .thumbnail,
147
+ .img-thumbnail {
148
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
149
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
150
+ }
151
+ .dropdown-menu > li > a:hover,
152
+ .dropdown-menu > li > a:focus {
153
+ background-color: #e8e8e8;
154
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
155
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
156
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
157
+ background-repeat: repeat-x;
158
+ }
159
+ .dropdown-menu > .active > a,
160
+ .dropdown-menu > .active > a:hover,
161
+ .dropdown-menu > .active > a:focus {
162
+ background-color: #357ebd;
163
+ background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
164
+ background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
165
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
166
+ background-repeat: repeat-x;
167
+ }
168
+ .navbar-default {
169
+ background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
170
+ background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
171
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
172
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
173
+ background-repeat: repeat-x;
174
+ border-radius: 4px;
175
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
176
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
177
+ }
178
+ .navbar-default .navbar-nav > .active > a {
179
+ background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
180
+ background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
181
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
182
+ background-repeat: repeat-x;
183
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
184
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
185
+ }
186
+ .navbar-brand,
187
+ .navbar-nav > li > a {
188
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
189
+ }
190
+ .navbar-inverse {
191
+ background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
192
+ background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
193
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
194
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
195
+ background-repeat: repeat-x;
196
+ }
197
+ .navbar-inverse .navbar-nav > .active > a {
198
+ background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
199
+ background-image: linear-gradient(to bottom, #222 0%, #282828 100%);
200
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
201
+ background-repeat: repeat-x;
202
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
203
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
204
+ }
205
+ .navbar-inverse .navbar-brand,
206
+ .navbar-inverse .navbar-nav > li > a {
207
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
208
+ }
209
+ .navbar-static-top,
210
+ .navbar-fixed-top,
211
+ .navbar-fixed-bottom {
212
+ border-radius: 0;
213
+ }
214
+ .alert {
215
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
216
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
217
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
218
+ }
219
+ .alert-success {
220
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
221
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
222
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
223
+ background-repeat: repeat-x;
224
+ border-color: #b2dba1;
225
+ }
226
+ .alert-info {
227
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
228
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
229
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
230
+ background-repeat: repeat-x;
231
+ border-color: #9acfea;
232
+ }
233
+ .alert-warning {
234
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
235
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
236
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
237
+ background-repeat: repeat-x;
238
+ border-color: #f5e79e;
239
+ }
240
+ .alert-danger {
241
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
242
+ background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
243
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
244
+ background-repeat: repeat-x;
245
+ border-color: #dca7a7;
246
+ }
247
+ .progress {
248
+ background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
249
+ background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
250
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
251
+ background-repeat: repeat-x;
252
+ }
253
+ .progress-bar {
254
+ background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
255
+ background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
256
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
257
+ background-repeat: repeat-x;
258
+ }
259
+ .progress-bar-success {
260
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
261
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
262
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
263
+ background-repeat: repeat-x;
264
+ }
265
+ .progress-bar-info {
266
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
267
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
268
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
269
+ background-repeat: repeat-x;
270
+ }
271
+ .progress-bar-warning {
272
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
273
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
274
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
275
+ background-repeat: repeat-x;
276
+ }
277
+ .progress-bar-danger {
278
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
279
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
280
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
281
+ background-repeat: repeat-x;
282
+ }
283
+ .list-group {
284
+ border-radius: 4px;
285
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
286
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
287
+ }
288
+ .list-group-item.active,
289
+ .list-group-item.active:hover,
290
+ .list-group-item.active:focus {
291
+ text-shadow: 0 -1px 0 #3071a9;
292
+ background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
293
+ background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
294
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
295
+ background-repeat: repeat-x;
296
+ border-color: #3278b3;
297
+ }
298
+ .panel {
299
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
300
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
301
+ }
302
+ .panel-default > .panel-heading {
303
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
304
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
305
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
306
+ background-repeat: repeat-x;
307
+ }
308
+ .panel-primary > .panel-heading {
309
+ background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
310
+ background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
311
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
312
+ background-repeat: repeat-x;
313
+ }
314
+ .panel-success > .panel-heading {
315
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
316
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
317
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
318
+ background-repeat: repeat-x;
319
+ }
320
+ .panel-info > .panel-heading {
321
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
322
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
323
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
324
+ background-repeat: repeat-x;
325
+ }
326
+ .panel-warning > .panel-heading {
327
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
328
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
329
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
330
+ background-repeat: repeat-x;
331
+ }
332
+ .panel-danger > .panel-heading {
333
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
334
+ background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
335
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
336
+ background-repeat: repeat-x;
337
+ }
338
+ .well {
339
+ background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
340
+ background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
341
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
342
+ background-repeat: repeat-x;
343
+ border-color: #dcdcdc;
344
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
345
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
346
+ }
347
+ /*# sourceMappingURL=bootstrap-theme.css.map */