adhoq 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +80 -0
  4. data/Rakefile +28 -0
  5. data/app/assets/javascripts/adhoq/application.js +19 -0
  6. data/app/assets/javascripts/adhoq/bootstrap-sprockets.js +12 -0
  7. data/app/assets/javascripts/adhoq/bootstrap.js +2107 -0
  8. data/app/assets/javascripts/adhoq/bootstrap/affix.js +142 -0
  9. data/app/assets/javascripts/adhoq/bootstrap/alert.js +92 -0
  10. data/app/assets/javascripts/adhoq/bootstrap/button.js +110 -0
  11. data/app/assets/javascripts/adhoq/bootstrap/carousel.js +223 -0
  12. data/app/assets/javascripts/adhoq/bootstrap/collapse.js +170 -0
  13. data/app/assets/javascripts/adhoq/bootstrap/dropdown.js +151 -0
  14. data/app/assets/javascripts/adhoq/bootstrap/modal.js +280 -0
  15. data/app/assets/javascripts/adhoq/bootstrap/popover.js +113 -0
  16. data/app/assets/javascripts/adhoq/bootstrap/scrollspy.js +170 -0
  17. data/app/assets/javascripts/adhoq/bootstrap/tab.js +128 -0
  18. data/app/assets/javascripts/adhoq/bootstrap/tooltip.js +457 -0
  19. data/app/assets/javascripts/adhoq/bootstrap/transition.js +59 -0
  20. data/app/assets/javascripts/adhoq/previewer.js.coffee +25 -0
  21. data/app/assets/stylesheets/adhoq/_bootstrap-compass.scss +7 -0
  22. data/app/assets/stylesheets/adhoq/_bootstrap-mincer.scss +17 -0
  23. data/app/assets/stylesheets/adhoq/_bootstrap-sprockets.scss +7 -0
  24. data/app/assets/stylesheets/adhoq/adhoq.css.sass +57 -0
  25. data/app/assets/stylesheets/adhoq/application.css +16 -0
  26. data/app/assets/stylesheets/adhoq/bootstrap.scss +50 -0
  27. data/app/assets/stylesheets/adhoq/bootstrap/_alerts.scss +68 -0
  28. data/app/assets/stylesheets/adhoq/bootstrap/_badges.scss +57 -0
  29. data/app/assets/stylesheets/adhoq/bootstrap/_breadcrumbs.scss +26 -0
  30. data/app/assets/stylesheets/adhoq/bootstrap/_button-groups.scss +240 -0
  31. data/app/assets/stylesheets/adhoq/bootstrap/_buttons.scss +157 -0
  32. data/app/assets/stylesheets/adhoq/bootstrap/_carousel.scss +243 -0
  33. data/app/assets/stylesheets/adhoq/bootstrap/_close.scss +35 -0
  34. data/app/assets/stylesheets/adhoq/bootstrap/_code.scss +68 -0
  35. data/app/assets/stylesheets/adhoq/bootstrap/_component-animations.scss +35 -0
  36. data/app/assets/stylesheets/adhoq/bootstrap/_dropdowns.scss +215 -0
  37. data/app/assets/stylesheets/adhoq/bootstrap/_forms.scss +538 -0
  38. data/app/assets/stylesheets/adhoq/bootstrap/_glyphicons.scss +237 -0
  39. data/app/assets/stylesheets/adhoq/bootstrap/_grid.scss +84 -0
  40. data/app/assets/stylesheets/adhoq/bootstrap/_input-groups.scss +166 -0
  41. data/app/assets/stylesheets/adhoq/bootstrap/_jumbotron.scss +48 -0
  42. data/app/assets/stylesheets/adhoq/bootstrap/_labels.scss +66 -0
  43. data/app/assets/stylesheets/adhoq/bootstrap/_list-group.scss +131 -0
  44. data/app/assets/stylesheets/adhoq/bootstrap/_media.scss +56 -0
  45. data/app/assets/stylesheets/adhoq/bootstrap/_mixins.scss +39 -0
  46. data/app/assets/stylesheets/adhoq/bootstrap/_modals.scss +150 -0
  47. data/app/assets/stylesheets/adhoq/bootstrap/_navbar.scss +659 -0
  48. data/app/assets/stylesheets/adhoq/bootstrap/_navs.scss +242 -0
  49. data/app/assets/stylesheets/adhoq/bootstrap/_normalize.scss +425 -0
  50. data/app/assets/stylesheets/adhoq/bootstrap/_pager.scss +55 -0
  51. data/app/assets/stylesheets/adhoq/bootstrap/_pagination.scss +88 -0
  52. data/app/assets/stylesheets/adhoq/bootstrap/_panels.scss +243 -0
  53. data/app/assets/stylesheets/adhoq/bootstrap/_popovers.scss +133 -0
  54. data/app/assets/stylesheets/adhoq/bootstrap/_print.scss +101 -0
  55. data/app/assets/stylesheets/adhoq/bootstrap/_progress-bars.scss +105 -0
  56. data/app/assets/stylesheets/adhoq/bootstrap/_responsive-embed.scss +34 -0
  57. data/app/assets/stylesheets/adhoq/bootstrap/_responsive-utilities.scss +174 -0
  58. data/app/assets/stylesheets/adhoq/bootstrap/_scaffolding.scss +150 -0
  59. data/app/assets/stylesheets/adhoq/bootstrap/_tables.scss +233 -0
  60. data/app/assets/stylesheets/adhoq/bootstrap/_theme.scss +258 -0
  61. data/app/assets/stylesheets/adhoq/bootstrap/_thumbnails.scss +38 -0
  62. data/app/assets/stylesheets/adhoq/bootstrap/_tooltip.scss +95 -0
  63. data/app/assets/stylesheets/adhoq/bootstrap/_type.scss +304 -0
  64. data/app/assets/stylesheets/adhoq/bootstrap/_utilities.scss +57 -0
  65. data/app/assets/stylesheets/adhoq/bootstrap/_variables.scss +850 -0
  66. data/app/assets/stylesheets/adhoq/bootstrap/_wells.scss +29 -0
  67. data/app/assets/stylesheets/adhoq/bootstrap/bootstrap.scss +50 -0
  68. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_alerts.scss +14 -0
  69. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_background-variant.scss +11 -0
  70. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_border-radius.scss +18 -0
  71. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_buttons.scss +50 -0
  72. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_center-block.scss +7 -0
  73. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_clearfix.scss +22 -0
  74. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_forms.scss +84 -0
  75. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_gradients.scss +58 -0
  76. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_grid-framework.scss +81 -0
  77. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_grid.scss +122 -0
  78. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_hide-text.scss +21 -0
  79. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_image.scss +34 -0
  80. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_labels.scss +12 -0
  81. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_list-group.scss +31 -0
  82. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_nav-divider.scss +10 -0
  83. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  84. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_opacity.scss +8 -0
  85. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_pagination.scss +23 -0
  86. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_panels.scss +24 -0
  87. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_progress-bar.scss +10 -0
  88. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_reset-filter.scss +8 -0
  89. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_resize.scss +6 -0
  90. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_responsive-visibility.scss +21 -0
  91. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_size.scss +10 -0
  92. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_tab-focus.scss +9 -0
  93. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_table-row.scss +28 -0
  94. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_text-emphasis.scss +11 -0
  95. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_text-overflow.scss +8 -0
  96. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_vendor-prefixes.scss +219 -0
  97. data/app/controllers/adhoq/application_controller.rb +5 -0
  98. data/app/controllers/adhoq/authorization_methods.rb +36 -0
  99. data/app/controllers/adhoq/executions_controller.rb +25 -0
  100. data/app/controllers/adhoq/previews_controller.rb +13 -0
  101. data/app/controllers/adhoq/queries_controller.rb +38 -0
  102. data/app/helpers/adhoq/application_helper.rb +11 -0
  103. data/app/models/adhoq/execution.rb +29 -0
  104. data/app/models/adhoq/query.rb +14 -0
  105. data/app/models/adhoq/report.rb +42 -0
  106. data/app/models/adhoq/time_based_orders.rb +9 -0
  107. data/app/views/adhoq/application/_global_nav.html.slim +11 -0
  108. data/app/views/adhoq/application/_sidebar_queries_index.html.slim +10 -0
  109. data/app/views/adhoq/previews/create.html.slim +12 -0
  110. data/app/views/adhoq/previews/statement_invalid.html.slim +5 -0
  111. data/app/views/adhoq/queries/_form.html.slim +38 -0
  112. data/app/views/adhoq/queries/_query.html.slim +43 -0
  113. data/app/views/adhoq/queries/edit.html.slim +2 -0
  114. data/app/views/adhoq/queries/index.html.slim +1 -0
  115. data/app/views/adhoq/queries/new.html.slim +2 -0
  116. data/app/views/adhoq/queries/show.html.slim +1 -0
  117. data/app/views/layouts/adhoq/application.html.slim +18 -0
  118. data/config/routes.rb +9 -0
  119. data/db/migrate/20141003095645_create_adhoq_queries.rb +11 -0
  120. data/db/migrate/20141006014750_create_adhoq_executions.rb +13 -0
  121. data/db/migrate/20141007052308_create_adhoq_reports.rb +12 -0
  122. data/lib/adhoq.rb +13 -0
  123. data/lib/adhoq/configuration.rb +21 -0
  124. data/lib/adhoq/engine.rb +15 -0
  125. data/lib/adhoq/error.rb +4 -0
  126. data/lib/adhoq/executor.rb +27 -0
  127. data/lib/adhoq/global_variable.rb +34 -0
  128. data/lib/adhoq/reporter.rb +5 -0
  129. data/lib/adhoq/reporter/xlsx.rb +32 -0
  130. data/lib/adhoq/result.rb +18 -0
  131. data/lib/adhoq/storage.rb +5 -0
  132. data/lib/adhoq/storage/local_file.rb +45 -0
  133. data/lib/adhoq/version.rb +3 -0
  134. data/lib/tasks/adhoq_tasks.rake +4 -0
  135. data/spec/adhoq/executor_spec.rb +11 -0
  136. data/spec/adhoq/storage_spec.rb +19 -0
  137. data/spec/factories/adhoq_queries.rb +29 -0
  138. data/spec/models/adhoq/execution_spec.rb +4 -0
  139. data/spec/models/adhoq/query_spec.rb +4 -0
  140. data/spec/models/adhoq/report_spec.rb +25 -0
  141. data/spec/spec_helper.rb +36 -0
  142. data/spec/support/have_values_in_xlsx_sheet_matcher.rb +20 -0
  143. metadata +375 -0
@@ -0,0 +1,233 @@
1
+ //
2
+ // Tables
3
+ // --------------------------------------------------
4
+
5
+
6
+ table {
7
+ background-color: $table-bg;
8
+ }
9
+ th {
10
+ text-align: left;
11
+ }
12
+
13
+
14
+ // Baseline styles
15
+
16
+ .table {
17
+ width: 100%;
18
+ max-width: 100%;
19
+ margin-bottom: $line-height-computed;
20
+ // Cells
21
+ > thead,
22
+ > tbody,
23
+ > tfoot {
24
+ > tr {
25
+ > th,
26
+ > td {
27
+ padding: $table-cell-padding;
28
+ line-height: $line-height-base;
29
+ vertical-align: top;
30
+ border-top: 1px solid $table-border-color;
31
+ }
32
+ }
33
+ }
34
+ // Bottom align for column headings
35
+ > thead > tr > th {
36
+ vertical-align: bottom;
37
+ border-bottom: 2px solid $table-border-color;
38
+ }
39
+ // Remove top border from thead by default
40
+ > caption + thead,
41
+ > colgroup + thead,
42
+ > thead:first-child {
43
+ > tr:first-child {
44
+ > th,
45
+ > td {
46
+ border-top: 0;
47
+ }
48
+ }
49
+ }
50
+ // Account for multiple tbody instances
51
+ > tbody + tbody {
52
+ border-top: 2px solid $table-border-color;
53
+ }
54
+
55
+ // Nesting
56
+ .table {
57
+ background-color: $body-bg;
58
+ }
59
+ }
60
+
61
+
62
+ // Condensed table w/ half padding
63
+
64
+ .table-condensed {
65
+ > thead,
66
+ > tbody,
67
+ > tfoot {
68
+ > tr {
69
+ > th,
70
+ > td {
71
+ padding: $table-condensed-cell-padding;
72
+ }
73
+ }
74
+ }
75
+ }
76
+
77
+
78
+ // Bordered version
79
+ //
80
+ // Add borders all around the table and between all the columns.
81
+
82
+ .table-bordered {
83
+ border: 1px solid $table-border-color;
84
+ > thead,
85
+ > tbody,
86
+ > tfoot {
87
+ > tr {
88
+ > th,
89
+ > td {
90
+ border: 1px solid $table-border-color;
91
+ }
92
+ }
93
+ }
94
+ > thead > tr {
95
+ > th,
96
+ > td {
97
+ border-bottom-width: 2px;
98
+ }
99
+ }
100
+ }
101
+
102
+
103
+ // Zebra-striping
104
+ //
105
+ // Default zebra-stripe styles (alternating gray and transparent backgrounds)
106
+
107
+ .table-striped {
108
+ > tbody > tr:nth-child(odd) {
109
+ > td,
110
+ > th {
111
+ background-color: $table-bg-accent;
112
+ }
113
+ }
114
+ }
115
+
116
+
117
+ // Hover effect
118
+ //
119
+ // Placed here since it has to come after the potential zebra striping
120
+
121
+ .table-hover {
122
+ > tbody > tr:hover {
123
+ > td,
124
+ > th {
125
+ background-color: $table-bg-hover;
126
+ }
127
+ }
128
+ }
129
+
130
+
131
+ // Table cell sizing
132
+ //
133
+ // Reset default table behavior
134
+
135
+ table col[class*="col-"] {
136
+ position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)
137
+ float: none;
138
+ display: table-column;
139
+ }
140
+ table {
141
+ td,
142
+ th {
143
+ &[class*="col-"] {
144
+ position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)
145
+ float: none;
146
+ display: table-cell;
147
+ }
148
+ }
149
+ }
150
+
151
+
152
+ // Table backgrounds
153
+ //
154
+ // Exact selectors below required to override `.table-striped` and prevent
155
+ // inheritance to nested tables.
156
+
157
+ // Generate the contextual variants
158
+ @include table-row-variant('active', $table-bg-active);
159
+ @include table-row-variant('success', $state-success-bg);
160
+ @include table-row-variant('info', $state-info-bg);
161
+ @include table-row-variant('warning', $state-warning-bg);
162
+ @include table-row-variant('danger', $state-danger-bg);
163
+
164
+
165
+ // Responsive tables
166
+ //
167
+ // Wrap your tables in `.table-responsive` and we'll make them mobile friendly
168
+ // by enabling horizontal scrolling. Only applies <768px. Everything above that
169
+ // will display normally.
170
+
171
+ .table-responsive {
172
+ @media screen and (max-width: $screen-xs-max) {
173
+ width: 100%;
174
+ margin-bottom: ($line-height-computed * 0.75);
175
+ overflow-y: hidden;
176
+ overflow-x: auto;
177
+ -ms-overflow-style: -ms-autohiding-scrollbar;
178
+ border: 1px solid $table-border-color;
179
+ -webkit-overflow-scrolling: touch;
180
+
181
+ // Tighten up spacing
182
+ > .table {
183
+ margin-bottom: 0;
184
+
185
+ // Ensure the content doesn't wrap
186
+ > thead,
187
+ > tbody,
188
+ > tfoot {
189
+ > tr {
190
+ > th,
191
+ > td {
192
+ white-space: nowrap;
193
+ }
194
+ }
195
+ }
196
+ }
197
+
198
+ // Special overrides for the bordered tables
199
+ > .table-bordered {
200
+ border: 0;
201
+
202
+ // Nuke the appropriate borders so that the parent can handle them
203
+ > thead,
204
+ > tbody,
205
+ > tfoot {
206
+ > tr {
207
+ > th:first-child,
208
+ > td:first-child {
209
+ border-left: 0;
210
+ }
211
+ > th:last-child,
212
+ > td:last-child {
213
+ border-right: 0;
214
+ }
215
+ }
216
+ }
217
+
218
+ // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
219
+ // chances are there will be only one `tr` in a `thead` and that would
220
+ // remove the border altogether.
221
+ > tbody,
222
+ > tfoot {
223
+ > tr:last-child {
224
+ > th,
225
+ > td {
226
+ border-bottom: 0;
227
+ }
228
+ }
229
+ }
230
+
231
+ }
232
+ }
233
+ }
@@ -0,0 +1,258 @@
1
+
2
+ //
3
+ // Load core variables and mixins
4
+ // --------------------------------------------------
5
+
6
+ @import "variables";
7
+ @import "mixins";
8
+
9
+
10
+
11
+ //
12
+ // Buttons
13
+ // --------------------------------------------------
14
+
15
+ // Common styles
16
+ .btn-default,
17
+ .btn-primary,
18
+ .btn-success,
19
+ .btn-info,
20
+ .btn-warning,
21
+ .btn-danger {
22
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
23
+ $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
24
+ @include box-shadow($shadow);
25
+
26
+ // Reset the shadow
27
+ &:active,
28
+ &.active {
29
+ @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
30
+ }
31
+ }
32
+
33
+ // Mixin for generating new styles
34
+ @mixin btn-styles($btn-color: #555) {
35
+ @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%));
36
+ @include reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners
37
+ background-repeat: repeat-x;
38
+ border-color: darken($btn-color, 14%);
39
+
40
+ &:hover,
41
+ &:focus {
42
+ background-color: darken($btn-color, 12%);
43
+ background-position: 0 -15px;
44
+ }
45
+
46
+ &:active,
47
+ &.active {
48
+ background-color: darken($btn-color, 12%);
49
+ border-color: darken($btn-color, 14%);
50
+ }
51
+
52
+ &:disabled,
53
+ &[disabled] {
54
+ background-color: darken($btn-color, 12%);
55
+ background-image: none;
56
+ }
57
+ }
58
+
59
+ // Common styles
60
+ .btn {
61
+ // Remove the gradient for the pressed/active state
62
+ &:active,
63
+ &.active {
64
+ background-image: none;
65
+ }
66
+ }
67
+
68
+ // Apply the mixin to the buttons
69
+ .btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
70
+ .btn-primary { @include btn-styles($btn-primary-bg); }
71
+ .btn-success { @include btn-styles($btn-success-bg); }
72
+ .btn-info { @include btn-styles($btn-info-bg); }
73
+ .btn-warning { @include btn-styles($btn-warning-bg); }
74
+ .btn-danger { @include btn-styles($btn-danger-bg); }
75
+
76
+
77
+
78
+ //
79
+ // Images
80
+ // --------------------------------------------------
81
+
82
+ .thumbnail,
83
+ .img-thumbnail {
84
+ @include box-shadow(0 1px 2px rgba(0,0,0,.075));
85
+ }
86
+
87
+
88
+
89
+ //
90
+ // Dropdowns
91
+ // --------------------------------------------------
92
+
93
+ .dropdown-menu > li > a:hover,
94
+ .dropdown-menu > li > a:focus {
95
+ @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
96
+ background-color: darken($dropdown-link-hover-bg, 5%);
97
+ }
98
+ .dropdown-menu > .active > a,
99
+ .dropdown-menu > .active > a:hover,
100
+ .dropdown-menu > .active > a:focus {
101
+ @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
102
+ background-color: darken($dropdown-link-active-bg, 5%);
103
+ }
104
+
105
+
106
+
107
+ //
108
+ // Navbar
109
+ // --------------------------------------------------
110
+
111
+ // Default navbar
112
+ .navbar-default {
113
+ @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
114
+ @include reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
115
+ border-radius: $navbar-border-radius;
116
+ $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
117
+ @include box-shadow($shadow);
118
+
119
+ .navbar-nav > .active > a {
120
+ @include gradient-vertical($start-color: darken($navbar-default-bg, 5%), $end-color: darken($navbar-default-bg, 2%));
121
+ @include box-shadow(inset 0 3px 9px rgba(0,0,0,.075));
122
+ }
123
+ }
124
+ .navbar-brand,
125
+ .navbar-nav > li > a {
126
+ text-shadow: 0 1px 0 rgba(255,255,255,.25);
127
+ }
128
+
129
+ // Inverted navbar
130
+ .navbar-inverse {
131
+ @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
132
+ @include reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
133
+
134
+ .navbar-nav > .active > a {
135
+ @include gradient-vertical($start-color: $navbar-inverse-bg, $end-color: lighten($navbar-inverse-bg, 2.5%));
136
+ @include box-shadow(inset 0 3px 9px rgba(0,0,0,.25));
137
+ }
138
+
139
+ .navbar-brand,
140
+ .navbar-nav > li > a {
141
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
142
+ }
143
+ }
144
+
145
+ // Undo rounded corners in static and fixed navbars
146
+ .navbar-static-top,
147
+ .navbar-fixed-top,
148
+ .navbar-fixed-bottom {
149
+ border-radius: 0;
150
+ }
151
+
152
+
153
+
154
+ //
155
+ // Alerts
156
+ // --------------------------------------------------
157
+
158
+ // Common styles
159
+ .alert {
160
+ text-shadow: 0 1px 0 rgba(255,255,255,.2);
161
+ $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
162
+ @include box-shadow($shadow);
163
+ }
164
+
165
+ // Mixin for generating new styles
166
+ @mixin alert-styles($color) {
167
+ @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));
168
+ border-color: darken($color, 15%);
169
+ }
170
+
171
+ // Apply the mixin to the alerts
172
+ .alert-success { @include alert-styles($alert-success-bg); }
173
+ .alert-info { @include alert-styles($alert-info-bg); }
174
+ .alert-warning { @include alert-styles($alert-warning-bg); }
175
+ .alert-danger { @include alert-styles($alert-danger-bg); }
176
+
177
+
178
+
179
+ //
180
+ // Progress bars
181
+ // --------------------------------------------------
182
+
183
+ // Give the progress background some depth
184
+ .progress {
185
+ @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)
186
+ }
187
+
188
+ // Mixin for generating new styles
189
+ @mixin progress-bar-styles($color) {
190
+ @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));
191
+ }
192
+
193
+ // Apply the mixin to the progress bars
194
+ .progress-bar { @include progress-bar-styles($progress-bar-bg); }
195
+ .progress-bar-success { @include progress-bar-styles($progress-bar-success-bg); }
196
+ .progress-bar-info { @include progress-bar-styles($progress-bar-info-bg); }
197
+ .progress-bar-warning { @include progress-bar-styles($progress-bar-warning-bg); }
198
+ .progress-bar-danger { @include progress-bar-styles($progress-bar-danger-bg); }
199
+
200
+ // Reset the striped class because our mixins don't do multiple gradients and
201
+ // the above custom styles override the new `.progress-bar-striped` in v3.2.0.
202
+ .progress-bar-striped {
203
+ @include gradient-striped();
204
+ }
205
+
206
+
207
+ //
208
+ // List groups
209
+ // --------------------------------------------------
210
+
211
+ .list-group {
212
+ border-radius: $border-radius-base;
213
+ @include box-shadow(0 1px 2px rgba(0,0,0,.075));
214
+ }
215
+ .list-group-item.active,
216
+ .list-group-item.active:hover,
217
+ .list-group-item.active:focus {
218
+ text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);
219
+ @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));
220
+ border-color: darken($list-group-active-border, 7.5%);
221
+ }
222
+
223
+
224
+
225
+ //
226
+ // Panels
227
+ // --------------------------------------------------
228
+
229
+ // Common styles
230
+ .panel {
231
+ @include box-shadow(0 1px 2px rgba(0,0,0,.05));
232
+ }
233
+
234
+ // Mixin for generating new styles
235
+ @mixin panel-heading-styles($color) {
236
+ @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));
237
+ }
238
+
239
+ // Apply the mixin to the panel headings only
240
+ .panel-default > .panel-heading { @include panel-heading-styles($panel-default-heading-bg); }
241
+ .panel-primary > .panel-heading { @include panel-heading-styles($panel-primary-heading-bg); }
242
+ .panel-success > .panel-heading { @include panel-heading-styles($panel-success-heading-bg); }
243
+ .panel-info > .panel-heading { @include panel-heading-styles($panel-info-heading-bg); }
244
+ .panel-warning > .panel-heading { @include panel-heading-styles($panel-warning-heading-bg); }
245
+ .panel-danger > .panel-heading { @include panel-heading-styles($panel-danger-heading-bg); }
246
+
247
+
248
+
249
+ //
250
+ // Wells
251
+ // --------------------------------------------------
252
+
253
+ .well {
254
+ @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);
255
+ border-color: darken($well-bg, 10%);
256
+ $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
257
+ @include box-shadow($shadow);
258
+ }