adhoq 0.0.2

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 (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
+ }