bastion 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. checksums.yaml +15 -0
  2. data/.jshintrc +35 -0
  3. data/Gruntfile.js +24 -0
  4. data/LICENSE +339 -0
  5. data/README.md +8 -0
  6. data/Rakefile +53 -0
  7. data/app/assets/javascripts/bastion/auth/auth.module.js +87 -0
  8. data/app/assets/javascripts/bastion/auth/authorization.service.js +48 -0
  9. data/app/assets/javascripts/bastion/bastion-bootstrap.js +32 -0
  10. data/app/assets/javascripts/bastion/bastion-resource.factory.js +39 -0
  11. data/app/assets/javascripts/bastion/bastion.js +52 -0
  12. data/app/assets/javascripts/bastion/bastion.module.js +213 -0
  13. data/app/assets/javascripts/bastion/i18n/README +9 -0
  14. data/app/assets/javascripts/bastion/i18n/i18n.module.js +24 -0
  15. data/app/assets/javascripts/bastion/i18n/katello.pot +968 -0
  16. data/app/assets/javascripts/bastion/i18n/locale/README +1 -0
  17. data/app/assets/javascripts/bastion/i18n/translate.service.js +14 -0
  18. data/app/assets/javascripts/bastion/i18n/translations.js +3 -0
  19. data/app/assets/javascripts/bastion/i18n/zanata.xml +28 -0
  20. data/app/assets/javascripts/bastion/incubator/alch-alert.directive.js +67 -0
  21. data/app/assets/javascripts/bastion/incubator/alch-container-scroll.directive.js +44 -0
  22. data/app/assets/javascripts/bastion/incubator/alch-dropdown.directive.js +28 -0
  23. data/app/assets/javascripts/bastion/incubator/alch-edit.directive.js +361 -0
  24. data/app/assets/javascripts/bastion/incubator/alch-flyout.directive.js +19 -0
  25. data/app/assets/javascripts/bastion/incubator/alch-form-buttons.directive.js +60 -0
  26. data/app/assets/javascripts/bastion/incubator/alch-form-group.directive.js +87 -0
  27. data/app/assets/javascripts/bastion/incubator/alch-infinite-scroll.directive.js +84 -0
  28. data/app/assets/javascripts/bastion/incubator/alch-menu.directive.js +56 -0
  29. data/app/assets/javascripts/bastion/incubator/alch-modal.directive.js +80 -0
  30. data/app/assets/javascripts/bastion/incubator/alch-save-control.directive.js +42 -0
  31. data/app/assets/javascripts/bastion/incubator/alch-table.directive.js +295 -0
  32. data/app/assets/javascripts/bastion/incubator/format/alch-format.module.js +21 -0
  33. data/app/assets/javascripts/bastion/incubator/format/array-to-string.filter.js +30 -0
  34. data/app/assets/javascripts/bastion/incubator/format/boolean-to-yes-no.filter.js +34 -0
  35. data/app/assets/javascripts/bastion/incubator/format/capitalize.filter.js +32 -0
  36. data/app/assets/javascripts/bastion/incubator/format/key-value-to-string.filter.js +40 -0
  37. data/app/assets/javascripts/bastion/incubator/format/unlimitedFilter.filter.js +35 -0
  38. data/app/assets/javascripts/bastion/incubator/stylesheets/alch-edit.scss +34 -0
  39. data/app/assets/javascripts/bastion/incubator/stylesheets/header.scss +207 -0
  40. data/app/assets/javascripts/bastion/incubator/views/alch-alert.html +6 -0
  41. data/app/assets/javascripts/bastion/incubator/views/alch-dropdown.html +19 -0
  42. data/app/assets/javascripts/bastion/incubator/views/alch-edit-add-item.html +21 -0
  43. data/app/assets/javascripts/bastion/incubator/views/alch-edit-add-remove-cancel.html +28 -0
  44. data/app/assets/javascripts/bastion/incubator/views/alch-edit-checkbox.html +6 -0
  45. data/app/assets/javascripts/bastion/incubator/views/alch-edit-custom.html +8 -0
  46. data/app/assets/javascripts/bastion/incubator/views/alch-edit-multiselect.html +17 -0
  47. data/app/assets/javascripts/bastion/incubator/views/alch-edit-save-cancel.html +20 -0
  48. data/app/assets/javascripts/bastion/incubator/views/alch-edit-select.html +10 -0
  49. data/app/assets/javascripts/bastion/incubator/views/alch-edit-text.html +6 -0
  50. data/app/assets/javascripts/bastion/incubator/views/alch-edit-textarea.html +6 -0
  51. data/app/assets/javascripts/bastion/incubator/views/alch-edit.html +18 -0
  52. data/app/assets/javascripts/bastion/incubator/views/alch-flyout.html +10 -0
  53. data/app/assets/javascripts/bastion/incubator/views/alch-form-buttons.html +10 -0
  54. data/app/assets/javascripts/bastion/incubator/views/alch-form-group.html +9 -0
  55. data/app/assets/javascripts/bastion/incubator/views/alch-menu.html +18 -0
  56. data/app/assets/javascripts/bastion/incubator/views/alch-modal-remove.html +13 -0
  57. data/app/assets/javascripts/bastion/incubator/views/alch-save-control.html +18 -0
  58. data/app/assets/javascripts/bastion/layouts/details-nutupane.html +73 -0
  59. data/app/assets/javascripts/bastion/layouts/nutupane.html +63 -0
  60. data/app/assets/javascripts/bastion/layouts/select-all-results.html +9 -0
  61. data/app/assets/javascripts/bastion/menu/menu-expander.service.js +51 -0
  62. data/app/assets/javascripts/bastion/menu/menu.module.js +26 -0
  63. data/app/assets/javascripts/bastion/utils/as.filter.js +33 -0
  64. data/app/assets/javascripts/bastion/utils/form-utils.service.js +53 -0
  65. data/app/assets/javascripts/bastion/utils/utils.module.js +21 -0
  66. data/app/assets/javascripts/bastion/widgets/current-tasks.directive.js +67 -0
  67. data/app/assets/javascripts/bastion/widgets/nutupane-table.directive.js +59 -0
  68. data/app/assets/javascripts/bastion/widgets/nutupane.factory.js +316 -0
  69. data/app/assets/javascripts/bastion/widgets/page-title.directive.js +61 -0
  70. data/app/assets/javascripts/bastion/widgets/page-title.service.js +42 -0
  71. data/app/assets/javascripts/bastion/widgets/path-selector.directive.js +109 -0
  72. data/app/assets/javascripts/bastion/widgets/views/current-tasks.html +23 -0
  73. data/app/assets/javascripts/bastion/widgets/views/path-selector.html +11 -0
  74. data/app/assets/javascripts/bastion/widgets/widgets.module.js +24 -0
  75. data/app/assets/stylesheets/bastion/animations.less +15 -0
  76. data/app/assets/stylesheets/bastion/bastion.less +160 -0
  77. data/app/assets/stylesheets/bastion/forms.less +41 -0
  78. data/app/assets/stylesheets/bastion/gpg-keys.less +36 -0
  79. data/app/assets/stylesheets/bastion/helpers.less +6 -0
  80. data/app/assets/stylesheets/bastion/mixins.less +15 -0
  81. data/app/assets/stylesheets/bastion/nutupane.less +382 -0
  82. data/app/assets/stylesheets/bastion/overrides.less +54 -0
  83. data/app/assets/stylesheets/bastion/path-selector.less +123 -0
  84. data/app/assets/stylesheets/bastion/systems.less +35 -0
  85. data/app/assets/stylesheets/bastion/tasks.less +23 -0
  86. data/app/assets/stylesheets/bastion/typography.less +31 -0
  87. data/app/assets/stylesheets/bastion/variables.less +3 -0
  88. data/app/controllers/bastion/bastion_controller.rb +24 -0
  89. data/app/views/bastion/layouts/application.html.erb +32 -0
  90. data/app/views/bastion/layouts/application_ie.html.erb +5 -0
  91. data/bastion.js +26 -0
  92. data/bower.json +94 -0
  93. data/config/routes.rb +25 -0
  94. data/config/routes/mount_engine.rb +3 -0
  95. data/grunt/bower.js +20 -0
  96. data/grunt/htmlhint.js +15 -0
  97. data/grunt/jshint.js +9 -0
  98. data/grunt/karma.js +83 -0
  99. data/lib/bastion.rb +17 -0
  100. data/lib/bastion/engine.rb +37 -0
  101. data/lib/bastion/version.rb +3 -0
  102. data/package.json +29 -0
  103. data/test/auth/authorization.service.test.js +63 -0
  104. data/test/bastion/bastion-resource.factory.test.js +31 -0
  105. data/test/bastion/test-constants.js +30 -0
  106. data/test/i18n/translate.service.test.js +31 -0
  107. data/test/incubator/alch-alert.directive.test.js +84 -0
  108. data/test/incubator/alch-container-scroll.directive.test.js +68 -0
  109. data/test/incubator/alch-dropdown.directive.test.js +113 -0
  110. data/test/incubator/alch-edit.directive.test.js +320 -0
  111. data/test/incubator/alch-flyout.directive.test.js +73 -0
  112. data/test/incubator/alch-form-buttons.directive.test.js +55 -0
  113. data/test/incubator/alch-form-group.directive.test.js +76 -0
  114. data/test/incubator/alch-infinite-scroll.directive.test.js +123 -0
  115. data/test/incubator/alch-menu.directive.test.js +94 -0
  116. data/test/incubator/alch-modal.directive.test.js +81 -0
  117. data/test/incubator/alch-table.directive.test.js +270 -0
  118. data/test/incubator/format/array-to-string.filter.test.js +38 -0
  119. data/test/incubator/format/boolean-to-yes-no.filter.test.js +41 -0
  120. data/test/incubator/format/capitalize.filter.test.js +35 -0
  121. data/test/incubator/format/key-value-to-string.filter.test.js +60 -0
  122. data/test/incubator/format/unlimited-filter.filter.test.js +31 -0
  123. data/test/incubator/nutupane-table.directive.test.js +69 -0
  124. data/test/incubator/nutupane.factory.test.js +307 -0
  125. data/test/menu/menu-expander.service.test.js +74 -0
  126. data/test/test-mocks.module.js +268 -0
  127. data/test/utils/as.filter.test.js +33 -0
  128. data/test/utils/form-utils.service.test.js +52 -0
  129. data/test/widgets/page-title.directive.test.js +54 -0
  130. data/test/widgets/page-title.service.test.js +51 -0
  131. data/test/widgets/path-selector.directive.test.js +136 -0
  132. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.eot +0 -0
  133. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.svg +229 -0
  134. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  135. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.woff +0 -0
  136. data/vendor/assets/fonts/bastion/font-awesome/FontAwesome.otf +0 -0
  137. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.eot +0 -0
  138. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.svg +399 -0
  139. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.ttf +0 -0
  140. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.woff +0 -0
  141. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.eot +0 -0
  142. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.svg +146 -0
  143. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.ttf +0 -0
  144. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.woff +0 -0
  145. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.eot +0 -0
  146. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.svg +146 -0
  147. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.ttf +0 -0
  148. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.woff +0 -0
  149. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.eot +0 -0
  150. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.svg +146 -0
  151. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.ttf +0 -0
  152. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.woff +0 -0
  153. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  154. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.svg +146 -0
  155. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  156. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  157. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.eot +0 -0
  158. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.svg +146 -0
  159. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.ttf +0 -0
  160. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.woff +0 -0
  161. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.eot +0 -0
  162. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.svg +146 -0
  163. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.ttf +0 -0
  164. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.woff +0 -0
  165. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.eot +0 -0
  166. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.svg +146 -0
  167. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.ttf +0 -0
  168. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.woff +0 -0
  169. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.eot +0 -0
  170. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.svg +146 -0
  171. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.ttf +0 -0
  172. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.woff +0 -0
  173. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.eot +0 -0
  174. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.svg +146 -0
  175. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.ttf +0 -0
  176. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.woff +0 -0
  177. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.eot +0 -0
  178. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.svg +146 -0
  179. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  180. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.woff +0 -0
  181. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.eot +0 -0
  182. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.svg +454 -0
  183. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.ttf +0 -0
  184. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.woff +0 -0
  185. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.eot +0 -0
  186. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.svg +454 -0
  187. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.ttf +0 -0
  188. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.woff +0 -0
  189. data/vendor/assets/javascripts/bastion/alchemy/alchemy.js +20 -0
  190. data/vendor/assets/javascripts/bastion/angular-animate/angular-animate.js +1226 -0
  191. data/vendor/assets/javascripts/bastion/angular-blocks/angular-blocks.js +79 -0
  192. data/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3677 -0
  193. data/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3427 -0
  194. data/vendor/assets/javascripts/bastion/angular-gettext/angular-gettext.js +345 -0
  195. data/vendor/assets/javascripts/bastion/angular-resource/angular-resource.js +594 -0
  196. data/vendor/assets/javascripts/bastion/angular-route/angular-route.js +920 -0
  197. data/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +622 -0
  198. data/vendor/assets/javascripts/bastion/angular-ui-bootstrap/datepicker.js +447 -0
  199. data/vendor/assets/javascripts/bastion/angular-ui-bootstrap/timepicker.js +232 -0
  200. data/vendor/assets/javascripts/bastion/angular-ui-router/angular-ui-router.js +3223 -0
  201. data/vendor/assets/javascripts/bastion/angular-uuid4/angular-uuid4.js +21 -0
  202. data/vendor/assets/javascripts/bastion/angular/angular.js +20560 -0
  203. data/vendor/assets/javascripts/bastion/es5-shim/es5-shim.js +1216 -0
  204. data/vendor/assets/javascripts/bastion/json3/json3.js +861 -0
  205. data/vendor/assets/javascripts/bastion/ngUpload/ng-upload.js +205 -0
  206. data/vendor/assets/javascripts/bastion/underscore/underscore.js +1276 -0
  207. data/vendor/assets/stylesheets/bastion/alchemy/_colors.scss +99 -0
  208. data/vendor/assets/stylesheets/bastion/alchemy/_media_object.scss +22 -0
  209. data/vendor/assets/stylesheets/bastion/alchemy/_mixins.scss +24 -0
  210. data/vendor/assets/stylesheets/bastion/alchemy/_normalize.scss +396 -0
  211. data/vendor/assets/stylesheets/bastion/alchemy/_vars.scss +31 -0
  212. data/vendor/assets/stylesheets/bastion/alchemy/alchemy.scss +8 -0
  213. data/vendor/assets/stylesheets/bastion/bootstrap/alerts.less +67 -0
  214. data/vendor/assets/stylesheets/bastion/bootstrap/badges.less +51 -0
  215. data/vendor/assets/stylesheets/bastion/bootstrap/bootstrap.less +49 -0
  216. data/vendor/assets/stylesheets/bastion/bootstrap/breadcrumbs.less +23 -0
  217. data/vendor/assets/stylesheets/bastion/bootstrap/button-groups.less +227 -0
  218. data/vendor/assets/stylesheets/bastion/bootstrap/buttons.less +155 -0
  219. data/vendor/assets/stylesheets/bastion/bootstrap/carousel.less +232 -0
  220. data/vendor/assets/stylesheets/bastion/bootstrap/close.less +33 -0
  221. data/vendor/assets/stylesheets/bastion/bootstrap/code.less +53 -0
  222. data/vendor/assets/stylesheets/bastion/bootstrap/component-animations.less +29 -0
  223. data/vendor/assets/stylesheets/bastion/bootstrap/dropdowns.less +187 -0
  224. data/vendor/assets/stylesheets/bastion/bootstrap/forms.less +375 -0
  225. data/vendor/assets/stylesheets/bastion/bootstrap/glyphicons.less +237 -0
  226. data/vendor/assets/stylesheets/bastion/bootstrap/grid.less +79 -0
  227. data/vendor/assets/stylesheets/bastion/bootstrap/input-groups.less +136 -0
  228. data/vendor/assets/stylesheets/bastion/bootstrap/jumbotron.less +46 -0
  229. data/vendor/assets/stylesheets/bastion/bootstrap/labels.less +64 -0
  230. data/vendor/assets/stylesheets/bastion/bootstrap/list-group.less +88 -0
  231. data/vendor/assets/stylesheets/bastion/bootstrap/media.less +56 -0
  232. data/vendor/assets/stylesheets/bastion/bootstrap/mixins.less +845 -0
  233. data/vendor/assets/stylesheets/bastion/bootstrap/modals.less +129 -0
  234. data/vendor/assets/stylesheets/bastion/bootstrap/navbar.less +612 -0
  235. data/vendor/assets/stylesheets/bastion/bootstrap/navs.less +242 -0
  236. data/vendor/assets/stylesheets/bastion/bootstrap/normalize.less +406 -0
  237. data/vendor/assets/stylesheets/bastion/bootstrap/pager.less +55 -0
  238. data/vendor/assets/stylesheets/bastion/bootstrap/pagination.less +85 -0
  239. data/vendor/assets/stylesheets/bastion/bootstrap/panels.less +182 -0
  240. data/vendor/assets/stylesheets/bastion/bootstrap/popovers.less +133 -0
  241. data/vendor/assets/stylesheets/bastion/bootstrap/print.less +105 -0
  242. data/vendor/assets/stylesheets/bastion/bootstrap/progress-bars.less +80 -0
  243. data/vendor/assets/stylesheets/bastion/bootstrap/responsive-utilities.less +209 -0
  244. data/vendor/assets/stylesheets/bastion/bootstrap/scaffolding.less +119 -0
  245. data/vendor/assets/stylesheets/bastion/bootstrap/tables.less +231 -0
  246. data/vendor/assets/stylesheets/bastion/bootstrap/theme.less +247 -0
  247. data/vendor/assets/stylesheets/bastion/bootstrap/thumbnails.less +36 -0
  248. data/vendor/assets/stylesheets/bastion/bootstrap/tooltip.less +95 -0
  249. data/vendor/assets/stylesheets/bastion/bootstrap/type.less +281 -0
  250. data/vendor/assets/stylesheets/bastion/bootstrap/utilities.less +56 -0
  251. data/vendor/assets/stylesheets/bastion/bootstrap/variables.less +642 -0
  252. data/vendor/assets/stylesheets/bastion/bootstrap/wells.less +29 -0
  253. data/vendor/assets/stylesheets/bastion/font-awesome/less/bootstrap.less +84 -0
  254. data/vendor/assets/stylesheets/bastion/font-awesome/less/core.less +129 -0
  255. data/vendor/assets/stylesheets/bastion/font-awesome/less/extras.less +93 -0
  256. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome-ie7.less +1953 -0
  257. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome.less +33 -0
  258. data/vendor/assets/stylesheets/bastion/font-awesome/less/icons.less +381 -0
  259. data/vendor/assets/stylesheets/bastion/font-awesome/less/mixins.less +48 -0
  260. data/vendor/assets/stylesheets/bastion/font-awesome/less/path.less +14 -0
  261. data/vendor/assets/stylesheets/bastion/font-awesome/less/variables.less +735 -0
  262. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_bootstrap.scss +84 -0
  263. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_core.scss +129 -0
  264. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_extras.scss +93 -0
  265. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_icons.scss +381 -0
  266. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_mixins.scss +48 -0
  267. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_path.scss +14 -0
  268. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_variables.scss +734 -0
  269. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome-ie7.scss +1953 -0
  270. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome.scss +33 -0
  271. data/vendor/assets/stylesheets/bastion/rcue/buttons.less +44 -0
  272. data/vendor/assets/stylesheets/bastion/rcue/fonts.less +52 -0
  273. data/vendor/assets/stylesheets/bastion/rcue/forms.less +19 -0
  274. data/vendor/assets/stylesheets/bastion/rcue/mixins.less +50 -0
  275. data/vendor/assets/stylesheets/bastion/rcue/navbar.less +481 -0
  276. data/vendor/assets/stylesheets/bastion/rcue/rcue.less +15 -0
  277. data/vendor/assets/stylesheets/bastion/rcue/variables.less +47 -0
  278. metadata +376 -0
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+
14
+
15
+ describe('Directive: alchTable', function() {
16
+ var scope,
17
+ compile,
18
+ tableElement,
19
+ chooseTableElement;
20
+
21
+ beforeEach(module('alchemy'));
22
+
23
+ beforeEach(inject(function(_$compile_, _$rootScope_) {
24
+ compile = _$compile_;
25
+ scope = _$rootScope_;
26
+ }));
27
+
28
+ beforeEach(function() {
29
+ scope.table = {};
30
+ scope.table.rows = [{
31
+ name: 'Spring Bock',
32
+ style: 'ale'
33
+ },{
34
+ name: 'Pilsner',
35
+ style: 'lager'
36
+ },{
37
+ name: 'Quadrupel',
38
+ style: 'beer',
39
+ unselectable: true
40
+ }]
41
+ });
42
+
43
+ beforeEach(function() {
44
+ tableElement = angular.element(
45
+ '<div alch-table="table">' +
46
+ '<table>' +
47
+ '<thead class="hidden">' +
48
+ '<tr alch-table-head row-select>' +
49
+ '<th alch-table-column>{{ "Name" }}</th>' +
50
+ '</tr>' +
51
+ '</thead>' +
52
+ '<tbody>' +
53
+ '<tr alch-table-row ng-repeat="item in table.rows" row-select="item" active-row="true">' +
54
+ '<td alch-table-cell>{{ item.name }}</td>' +
55
+ '<td alch-table-cell>{{ item.style }}</td>' +
56
+ '</tr>' +
57
+ '</tbody>' +
58
+ '</table>' +
59
+ '</div>');
60
+
61
+ chooseTableElement = angular.element(
62
+ '<div alch-table="table">' +
63
+ '<table>' +
64
+ '<thead class="hidden">' +
65
+ '<tr alch-table-head row-choice>' +
66
+ '<th alch-table-column>{{ "Name" }}</th>' +
67
+ '</tr>' +
68
+ '</thead>' +
69
+ '<tbody>' +
70
+ '<tr alch-table-row ng-repeat="item in table.rows" row-choice="item">' +
71
+ '<td alch-table-cell>{{ item.name }}</td>' +
72
+ '<td alch-table-cell>{{ item.style }}</td>' +
73
+ '</tr>' +
74
+ '</tbody>' +
75
+ '</table>' +
76
+ '</div>');
77
+
78
+
79
+ compile(tableElement)(scope);
80
+ compile(chooseTableElement)(scope);
81
+ scope.$digest();
82
+ });
83
+
84
+ describe('alchTable controller', function() {
85
+ var element,
86
+ tableController;
87
+
88
+ beforeEach(inject(function($controller) {
89
+ tableController = $controller('AlchTableController', {$scope: scope, $element: tableElement});
90
+ }));
91
+
92
+ it("should append a row", function() {
93
+ var row1 = {}, row2 = {};
94
+
95
+ expect(scope.rows).toEqual([]);
96
+
97
+ tableController.addRow(row1);
98
+ tableController.addRow(row2);
99
+
100
+ expect(scope.rows).toEqual([row1, row2]);
101
+ });
102
+
103
+ it("should append a table head with columns", function() {
104
+ var col1 = {}, col2 = {},
105
+ tableHead = { columns: [col1, col2] };
106
+
107
+ expect(scope.headers).toEqual([]);
108
+
109
+ tableController.addHeader(tableHead);
110
+ expect(scope.headers).toEqual([{ columns: [col1, col2] }]);
111
+ });
112
+
113
+ it("should update the selected row count", function() {
114
+ var row = { selected: true };
115
+
116
+ tableController.itemSelected(row);
117
+
118
+ expect(scope.table.numSelected).toEqual(1);
119
+ expect(scope.table.allSelected()).toEqual(false);
120
+ });
121
+
122
+ it("should select all selectable rows", function() {
123
+ tableController.selectAll(true);
124
+
125
+ expect(scope.table.numSelected).toEqual(2);
126
+ expect(scope.table.allSelected()).toEqual(true);
127
+ expect(scope.table.rows[0].selected).toEqual(true);
128
+ });
129
+
130
+ it("should unselect all rows", function() {
131
+ tableController.selectAll(false);
132
+
133
+ expect(scope.table.numSelected).toEqual(0);
134
+ expect(scope.table.allSelected()).toEqual(false);
135
+ expect(scope.table.rows[0].selected).toEqual(false);
136
+ });
137
+
138
+ it("should set the chosen row", function() {
139
+ var row = { id: 1 };
140
+
141
+ tableController.itemChosen(row);
142
+
143
+ expect(scope.table.chosenRow).toBe(row);
144
+ });
145
+
146
+ it("should disable select all", function() {
147
+ tableController.disableSelectAll(true);
148
+
149
+ expect(tableController.selection.selectAllDisabled).toBe(true);
150
+ });
151
+
152
+ it("should provide a method to check if all are selected", function() {
153
+ scope.table.selectAll(true);
154
+ expect(scope.table.allSelected()).toBe(true);
155
+ });
156
+
157
+ });
158
+
159
+ describe('alchTable directive', function() {
160
+ it("should have two columns including the row-select", function() {
161
+ var columns = tableElement.find('thead').find('tr').find('th');
162
+
163
+ expect(columns.length).toBe(2);
164
+ });
165
+
166
+ it('should have two rows', function() {
167
+ var rows = tableElement.find('tbody').find('tr');
168
+
169
+ expect(rows.length).toBe(scope.table.rows.length);
170
+ });
171
+ });
172
+
173
+ describe('alchTableHead', function() {
174
+
175
+ describe('directive', function() {
176
+ describe('directive', function() {
177
+ it("should select a table head row", function() {
178
+ var tableHead = angular.element(tableElement.find('thead').find('tr')[0]),
179
+ checkbox = tableHead.find('input[type="checkbox"]');
180
+
181
+ checkbox.trigger('click');
182
+ checkbox.attr('checked', 'checked');
183
+ checkbox.prop('checked', true);
184
+
185
+ expect(checkbox.is(':checked')).toBe(true);
186
+ });
187
+ });
188
+ });
189
+
190
+ describe('controller', function() {
191
+ var element,
192
+ tableHeadController;
193
+
194
+ beforeEach(inject(function($controller) {
195
+ tableController = $controller('AlchTableHeadController', {$scope: scope});
196
+ }));
197
+
198
+ it("should append a column", function() {
199
+ var col1 = {};
200
+
201
+ expect(scope.header.columns).toEqual([]);
202
+
203
+ tableController.addColumn(col1);
204
+ expect(scope.header.columns).toEqual([col1]);
205
+ });
206
+ });
207
+ });
208
+
209
+ describe('alchTableRow', function() {
210
+
211
+ describe('directive', function() {
212
+ it("should select a row and add 'selected-row' class", function() {
213
+ var row = angular.element(tableElement.find('tbody').find('tr')[0]),
214
+ checkbox = row.find('.row-select').find('input');
215
+
216
+ checkbox.trigger('click');
217
+ checkbox.attr('checked', 'checked');
218
+ checkbox.prop('checked', true);
219
+
220
+ expect(checkbox.is(':checked')).toBe(true);
221
+ expect(row.hasClass('selected-row')).toBe(true);
222
+ });
223
+
224
+ it("should choose a row and add 'selected-row' class", function() {
225
+ var row = angular.element(chooseTableElement.find('tbody').find('tr')[0]),
226
+ radio = row.find('.row-choice').find('input');
227
+
228
+ radio.trigger('click');
229
+
230
+ expect(row.hasClass('selected-row')).toBe(true);
231
+ });
232
+
233
+ it("should only allow one row to be selected at a time", function() {
234
+ var radios = angular.element(chooseTableElement.find('input'));
235
+
236
+
237
+ angular.element(radios[0]).trigger('click');
238
+ angular.element(radios[1]).trigger('click');
239
+
240
+ expect(chooseTableElement.find('.selected-row').length).toBe(1);
241
+ });
242
+
243
+ it("should set a row as active and add 'active-row' class", function() {
244
+ var cells = angular.element(angular.element(tableElement.find('tbody').find('tr')[0])).find('td');
245
+
246
+ expect(cells.hasClass('active-row')).toBe(true);
247
+ });
248
+ });
249
+
250
+ describe('controller', function() {
251
+ var tableRowController;
252
+
253
+ beforeEach(inject(function($controller) {
254
+ tableRowController = $controller('AlchTableRowController', {$scope: scope});
255
+ }));
256
+
257
+ it("should append a cell", function() {
258
+ var cell1 = {}, cell2 = {};
259
+
260
+ expect(scope.row.cells).toEqual([]);
261
+
262
+ tableRowController.addCell(cell1);
263
+ tableRowController.addCell(cell2);
264
+
265
+ expect(scope.row.cells).toEqual([cell1, cell2]);
266
+ });
267
+ });
268
+ });
269
+
270
+ });
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+ describe('Filter:arrayToString', function() {
14
+ var array, arrayToStringFilter;
15
+
16
+ beforeEach(module('alchemy.format'));
17
+
18
+ beforeEach(inject(function($filter) {
19
+ array = [
20
+ {id: 1, name: 'one'},
21
+ {id: 2, name: 'two'},
22
+ {id: 3, name: 'three'}
23
+ ];
24
+ arrayToStringFilter = $filter('arrayToString');
25
+ }));
26
+
27
+ it("transforms an array to a string.", function() {
28
+ expect(arrayToStringFilter(array, "id")).toBe('1, 2, 3');
29
+ });
30
+
31
+ it("defaults item to pluck to 'name' if not provided.", function() {
32
+ expect(arrayToStringFilter(array)).toBe('one, two, three');
33
+ });
34
+
35
+ it("allows a custom separator", function() {
36
+ expect(arrayToStringFilter(array, "id", ':')).toBe('1:2:3');
37
+ });
38
+ });
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+ describe('Filter:booleanToYesNo', function() {
14
+ var filter;
15
+
16
+ beforeEach(module('alchemy.format'));
17
+
18
+ beforeEach(module(function($provide) {
19
+ $provide.value('translate', function(a) {return a});
20
+ }));
21
+
22
+ beforeEach(inject(function($filter) {
23
+ filter = $filter('booleanToYesNo');
24
+ }));
25
+
26
+ it("returns 'Yes' for true, and 'No' for false", function() {
27
+ expect(filter(true)).toBe('Yes');
28
+ expect(filter(false)).toBe('No');
29
+ });
30
+
31
+ it("returns an empty string for null", function() {
32
+ expect(filter()).toBe('');
33
+ expect(filter('')).toBe('');
34
+ });
35
+
36
+ it("allows Yes and No to be overriden", function() {
37
+ expect(filter(true, 'ok', 'fail')).toBe('ok');
38
+ expect(filter(false, 'ok', 'fail')).toBe('fail');
39
+ });
40
+
41
+ });
@@ -0,0 +1,35 @@
1
+ /**
2
+ Copyright 2014 Red Hat, Inc.
3
+
4
+ This software is licensed to you under the GNU General Public
5
+ License as published by the Free Software Foundation; either version
6
+ 2 of the License (GPLv2) or (at your option) any later version.
7
+ There is NO WARRANTY for this software, express or implied,
8
+ including the implied warranties of MERCHANTABILITY,
9
+ NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ have received a copy of GPLv2 along with this software; if not, see
11
+ http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ **/
13
+ describe('Filter:capitalize', function() {
14
+ var capitalizeFilter;
15
+
16
+ beforeEach(module('alchemy.format'));
17
+
18
+ beforeEach(inject(function($filter) {
19
+ capitalizeFilter = $filter('capitalize');
20
+ }));
21
+
22
+ it("capitalizes a string.", function() {
23
+ expect(capitalizeFilter("a string")).toBe('A string');
24
+ });
25
+
26
+ it("does not capitalize non-strings.", function() {
27
+ expect(capitalizeFilter(1)).toBe(1);
28
+ });
29
+
30
+ it("handles null and undefined values", function() {
31
+ expect(capitalizeFilter(null)).toBe(null);
32
+ expect(capitalizeFilter(undefined)).toBe(undefined);
33
+ });
34
+ });
35
+
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+ describe('Filter:keyValueToString', function() {
14
+ var keyValues, keyValueFilter;
15
+
16
+ beforeEach(module('alchemy.format'));
17
+
18
+ beforeEach(inject(function($filter) {
19
+ keyValues = [
20
+ {keyname: 'keyOne', value: 'valueOne'},
21
+ {keyname: 'keyTwo', value: 'valueTwo'},
22
+ {keyname: 'keyThree', value: 'valueThree'},
23
+ ];
24
+ keyValueFilter = $filter('keyValueToString');
25
+ }));
26
+
27
+ it("transforms an array of key, values to a string.", function() {
28
+ expect(keyValueFilter(keyValues)).
29
+ toBe('keyOne: valueOne, keyTwo: valueTwo, keyThree: valueThree');
30
+ });
31
+
32
+ it("ensures transform value is an array before proceeding", function() {
33
+ expect(keyValueFilter({keyname: 'key', value: 'value'})).toBe('key: value');
34
+ });
35
+
36
+ describe("allows overriding default defaults.", function() {
37
+ var options;
38
+ beforeEach(function() {
39
+ options = {};
40
+ });
41
+
42
+ it("by providing a custom separator", function() {
43
+ options.separator = '='
44
+ expect(keyValueFilter(keyValues, options)).
45
+ toBe('keyOne=valueOne, keyTwo=valueTwo, keyThree=valueThree');
46
+ });
47
+
48
+ it('by providing a custom key name', function() {
49
+ options.keyName = 'key';
50
+ expect(keyValueFilter({key: 'key', value: 'value'}, options)).
51
+ toBe('key: value');
52
+ });
53
+
54
+ it('by providing a custom value name', function() {
55
+ options.valueName = 'valueeee';
56
+ expect(keyValueFilter({keyname: 'key', valueeee: 'value'}, options)).
57
+ toBe('key: value');
58
+ });
59
+ });
60
+ });