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,101 @@
1
+ //
2
+ // Basic print styles
3
+ // --------------------------------------------------
4
+ // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
5
+
6
+ @media print {
7
+
8
+ * {
9
+ text-shadow: none !important;
10
+ color: #000 !important; // Black prints faster: h5bp.com/s
11
+ background: transparent !important;
12
+ box-shadow: none !important;
13
+ }
14
+
15
+ a,
16
+ a:visited {
17
+ text-decoration: underline;
18
+ }
19
+
20
+ a[href]:after {
21
+ content: " (" attr(href) ")";
22
+ }
23
+
24
+ abbr[title]:after {
25
+ content: " (" attr(title) ")";
26
+ }
27
+
28
+ // Don't show links for images, or javascript/internal links
29
+ a[href^="javascript:"]:after,
30
+ a[href^="#"]:after {
31
+ content: "";
32
+ }
33
+
34
+ pre,
35
+ blockquote {
36
+ border: 1px solid #999;
37
+ page-break-inside: avoid;
38
+ }
39
+
40
+ thead {
41
+ display: table-header-group; // h5bp.com/t
42
+ }
43
+
44
+ tr,
45
+ img {
46
+ page-break-inside: avoid;
47
+ }
48
+
49
+ img {
50
+ max-width: 100% !important;
51
+ }
52
+
53
+ p,
54
+ h2,
55
+ h3 {
56
+ orphans: 3;
57
+ widows: 3;
58
+ }
59
+
60
+ h2,
61
+ h3 {
62
+ page-break-after: avoid;
63
+ }
64
+
65
+ // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245
66
+ // Once fixed, we can just straight up remove this.
67
+ select {
68
+ background: #fff !important;
69
+ }
70
+
71
+ // Bootstrap components
72
+ .navbar {
73
+ display: none;
74
+ }
75
+ .table {
76
+ td,
77
+ th {
78
+ background-color: #fff !important;
79
+ }
80
+ }
81
+ .btn,
82
+ .dropup > .btn {
83
+ > .caret {
84
+ border-top-color: #000 !important;
85
+ }
86
+ }
87
+ .label {
88
+ border: 1px solid #000;
89
+ }
90
+
91
+ .table {
92
+ border-collapse: collapse !important;
93
+ }
94
+ .table-bordered {
95
+ th,
96
+ td {
97
+ border: 1px solid #ddd !important;
98
+ }
99
+ }
100
+
101
+ }
@@ -0,0 +1,105 @@
1
+ //
2
+ // Progress bars
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Bar animations
7
+ // -------------------------
8
+
9
+ // WebKit
10
+ @-webkit-keyframes progress-bar-stripes {
11
+ from { background-position: 40px 0; }
12
+ to { background-position: 0 0; }
13
+ }
14
+
15
+ // Spec and IE10+
16
+ @keyframes progress-bar-stripes {
17
+ from { background-position: 40px 0; }
18
+ to { background-position: 0 0; }
19
+ }
20
+
21
+
22
+
23
+ // Bar itself
24
+ // -------------------------
25
+
26
+ // Outer container
27
+ .progress {
28
+ overflow: hidden;
29
+ height: $line-height-computed;
30
+ margin-bottom: $line-height-computed;
31
+ background-color: $progress-bg;
32
+ border-radius: $border-radius-base;
33
+ @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
34
+ }
35
+
36
+ // Bar of progress
37
+ .progress-bar {
38
+ float: left;
39
+ width: 0%;
40
+ height: 100%;
41
+ font-size: $font-size-small;
42
+ line-height: $line-height-computed;
43
+ color: $progress-bar-color;
44
+ text-align: center;
45
+ background-color: $progress-bar-bg;
46
+ @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
47
+ @include transition(width .6s ease);
48
+ }
49
+
50
+ // Striped bars
51
+ //
52
+ // `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
53
+ // `.progress-bar-striped` class, which you just add to an existing
54
+ // `.progress-bar`.
55
+ .progress-striped .progress-bar,
56
+ .progress-bar-striped {
57
+ @include gradient-striped();
58
+ background-size: 40px 40px;
59
+ }
60
+
61
+ // Call animation for the active one
62
+ //
63
+ // `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
64
+ // `.progress-bar.active` approach.
65
+ .progress.active .progress-bar,
66
+ .progress-bar.active {
67
+ @include animation(progress-bar-stripes 2s linear infinite);
68
+ }
69
+
70
+ // Account for lower percentages
71
+ .progress-bar {
72
+ &[aria-valuenow="1"],
73
+ &[aria-valuenow="2"] {
74
+ min-width: 30px;
75
+ }
76
+
77
+ &[aria-valuenow="0"] {
78
+ color: $gray-light;
79
+ min-width: 30px;
80
+ background-color: transparent;
81
+ background-image: none;
82
+ box-shadow: none;
83
+ }
84
+ }
85
+
86
+
87
+
88
+ // Variations
89
+ // -------------------------
90
+
91
+ .progress-bar-success {
92
+ @include progress-bar-variant($progress-bar-success-bg);
93
+ }
94
+
95
+ .progress-bar-info {
96
+ @include progress-bar-variant($progress-bar-info-bg);
97
+ }
98
+
99
+ .progress-bar-warning {
100
+ @include progress-bar-variant($progress-bar-warning-bg);
101
+ }
102
+
103
+ .progress-bar-danger {
104
+ @include progress-bar-variant($progress-bar-danger-bg);
105
+ }
@@ -0,0 +1,34 @@
1
+ // Embeds responsive
2
+ //
3
+ // Credit: Nicolas Gallagher and SUIT CSS.
4
+
5
+ .embed-responsive {
6
+ position: relative;
7
+ display: block;
8
+ height: 0;
9
+ padding: 0;
10
+ overflow: hidden;
11
+
12
+ .embed-responsive-item,
13
+ iframe,
14
+ embed,
15
+ object {
16
+ position: absolute;
17
+ top: 0;
18
+ left: 0;
19
+ bottom: 0;
20
+ height: 100%;
21
+ width: 100%;
22
+ border: 0;
23
+ }
24
+
25
+ // Modifier class for 16:9 aspect ratio
26
+ &.embed-responsive-16by9 {
27
+ padding-bottom: 56.25%;
28
+ }
29
+
30
+ // Modifier class for 4:3 aspect ratio
31
+ &.embed-responsive-4by3 {
32
+ padding-bottom: 75%;
33
+ }
34
+ }
@@ -0,0 +1,174 @@
1
+ //
2
+ // Responsive: Utility classes
3
+ // --------------------------------------------------
4
+
5
+
6
+ // IE10 in Windows (Phone) 8
7
+ //
8
+ // Support for responsive views via media queries is kind of borked in IE10, for
9
+ // Surface/desktop in split view and for Windows Phone 8. This particular fix
10
+ // must be accompanied by a snippet of JavaScript to sniff the user agent and
11
+ // apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
12
+ // our Getting Started page for more information on this bug.
13
+ //
14
+ // For more information, see the following:
15
+ //
16
+ // Issue: https://github.com/twbs/bootstrap/issues/10497
17
+ // Docs: http://getbootstrap.com/getting-started/#support-ie10-width
18
+ // Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
19
+ // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
20
+
21
+ @-ms-viewport {
22
+ width: device-width;
23
+ }
24
+
25
+
26
+ // Visibility utilities
27
+ // Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
28
+
29
+ @include responsive-invisibility('.visible-xs, .visible-sm, .visible-md, .visible-lg');
30
+
31
+ .visible-xs-block,
32
+ .visible-xs-inline,
33
+ .visible-xs-inline-block,
34
+ .visible-sm-block,
35
+ .visible-sm-inline,
36
+ .visible-sm-inline-block,
37
+ .visible-md-block,
38
+ .visible-md-inline,
39
+ .visible-md-inline-block,
40
+ .visible-lg-block,
41
+ .visible-lg-inline,
42
+ .visible-lg-inline-block {
43
+ display: none !important;
44
+ }
45
+
46
+ @media (max-width: $screen-xs-max) {
47
+ @include responsive-visibility('.visible-xs');
48
+ }
49
+ .visible-xs-block {
50
+ @media (max-width: $screen-xs-max) {
51
+ display: block !important;
52
+ }
53
+ }
54
+ .visible-xs-inline {
55
+ @media (max-width: $screen-xs-max) {
56
+ display: inline !important;
57
+ }
58
+ }
59
+ .visible-xs-inline-block {
60
+ @media (max-width: $screen-xs-max) {
61
+ display: inline-block !important;
62
+ }
63
+ }
64
+
65
+ @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
66
+ @include responsive-visibility('.visible-sm');
67
+ }
68
+ .visible-sm-block {
69
+ @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
70
+ display: block !important;
71
+ }
72
+ }
73
+ .visible-sm-inline {
74
+ @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
75
+ display: inline !important;
76
+ }
77
+ }
78
+ .visible-sm-inline-block {
79
+ @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
80
+ display: inline-block !important;
81
+ }
82
+ }
83
+
84
+ @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
85
+ @include responsive-visibility('.visible-md');
86
+ }
87
+ .visible-md-block {
88
+ @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
89
+ display: block !important;
90
+ }
91
+ }
92
+ .visible-md-inline {
93
+ @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
94
+ display: inline !important;
95
+ }
96
+ }
97
+ .visible-md-inline-block {
98
+ @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
99
+ display: inline-block !important;
100
+ }
101
+ }
102
+
103
+ @media (min-width: $screen-lg-min) {
104
+ @include responsive-visibility('.visible-lg');
105
+ }
106
+ .visible-lg-block {
107
+ @media (min-width: $screen-lg-min) {
108
+ display: block !important;
109
+ }
110
+ }
111
+ .visible-lg-inline {
112
+ @media (min-width: $screen-lg-min) {
113
+ display: inline !important;
114
+ }
115
+ }
116
+ .visible-lg-inline-block {
117
+ @media (min-width: $screen-lg-min) {
118
+ display: inline-block !important;
119
+ }
120
+ }
121
+
122
+ @media (max-width: $screen-xs-max) {
123
+ @include responsive-invisibility('.hidden-xs');
124
+ }
125
+
126
+ @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
127
+ @include responsive-invisibility('.hidden-sm');
128
+ }
129
+
130
+ @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
131
+ @include responsive-invisibility('.hidden-md');
132
+ }
133
+
134
+ @media (min-width: $screen-lg-min) {
135
+ @include responsive-invisibility('.hidden-lg');
136
+ }
137
+
138
+
139
+ // Print utilities
140
+ //
141
+ // Media queries are placed on the inside to be mixin-friendly.
142
+
143
+ // Note: Deprecated .visible-print as of v3.2.0
144
+
145
+ @include responsive-invisibility('.visible-print');
146
+
147
+ @media print {
148
+ @include responsive-visibility('.visible-print');
149
+ }
150
+ .visible-print-block {
151
+ display: none !important;
152
+
153
+ @media print {
154
+ display: block !important;
155
+ }
156
+ }
157
+ .visible-print-inline {
158
+ display: none !important;
159
+
160
+ @media print {
161
+ display: inline !important;
162
+ }
163
+ }
164
+ .visible-print-inline-block {
165
+ display: none !important;
166
+
167
+ @media print {
168
+ display: inline-block !important;
169
+ }
170
+ }
171
+
172
+ @media print {
173
+ @include responsive-invisibility('.hidden-print');
174
+ }
@@ -0,0 +1,150 @@
1
+ //
2
+ // Scaffolding
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Reset the box-sizing
7
+ //
8
+ // Heads up! This reset may cause conflicts with some third-party widgets.
9
+ // For recommendations on resolving such conflicts, see
10
+ // http://getbootstrap.com/getting-started/#third-box-sizing
11
+ * {
12
+ @include box-sizing(border-box);
13
+ }
14
+ *:before,
15
+ *:after {
16
+ @include box-sizing(border-box);
17
+ }
18
+
19
+
20
+ // Body reset
21
+
22
+ html {
23
+ font-size: 10px;
24
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
25
+ }
26
+
27
+ body {
28
+ font-family: $font-family-base;
29
+ font-size: $font-size-base;
30
+ line-height: $line-height-base;
31
+ color: $text-color;
32
+ background-color: $body-bg;
33
+ }
34
+
35
+ // Reset fonts for relevant elements
36
+ input,
37
+ button,
38
+ select,
39
+ textarea {
40
+ font-family: inherit;
41
+ font-size: inherit;
42
+ line-height: inherit;
43
+ }
44
+
45
+
46
+ // Links
47
+
48
+ a {
49
+ color: $link-color;
50
+ text-decoration: none;
51
+
52
+ &:hover,
53
+ &:focus {
54
+ color: $link-hover-color;
55
+ text-decoration: underline;
56
+ }
57
+
58
+ &:focus {
59
+ @include tab-focus();
60
+ }
61
+ }
62
+
63
+
64
+ // Figures
65
+ //
66
+ // We reset this here because previously Normalize had no `figure` margins. This
67
+ // ensures we don't break anyone's use of the element.
68
+
69
+ figure {
70
+ margin: 0;
71
+ }
72
+
73
+
74
+ // Images
75
+
76
+ img {
77
+ vertical-align: middle;
78
+ }
79
+
80
+ // Responsive images (ensure images don't scale beyond their parents)
81
+ .img-responsive {
82
+ @include img-responsive();
83
+ }
84
+
85
+ // Rounded corners
86
+ .img-rounded {
87
+ border-radius: $border-radius-large;
88
+ }
89
+
90
+ // Image thumbnails
91
+ //
92
+ // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
93
+ .img-thumbnail {
94
+ padding: $thumbnail-padding;
95
+ line-height: $line-height-base;
96
+ background-color: $thumbnail-bg;
97
+ border: 1px solid $thumbnail-border;
98
+ border-radius: $thumbnail-border-radius;
99
+ @include transition(all .2s ease-in-out);
100
+
101
+ // Keep them at most 100% wide
102
+ @include img-responsive(inline-block);
103
+ }
104
+
105
+ // Perfect circle
106
+ .img-circle {
107
+ border-radius: 50%; // set radius in percents
108
+ }
109
+
110
+
111
+ // Horizontal rules
112
+
113
+ hr {
114
+ margin-top: $line-height-computed;
115
+ margin-bottom: $line-height-computed;
116
+ border: 0;
117
+ border-top: 1px solid $hr-border;
118
+ }
119
+
120
+
121
+ // Only display content to screen readers
122
+ //
123
+ // See: http://a11yproject.com/posts/how-to-hide-content/
124
+
125
+ .sr-only {
126
+ position: absolute;
127
+ width: 1px;
128
+ height: 1px;
129
+ margin: -1px;
130
+ padding: 0;
131
+ overflow: hidden;
132
+ clip: rect(0,0,0,0);
133
+ border: 0;
134
+ }
135
+
136
+ // Use in conjunction with .sr-only to only display content when it's focused.
137
+ // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
138
+ // Credit: HTML5 Boilerplate
139
+
140
+ .sr-only-focusable {
141
+ &:active,
142
+ &:focus {
143
+ position: static;
144
+ width: auto;
145
+ height: auto;
146
+ margin: 0;
147
+ overflow: visible;
148
+ clip: auto;
149
+ }
150
+ }