aleph_analytics 0.0.0.alpha

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 (527) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +0 -0
  3. data/Gemfile +70 -0
  4. data/Gemfile.lock +489 -0
  5. data/LICENSE +21 -0
  6. data/Procfile +2 -0
  7. data/README.md +1 -0
  8. data/ROADMAP.md +7 -0
  9. data/Rakefile +9 -0
  10. data/app/assets/fonts/octicons-local.ttf +0 -0
  11. data/app/assets/fonts/octicons.eot +0 -0
  12. data/app/assets/fonts/octicons.svg +183 -0
  13. data/app/assets/fonts/octicons.ttf +0 -0
  14. data/app/assets/fonts/octicons.woff +0 -0
  15. data/app/assets/javascripts/angular/aleph.js.es6 +90 -0
  16. data/app/assets/javascripts/angular/config/schema_completer_config.js.es6 +71 -0
  17. data/app/assets/javascripts/angular/controllers/alerts/alert_index_controller.js.es6 +16 -0
  18. data/app/assets/javascripts/angular/controllers/alerts/alert_show_controller.js.es6 +99 -0
  19. data/app/assets/javascripts/angular/controllers/controllers.js.es6 +65 -0
  20. data/app/assets/javascripts/angular/controllers/query/query_index_controller.js.es6 +80 -0
  21. data/app/assets/javascripts/angular/controllers/query/query_repl_controller.js.es6 +147 -0
  22. data/app/assets/javascripts/angular/controllers/query/query_show_controller.js.es6 +43 -0
  23. data/app/assets/javascripts/angular/controllers/schema/schema_index_controller.js.es6 +61 -0
  24. data/app/assets/javascripts/angular/controllers/snippet/snippet_index_controller.js.es6 +80 -0
  25. data/app/assets/javascripts/angular/directives/directives.js.es6 +30 -0
  26. data/app/assets/javascripts/angular/directives/query/query_details_directive.js.es6 +87 -0
  27. data/app/assets/javascripts/angular/directives/query/query_version_sidebar_directive.js.es6 +65 -0
  28. data/app/assets/javascripts/angular/directives/result/result_directive.js.es6 +59 -0
  29. data/app/assets/javascripts/angular/directives/result/results_directive.js.es6 +30 -0
  30. data/app/assets/javascripts/angular/directives/visualization_directive.js.es6 +101 -0
  31. data/app/assets/javascripts/angular/filters/filters.js.es6 +27 -0
  32. data/app/assets/javascripts/angular/services/alert/alert.js.es6 +51 -0
  33. data/app/assets/javascripts/angular/services/alert/alert_resource.js.es6 +10 -0
  34. data/app/assets/javascripts/angular/services/lib/ace_completers.js.es6 +29 -0
  35. data/app/assets/javascripts/angular/services/lib/ace_sql_parse.js.es6 +156 -0
  36. data/app/assets/javascripts/angular/services/lib/action_handler.js.es6 +73 -0
  37. data/app/assets/javascripts/angular/services/lib/alert_flash.js.es6 +30 -0
  38. data/app/assets/javascripts/angular/services/lib/default_ace_configurator_service.js.es6 +74 -0
  39. data/app/assets/javascripts/angular/services/lib/github_url_service.js.es6 +53 -0
  40. data/app/assets/javascripts/angular/services/lib/keyword_completer.js.es6 +36 -0
  41. data/app/assets/javascripts/angular/services/lib/local_resource.js.es6 +20 -0
  42. data/app/assets/javascripts/angular/services/lib/lock_service.js.es6 +48 -0
  43. data/app/assets/javascripts/angular/services/lib/locking_poll_service.js.es6 +42 -0
  44. data/app/assets/javascripts/angular/services/lib/matcher_runner.js.es6 +65 -0
  45. data/app/assets/javascripts/angular/services/lib/navigation_guard.js.es6 +45 -0
  46. data/app/assets/javascripts/angular/services/lib/open_repl_service.js.es6 +56 -0
  47. data/app/assets/javascripts/angular/services/lib/page_title_manager.js.es6 +38 -0
  48. data/app/assets/javascripts/angular/services/lib/pagination.js.es6 +114 -0
  49. data/app/assets/javascripts/angular/services/lib/pagination_components.js.es6 +91 -0
  50. data/app/assets/javascripts/angular/services/lib/parameter_methods.js.es6 +35 -0
  51. data/app/assets/javascripts/angular/services/lib/role_model.js.es6 +21 -0
  52. data/app/assets/javascripts/angular/services/lib/schema_completer.js.es6 +56 -0
  53. data/app/assets/javascripts/angular/services/lib/selection_tag_input.js.es6 +42 -0
  54. data/app/assets/javascripts/angular/services/lib/server_configurations.js.es6 +15 -0
  55. data/app/assets/javascripts/angular/services/lib/spinner_state.js.es6 +45 -0
  56. data/app/assets/javascripts/angular/services/lib/tag_resource.js.es6 +14 -0
  57. data/app/assets/javascripts/angular/services/model/collection_dirty_awareness.js.es6 +33 -0
  58. data/app/assets/javascripts/angular/services/model/collection_model_base.js.es6 +75 -0
  59. data/app/assets/javascripts/angular/services/model/dirty_aware_collection_model.js.es6 +31 -0
  60. data/app/assets/javascripts/angular/services/model/dirty_aware_model.js.es6 +50 -0
  61. data/app/assets/javascripts/angular/services/model/model_base.js.es6 +80 -0
  62. data/app/assets/javascripts/angular/services/model/model_state.js.es6 +51 -0
  63. data/app/assets/javascripts/angular/services/model/models.js.es6 +15 -0
  64. data/app/assets/javascripts/angular/services/model/unpersisted_model.js.es6 +20 -0
  65. data/app/assets/javascripts/angular/services/model_generation/model_factory.js.es6 +28 -0
  66. data/app/assets/javascripts/angular/services/model_generation/model_generation.js.es6 +13 -0
  67. data/app/assets/javascripts/angular/services/model_generation/model_manager.js.es6 +86 -0
  68. data/app/assets/javascripts/angular/services/model_generation/resource_factory.js.es6 +38 -0
  69. data/app/assets/javascripts/angular/services/model_generation/standard_collection_model.js.es6 +25 -0
  70. data/app/assets/javascripts/angular/services/model_generation/standard_model.js.es6 +38 -0
  71. data/app/assets/javascripts/angular/services/query/query.js.es6 +55 -0
  72. data/app/assets/javascripts/angular/services/query/query_handler.js.es6 +40 -0
  73. data/app/assets/javascripts/angular/services/query/query_loader.js.es6 +54 -0
  74. data/app/assets/javascripts/angular/services/query/query_request_transformers.js.es6 +26 -0
  75. data/app/assets/javascripts/angular/services/query/query_resource.js.es6 +21 -0
  76. data/app/assets/javascripts/angular/services/query/query_tab.js.es6 +63 -0
  77. data/app/assets/javascripts/angular/services/query/query_versions.js.es6 +21 -0
  78. data/app/assets/javascripts/angular/services/result/result.js.es6 +26 -0
  79. data/app/assets/javascripts/angular/services/result/result_poller.js.es6 +30 -0
  80. data/app/assets/javascripts/angular/services/result/result_runner.js.es6 +48 -0
  81. data/app/assets/javascripts/angular/services/result/results.js.es6 +10 -0
  82. data/app/assets/javascripts/angular/services/schema/schema_column.js.es6 +93 -0
  83. data/app/assets/javascripts/angular/services/schema/schema_column_resource.js.es6 +12 -0
  84. data/app/assets/javascripts/angular/services/schema/schema_columns.js.es6 +57 -0
  85. data/app/assets/javascripts/angular/services/schema/schema_comment_resource.js.es6 +12 -0
  86. data/app/assets/javascripts/angular/services/services.js.es6 +140 -0
  87. data/app/assets/javascripts/angular/services/snippet/ace_snippet_manager.js.es6 +44 -0
  88. data/app/assets/javascripts/angular/services/visualization/source_renderer.js.es6 +70 -0
  89. data/app/assets/javascripts/angular/services/visualization/visualization.js.es6 +47 -0
  90. data/app/assets/javascripts/angular/services/visualization/visualization_service.js.es6 +67 -0
  91. data/app/assets/javascripts/angular/services/visualization/visualizations.js.es6 +11 -0
  92. data/app/assets/javascripts/application.js +22 -0
  93. data/app/assets/javascripts/lib/key_binding.js +24 -0
  94. data/app/assets/javascripts/lib/serialized_storage.js +11 -0
  95. data/app/assets/javascripts/lib/underscore_contrib/array_builders.js +190 -0
  96. data/app/assets/javascripts/lib/underscore_contrib/function_predicates.js +95 -0
  97. data/app/assets/javascripts/lib/underscore_contrib/object_builders.js +111 -0
  98. data/app/assets/javascripts/lib/underscore_contrib/object_selectors.js +112 -0
  99. data/app/assets/javascripts/lib/underscore_contrib/util_existential.js +15 -0
  100. data/app/assets/javascripts/lib/utils.js +29 -0
  101. data/app/assets/stylesheets/alert_bar.css.sass +13 -0
  102. data/app/assets/stylesheets/alerts.css.sass +66 -0
  103. data/app/assets/stylesheets/application.css.sass +35 -0
  104. data/app/assets/stylesheets/comments.css.sass +7 -0
  105. data/app/assets/stylesheets/index_components.css.sass +105 -0
  106. data/app/assets/stylesheets/queries.css.sass +110 -0
  107. data/app/assets/stylesheets/repl.css.sass +59 -0
  108. data/app/assets/stylesheets/results.css.sass +25 -0
  109. data/app/assets/stylesheets/schemas.css.sass +56 -0
  110. data/app/assets/stylesheets/sessions.css.sass +9 -0
  111. data/app/assets/stylesheets/shared.css.sass +157 -0
  112. data/app/assets/stylesheets/sidebar.css.sass +85 -0
  113. data/app/assets/stylesheets/snippets.css.sass +15 -0
  114. data/app/assets/stylesheets/sort_bar.css.sass +10 -0
  115. data/app/assets/stylesheets/spinners.css.sass +67 -0
  116. data/app/assets/stylesheets/summary.css.sass +16 -0
  117. data/app/assets/stylesheets/variables.css.sass +110 -0
  118. data/app/assets/stylesheets/visualizations.css.sass +15 -0
  119. data/app/controllers/alerts_controller.rb +72 -0
  120. data/app/controllers/application_controller.rb +38 -0
  121. data/app/controllers/columns_controller.rb +21 -0
  122. data/app/controllers/queries_controller.rb +85 -0
  123. data/app/controllers/query_versions_controller.rb +38 -0
  124. data/app/controllers/result_csvs_controller.rb +29 -0
  125. data/app/controllers/results_controller.rb +53 -0
  126. data/app/controllers/roles_controller.rb +9 -0
  127. data/app/controllers/schema_comments_controller.rb +47 -0
  128. data/app/controllers/snippets_controller.rb +67 -0
  129. data/app/controllers/tags_controller.rb +19 -0
  130. data/app/controllers/visualizations_controller.rb +61 -0
  131. data/app/mailers/alert_mailer.rb +8 -0
  132. data/app/models/ability.rb +31 -0
  133. data/app/models/alert.rb +139 -0
  134. data/app/models/alert_execution.rb +25 -0
  135. data/app/models/query.rb +85 -0
  136. data/app/models/query_execution.rb +39 -0
  137. data/app/models/query_role.rb +3 -0
  138. data/app/models/query_version.rb +61 -0
  139. data/app/models/result.rb +67 -0
  140. data/app/models/schema_comment.rb +3 -0
  141. data/app/models/snippet.rb +3 -0
  142. data/app/models/user.rb +19 -0
  143. data/app/models/visualization.rb +7 -0
  144. data/app/serializers/alert_serializer.rb +10 -0
  145. data/app/serializers/query_index_serializer.rb +7 -0
  146. data/app/serializers/query_serializer.rb +8 -0
  147. data/app/serializers/query_version_serializer.rb +3 -0
  148. data/app/serializers/result_serializer.rb +3 -0
  149. data/app/views/alert_mailer/alert_failing_email.html.haml +17 -0
  150. data/app/views/alerts/_index.html.haml +10 -0
  151. data/app/views/alerts/_index_item.html.haml +25 -0
  152. data/app/views/alerts/_index_sidebar.html.haml +20 -0
  153. data/app/views/alerts/_index_sort_bar.html.haml +22 -0
  154. data/app/views/alerts/_show.html.haml +90 -0
  155. data/app/views/application/_rollbar.html.erb +9 -0
  156. data/app/views/application/index.html.haml +1 -0
  157. data/app/views/application/unauthorized.html.haml +5 -0
  158. data/app/views/application/unauthorized.json +3 -0
  159. data/app/views/devise/sessions/new.html.haml +22 -0
  160. data/app/views/layouts/application.html.haml +78 -0
  161. data/app/views/queries/_alert.html.haml +6 -0
  162. data/app/views/queries/_comments.html.haml +5 -0
  163. data/app/views/queries/_index.html.haml +15 -0
  164. data/app/views/queries/_index_item.html.haml +37 -0
  165. data/app/views/queries/_index_sidebar.html.haml +58 -0
  166. data/app/views/queries/_index_sort_bar.html.haml +29 -0
  167. data/app/views/queries/_query_details.html.haml +81 -0
  168. data/app/views/queries/_query_version_sidebar.html.haml +46 -0
  169. data/app/views/queries/_repl.html.haml +79 -0
  170. data/app/views/queries/_results.html.haml +29 -0
  171. data/app/views/queries/_role_template.html.haml +3 -0
  172. data/app/views/queries/_show.html.haml +28 -0
  173. data/app/views/queries/_tag_template.html.haml +3 -0
  174. data/app/views/results/_show.html.haml +45 -0
  175. data/app/views/schemas/_index.html.haml +47 -0
  176. data/app/views/snippets/_index.html.haml +30 -0
  177. data/app/views/snippets/_index_item.html.haml +20 -0
  178. data/app/views/visualizations/_show.html.haml +83 -0
  179. data/bin/aleph +71 -0
  180. data/bin/bundle +3 -0
  181. data/bin/executables/bundle_runner.rb +12 -0
  182. data/bin/executables/clock.rb +7 -0
  183. data/bin/executables/deps.rb +10 -0
  184. data/bin/executables/import_env_variables.rb +17 -0
  185. data/bin/executables/init_db.rb +7 -0
  186. data/bin/executables/lib/config_generator.rb +51 -0
  187. data/bin/executables/lib/env_writer.rb +25 -0
  188. data/bin/executables/lib/import_env_file.rb +19 -0
  189. data/bin/executables/lib/seeder.rb +14 -0
  190. data/bin/executables/lib/utils.rb +30 -0
  191. data/bin/executables/playground.rb +130 -0
  192. data/bin/executables/seed_playground_db.rb +9 -0
  193. data/bin/executables/update_db.rb +7 -0
  194. data/bin/executables/web_server.rb +12 -0
  195. data/bin/executables/worker.rb +7 -0
  196. data/bin/rails +4 -0
  197. data/bin/rake +4 -0
  198. data/config/application.rb +59 -0
  199. data/config/attribute-map.yml +4 -0
  200. data/config/boot.rb +4 -0
  201. data/config/database.yml +40 -0
  202. data/config/environment.rb +5 -0
  203. data/config/environments/development.rb +37 -0
  204. data/config/environments/playground.rb +55 -0
  205. data/config/environments/production.rb +68 -0
  206. data/config/environments/staging.rb +75 -0
  207. data/config/environments/test.rb +46 -0
  208. data/config/initializers/01_internalize_configurations.rb +70 -0
  209. data/config/initializers/action_controller_renderers.rb +15 -0
  210. data/config/initializers/active_model_serializer.rb +7 -0
  211. data/config/initializers/assets.rb +8 -0
  212. data/config/initializers/backtrace_silencers.rb +7 -0
  213. data/config/initializers/cookies_serializer.rb +3 -0
  214. data/config/initializers/default_enviorment_variables.rb +8 -0
  215. data/config/initializers/devise.rb +297 -0
  216. data/config/initializers/filter_parameter_logging.rb +4 -0
  217. data/config/initializers/haml.rb +1 -0
  218. data/config/initializers/inflections.rb +16 -0
  219. data/config/initializers/mime_types.rb +4 -0
  220. data/config/initializers/net_http.rb +1 -0
  221. data/config/initializers/pester.rb +15 -0
  222. data/config/initializers/rails_admin.rb +27 -0
  223. data/config/initializers/redis.rb +14 -0
  224. data/config/initializers/rollbar.rb +45 -0
  225. data/config/initializers/session_store.rb +3 -0
  226. data/config/initializers/sql_logging_patch.rb +7 -0
  227. data/config/initializers/to_bool.rb +29 -0
  228. data/config/initializers/wrap_parameters.rb +14 -0
  229. data/config/locales/devise.en.yml +62 -0
  230. data/config/locales/en.yml +23 -0
  231. data/config/puma.rb +10 -0
  232. data/config/resque-pool.yml +15 -0
  233. data/config/resque.yml +10 -0
  234. data/config/routes.rb +33 -0
  235. data/config/secrets.yml +26 -0
  236. data/config.ru +4 -0
  237. data/db/migrate/20140710204753_database_begin.rb +150 -0
  238. data/lib/aleph_log_formatter.rb +5 -0
  239. data/lib/authentication.rb +17 -0
  240. data/lib/aws_s3.rb +7 -0
  241. data/lib/clock.rb +7 -0
  242. data/lib/compilable_parameter.rb +50 -0
  243. data/lib/count_publisher.rb +26 -0
  244. data/lib/csv_helper/aws.rb +30 -0
  245. data/lib/csv_helper/base.rb +20 -0
  246. data/lib/csv_helper/local.rb +18 -0
  247. data/lib/csv_serializer.rb +23 -0
  248. data/lib/csv_service.rb +12 -0
  249. data/lib/github/blob.rb +23 -0
  250. data/lib/github/commit.rb +37 -0
  251. data/lib/github/pusher.rb +94 -0
  252. data/lib/github/refs.rb +39 -0
  253. data/lib/github/tree.rb +29 -0
  254. data/lib/github.rb +64 -0
  255. data/lib/interaction/query_creation.rb +27 -0
  256. data/lib/interaction/query_interaction.rb +35 -0
  257. data/lib/interaction/query_update.rb +62 -0
  258. data/lib/interaction/result_creation.rb +48 -0
  259. data/lib/pagination_search/attribute_set.rb +61 -0
  260. data/lib/pagination_search/base_relation.rb +80 -0
  261. data/lib/pagination_search/hash_paginate.rb +74 -0
  262. data/lib/pagination_search/paginated_records.rb +16 -0
  263. data/lib/pagination_search/pagination.rb +12 -0
  264. data/lib/pagination_search/search_conditions.rb +59 -0
  265. data/lib/query_version_support.rb +14 -0
  266. data/lib/redis_result_row_count.rb +26 -0
  267. data/lib/redshift_connection_pool.rb +8 -0
  268. data/lib/redshift_pg/connection.rb +44 -0
  269. data/lib/redshift_pg/redshift_pg.rb +15 -0
  270. data/lib/result_csv_generator.rb +40 -0
  271. data/lib/role.rb +40 -0
  272. data/lib/sample_skimmer.rb +30 -0
  273. data/lib/schema_comment_matcher.rb +27 -0
  274. data/lib/schemas/descriptor.rb +85 -0
  275. data/lib/schemas/descriptors.rb +10 -0
  276. data/lib/schemas/paginate.rb +21 -0
  277. data/lib/schemas/redis_store.rb +22 -0
  278. data/lib/simple_cache.rb +13 -0
  279. data/lib/sql_compiler.rb +33 -0
  280. data/lib/summarizer.rb +18 -0
  281. data/lib/tasks/karma.rake +32 -0
  282. data/lib/tasks/resque_setup.rake +18 -0
  283. data/playground_data/1.csv +13 -0
  284. data/playground_data/aleph.playground.sqlite3 +0 -0
  285. data/public/404.html +26 -0
  286. data/public/422.html +26 -0
  287. data/public/500.html +25 -0
  288. data/public/aleph.png +0 -0
  289. data/public/assets/.sprockets-manifest-24b5998edb20c5b4d6edf39d44cd3ff7.json +1 -0
  290. data/public/assets/FontAwesome-9ccfa32dd4cd1b8e83f68899d85bd5e6.otf +0 -0
  291. data/public/assets/ZeroClipboard-8b5c117b88fe37e32fd34a70fdf60026.swf +0 -0
  292. data/public/assets/angular/aleph.js-19b4df67407de5dab249abfc391c0eaf.es6 +90 -0
  293. data/public/assets/angular/config/schema_completer_config.js-1b696920b5e04f75620630d75117b201.es6 +71 -0
  294. data/public/assets/angular/controllers/alerts/alert_index_controller.js-4344581b1e9b456c3f991f96bb4d403d.es6 +16 -0
  295. data/public/assets/angular/controllers/alerts/alert_show_controller.js-a984dc82fbcac380cdc8682bf8986933.es6 +99 -0
  296. data/public/assets/angular/controllers/controllers.js-7431ae468ea2f0d392661448a61cfdf3.es6 +65 -0
  297. data/public/assets/angular/controllers/query/query_index_controller.js-828eadeee6a971b11b5c07f65f0c6def.es6 +80 -0
  298. data/public/assets/angular/controllers/query/query_repl_controller.js-3c4bac22e41766e2e83e720d53acade3.es6 +147 -0
  299. data/public/assets/angular/controllers/query/query_show_controller.js-020c83fd94ece7d55bd94b9981a40083.es6 +43 -0
  300. data/public/assets/angular/controllers/schema/schema_index_controller.js-d0d790d168b49caefa4b8f7993c928f1.es6 +61 -0
  301. data/public/assets/angular/controllers/snippet/snippet_index_controller.js-9191ee2e37d16d5807b8a7f45530a6c2.es6 +80 -0
  302. data/public/assets/angular/directives/directives.js-44fda752585bddc5d026feaab8b14108.es6 +30 -0
  303. data/public/assets/angular/directives/query/query_details_directive.js-2dd979e2463826558f166d9dc9e2c8a9.es6 +87 -0
  304. data/public/assets/angular/directives/query/query_version_sidebar_directive.js-b19ba8a9bf4e66c5740e9b9f9495cee1.es6 +65 -0
  305. data/public/assets/angular/directives/result/result_directive.js-76c151e9277e35578f92b076c2fa5b06.es6 +59 -0
  306. data/public/assets/angular/directives/result/results_directive.js-fcbf9750790823a11ca313e630bd2b0f.es6 +30 -0
  307. data/public/assets/angular/directives/visualization_directive.js-82cb45a52eba62deb283a3699add1b33.es6 +101 -0
  308. data/public/assets/angular/filters/filters.js-48cdb16fc89337e861c9f18ad57fd9bf.es6 +27 -0
  309. data/public/assets/angular/services/alert/alert.js-a76ea96e948de324fcc00f3ef3ecae4e.es6 +51 -0
  310. data/public/assets/angular/services/alert/alert_resource.js-ac68ea99936eb213c0fb37d4fbb1511a.es6 +10 -0
  311. data/public/assets/angular/services/lib/ace_completers.js-5353182bc538210dad12865ad6a060fd.es6 +29 -0
  312. data/public/assets/angular/services/lib/ace_sql_parse.js-4114a8ad4fe4dbf4f72c0ab7fca22e83.es6 +156 -0
  313. data/public/assets/angular/services/lib/action_handler.js-85a8f75f507efcf2fe950fa7717b6976.es6 +73 -0
  314. data/public/assets/angular/services/lib/alert_flash.js-7a4fe7ef5510a224677a12ecf2fe973b.es6 +30 -0
  315. data/public/assets/angular/services/lib/default_ace_configurator_service.js-9b83d6b53495dafe10bfed5074c3ec01.es6 +74 -0
  316. data/public/assets/angular/services/lib/github_url_service.js-719084a625f60d20c24097f00813b481.es6 +53 -0
  317. data/public/assets/angular/services/lib/keyword_completer.js-560b51694457619401c72431dd7b647e.es6 +36 -0
  318. data/public/assets/angular/services/lib/local_resource.js-9b57357ed203c783708e48154721242a.es6 +20 -0
  319. data/public/assets/angular/services/lib/lock_service.js-32eb33fda9c27fb5643b25c63099b52c.es6 +48 -0
  320. data/public/assets/angular/services/lib/locking_poll_service.js-d0271cc07d20ec73291e7175e1714d42.es6 +42 -0
  321. data/public/assets/angular/services/lib/matcher_runner.js-bd63f4c6ad965716c5b793d3c4602563.es6 +65 -0
  322. data/public/assets/angular/services/lib/navigation_guard.js-5c7497900f99319f3ef76b83662c20cd.es6 +45 -0
  323. data/public/assets/angular/services/lib/open_repl_service.js-2332490470ea58f3e5ce7f6fe5dd2659.es6 +56 -0
  324. data/public/assets/angular/services/lib/page_title_manager.js-227f9ddb49d23bfa934bf216ef96ccbd.es6 +38 -0
  325. data/public/assets/angular/services/lib/pagination.js-baa9a496d01b87f90c588c51864d1533.es6 +114 -0
  326. data/public/assets/angular/services/lib/pagination_components.js-4fcc03120d1299713347b487f1e8fd44.es6 +91 -0
  327. data/public/assets/angular/services/lib/parameter_methods.js-16ecb25ffb24d5870dfc17f9f408fa5b.es6 +35 -0
  328. data/public/assets/angular/services/lib/role_model.js-3d5072f279676294e7d17cbb4bb3adb5.es6 +21 -0
  329. data/public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6 +56 -0
  330. data/public/assets/angular/services/lib/selection_tag_input.js-86cc6d564c108d722951b6fcd2b51221.es6 +42 -0
  331. data/public/assets/angular/services/lib/server_configurations.js-fd8c16a3d02926e7597240566808c141.es6 +15 -0
  332. data/public/assets/angular/services/lib/spinner_state.js-315bb62df18f9370a89f8b865eb1766a.es6 +45 -0
  333. data/public/assets/angular/services/lib/tag_resource.js-8849bbdd579bd38b36a362bed926c2f2.es6 +14 -0
  334. data/public/assets/angular/services/model/collection_dirty_awareness.js-8a78450bd8b565fb03633ab735893508.es6 +33 -0
  335. data/public/assets/angular/services/model/collection_model_base.js-8092335acde425d28718c1a9fc677d39.es6 +75 -0
  336. data/public/assets/angular/services/model/dirty_aware_collection_model.js-6f4d2b409a033f5ffc6bd5a747df2046.es6 +31 -0
  337. data/public/assets/angular/services/model/dirty_aware_model.js-ec1a086f3ec459827dbd5381bd970975.es6 +50 -0
  338. data/public/assets/angular/services/model/model_base.js-9fd807dfdf4f26afe60d8e282ca08e6c.es6 +80 -0
  339. data/public/assets/angular/services/model/model_state.js-3e96e381ea7a9eff857081ffbf3a8bab.es6 +51 -0
  340. data/public/assets/angular/services/model/models.js-6798762a6e263be75c7c4e9f8a19da66.es6 +15 -0
  341. data/public/assets/angular/services/model/unpersisted_model.js-49597959c989e68c713fd826743bb7b5.es6 +20 -0
  342. data/public/assets/angular/services/model_generation/model_factory.js-0bccc6a2e9b4738c67230fc68d9780ae.es6 +28 -0
  343. data/public/assets/angular/services/model_generation/model_generation.js-f08c6eff199b5ad02b2e2bdf866d69ff.es6 +13 -0
  344. data/public/assets/angular/services/model_generation/model_manager.js-b05d8f00bc4499c50098ae31013de88c.es6 +86 -0
  345. data/public/assets/angular/services/model_generation/resource_factory.js-e8ce2f4be9383d885dbb965c8e425bab.es6 +38 -0
  346. data/public/assets/angular/services/model_generation/standard_collection_model.js-19c44dc3a937a85d825c5a2f020a6769.es6 +25 -0
  347. data/public/assets/angular/services/model_generation/standard_model.js-74439b041eebfc7e0fad454cf6e32192.es6 +38 -0
  348. data/public/assets/angular/services/query/query.js-7b6228d0a5c1a6ea76242f4aa49aafd0.es6 +55 -0
  349. data/public/assets/angular/services/query/query_handler.js-d8cb3c66bcf6d16cd13bb5bcd0921496.es6 +40 -0
  350. data/public/assets/angular/services/query/query_loader.js-1fbc8b859778d46b73b9adc300984851.es6 +54 -0
  351. data/public/assets/angular/services/query/query_request_transformers.js-522901477c7848324cd5c014005a85c8.es6 +26 -0
  352. data/public/assets/angular/services/query/query_resource.js-b809fbfd1c379619fa07ef8e52509810.es6 +21 -0
  353. data/public/assets/angular/services/query/query_tab.js-fe34f5e6d0c813d2d92838be14cd6783.es6 +63 -0
  354. data/public/assets/angular/services/query/query_versions.js-aa3aec9021354a7394797101ea500887.es6 +21 -0
  355. data/public/assets/angular/services/result/result.js-be8178c80c767a651a97537b2b0149d5.es6 +26 -0
  356. data/public/assets/angular/services/result/result_poller.js-b15617d53f164cbe5636bb5573a70504.es6 +30 -0
  357. data/public/assets/angular/services/result/result_runner.js-ce2c5b3121c8e67903c302e600749c14.es6 +48 -0
  358. data/public/assets/angular/services/result/results.js-53088d6088f6b4783b274a64322d361c.es6 +10 -0
  359. data/public/assets/angular/services/schema/schema_column.js-3908faecc9874fa08484d7490701a7d4.es6 +93 -0
  360. data/public/assets/angular/services/schema/schema_column_resource.js-a6982ce9698b104192c4e455300df455.es6 +12 -0
  361. data/public/assets/angular/services/schema/schema_columns.js-c63a16e2e0778a885bd27c7cf2ed7d88.es6 +57 -0
  362. data/public/assets/angular/services/schema/schema_comment_resource.js-20254ea1a4e7b4850c9f21f9619130ce.es6 +12 -0
  363. data/public/assets/angular/services/services.js-6225c5ea24a9082506d1932d7884b53b.es6 +140 -0
  364. data/public/assets/angular/services/snippet/ace_snippet_manager.js-dbbba5d8ad5040042b469b294c4d7228.es6 +44 -0
  365. data/public/assets/angular/services/visualization/source_renderer.js-d7274c88b067a35f2e91bf7f39be7d47.es6 +70 -0
  366. data/public/assets/angular/services/visualization/visualization.js-23e36c87721aa263dd3f99769027cabb.es6 +47 -0
  367. data/public/assets/angular/services/visualization/visualization_service.js-25de86b5ceef60cf2b1dfde5fb0e9216.es6 +67 -0
  368. data/public/assets/angular/services/visualization/visualizations.js-1227bc3dcd67e85c8050d82360a26d53.es6 +11 -0
  369. data/public/assets/application-9153e0bf570016651e5eb8c67e037d3a.css +10 -0
  370. data/public/assets/application-ef5c2ae95804ac9785f190a9aea7ad8b.js +149 -0
  371. data/public/assets/bootstrap/glyphicons-halflings-regular-448c34a56d699c29117adc64c43affeb.woff2 +0 -0
  372. data/public/assets/bootstrap/glyphicons-halflings-regular-89889688147bd7575d6327160d64e760.svg +288 -0
  373. data/public/assets/bootstrap/glyphicons-halflings-regular-e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
  374. data/public/assets/bootstrap/glyphicons-halflings-regular-f4769f9bdb7466be65088239c12046d1.eot +0 -0
  375. data/public/assets/bootstrap/glyphicons-halflings-regular-fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
  376. data/public/assets/fontawesome-webfont-4f0022f25672c7f501c339cbf98d9117.ttf +0 -0
  377. data/public/assets/fontawesome-webfont-776d58f453c8fe5d6a89e9c31ee223ff.svg +504 -0
  378. data/public/assets/fontawesome-webfont-90186830c9c50a0fed932494581761d9.eot +0 -0
  379. data/public/assets/fontawesome-webfont-926c93d201fe51c8f351e858468980c3.woff2 +0 -0
  380. data/public/assets/fontawesome-webfont-fdf491ce5ff5b2da02708cd0e9864719.woff +0 -0
  381. data/public/assets/glyphicons-halflings-regular-0a5c48c69a25a93e37ed62db813387fa.svg +229 -0
  382. data/public/assets/glyphicons-halflings-regular-47da44498fc073d9fff9ab0cdb0bef8e.ttf +0 -0
  383. data/public/assets/glyphicons-halflings-regular-5eae1f7217b606d3580dd70ac840fea1.woff +0 -0
  384. data/public/assets/glyphicons-halflings-regular-aa16cd35628e6dddf56e766c9aa4ae63.eot +0 -0
  385. data/public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-2a44fbdb7360c60122bcf6dcef0387d8.png +0 -0
  386. data/public/assets/jquery-ui/ui-bg_flat_75_ffffff_40x100-8692e6efddf882acbff144c38ea7dfdf.png +0 -0
  387. data/public/assets/jquery-ui/ui-bg_glass_55_fbf9ee_1x400-f8f4558e0b92ff2cd6136781533902ec.png +0 -0
  388. data/public/assets/jquery-ui/ui-bg_glass_65_ffffff_1x400-e5a8f32e28fd5c27bf0fed33c8a8b9b5.png +0 -0
  389. data/public/assets/jquery-ui/ui-bg_glass_75_dadada_1x400-c12c6510dad3ebfa64c8a30e959a2469.png +0 -0
  390. data/public/assets/jquery-ui/ui-bg_glass_75_e6e6e6_1x400-f4254356c2a8c9a383205ef2c4de22c4.png +0 -0
  391. data/public/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400-5a3be2d8fff8324d59aec3df7b0a0c83.png +0 -0
  392. data/public/assets/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-72c593d16e998952cd8d798fee33c6f3.png +0 -0
  393. data/public/assets/jquery-ui/ui-icons_222222_256x240-9129e086dc488d8bcaf808510bc646ba.png +0 -0
  394. data/public/assets/jquery-ui/ui-icons_2e83ff_256x240-25162bf857a8eb83ea932a58436e1049.png +0 -0
  395. data/public/assets/jquery-ui/ui-icons_454545_256x240-771099482bdc1571ece41073b1752596.png +0 -0
  396. data/public/assets/jquery-ui/ui-icons_888888_256x240-faf6f5dc44e713178784c1fb053990aa.png +0 -0
  397. data/public/assets/jquery-ui/ui-icons_cd0a0a_256x240-5d8808d43cefca6f6781a5316d176632.png +0 -0
  398. data/public/assets/octicons-0a82c1edade24862533bbe96ebeaea47.eot +0 -0
  399. data/public/assets/octicons-103abd6cc0199e2519ef6f1aac4bb0e0.ttf +0 -0
  400. data/public/assets/octicons-adc17600a2b7a648eba306c2e1426b85.svg +183 -0
  401. data/public/assets/octicons-be82065223a03ba577de159d97a5d63d.woff +0 -0
  402. data/public/assets/octicons-local-72e4167c13648cb89e9e96cdd212cb82.ttf +0 -0
  403. data/public/assets/rails_admin/aristo/images/bg_fallback-a7547e71656b1e538b93ddb49dfc98d3.png +0 -0
  404. data/public/assets/rails_admin/aristo/images/icon_sprite-415c1eec8a2d31d217d4d1d5a1d44345.png +0 -0
  405. data/public/assets/rails_admin/aristo/images/progress_bar-449b2fab5cf4122c17a416f6e26569fe.gif +0 -0
  406. data/public/assets/rails_admin/aristo/images/slider_handles-ba57b6efb64ca6263f77ce2624ad71ee.png +0 -0
  407. data/public/assets/rails_admin/aristo/images/ui-icons_222222_256x240-a2c05c5e967f9cf4dae51c1243b3b93c.png +0 -0
  408. data/public/assets/rails_admin/aristo/images/ui-icons_454545_256x240-a7a7eff72c4f562524dc472824aab656.png +0 -0
  409. data/public/assets/rails_admin/base/README-f7dd742c2237cb1959438b94c7503a41.txt +2 -0
  410. data/public/assets/rails_admin/bootstrap/glyphicons-halflings-d4fef5262f29f592560fb59918a1c052.png +0 -0
  411. data/public/assets/rails_admin/bootstrap/glyphicons-halflings-white-9bbc6e9602998a385c2ea13df56470fd.png +0 -0
  412. data/public/assets/rails_admin/bullet_black-06d345566cf9e0f97a23bb07ab3d50d9.png +0 -0
  413. data/public/assets/rails_admin/bullet_white-469b537fa21b7143f719578f7426825d.png +0 -0
  414. data/public/assets/rails_admin/calendar-697f5a44753da70028cfd04b98ac45d2.png +0 -0
  415. data/public/assets/rails_admin/clock-0cc82b549af3df4f730a02335f54b0df.png +0 -0
  416. data/public/assets/rails_admin/colorpicker/colorpicker_background-7aaa2a726200c0ac3ba43c01f073a93d.png +0 -0
  417. data/public/assets/rails_admin/colorpicker/colorpicker_hex-cbc06f4015cbb276a3dd966e1be37c25.png +0 -0
  418. data/public/assets/rails_admin/colorpicker/colorpicker_hsb_b-2315aba3c2fbbcfcc22869b21836c31d.png +0 -0
  419. data/public/assets/rails_admin/colorpicker/colorpicker_hsb_h-3120023551e3601467cf52e1c8aaae9e.png +0 -0
  420. data/public/assets/rails_admin/colorpicker/colorpicker_hsb_s-77a77892bdef0906fdfc3426d06108fd.png +0 -0
  421. data/public/assets/rails_admin/colorpicker/colorpicker_indic-f485d07540a89502e36dc1a55cec05d0.gif +0 -0
  422. data/public/assets/rails_admin/colorpicker/colorpicker_overlay-4b2dd6f78c4aac5cc932e845698b2db5.png +0 -0
  423. data/public/assets/rails_admin/colorpicker/colorpicker_rgb_b-2315aba3c2fbbcfcc22869b21836c31d.png +0 -0
  424. data/public/assets/rails_admin/colorpicker/colorpicker_rgb_g-475afe3f4f69e59ff30a445384a8d961.png +0 -0
  425. data/public/assets/rails_admin/colorpicker/colorpicker_rgb_r-02de28945293fe2fd026c9be3b89955a.png +0 -0
  426. data/public/assets/rails_admin/colorpicker/colorpicker_select-cdf55197d05f18c552dc35bdb858fa2a.gif +0 -0
  427. data/public/assets/rails_admin/colorpicker/colorpicker_submit-9912e5cf348e0be359ff9b1078fbb7da.png +0 -0
  428. data/public/assets/rails_admin/colorpicker/custom_background-a0ab8ff3e2b85b1f8ed5a4d86967471b.png +0 -0
  429. data/public/assets/rails_admin/colorpicker/custom_hex-065e780d7b89f7dda63a472caa7c2bdd.png +0 -0
  430. data/public/assets/rails_admin/colorpicker/custom_hsb_b-66f5963cf1a0a2680acbcac2bb77f40d.png +0 -0
  431. data/public/assets/rails_admin/colorpicker/custom_hsb_h-cd1f2e27122aeca17af416f328b758cd.png +0 -0
  432. data/public/assets/rails_admin/colorpicker/custom_hsb_s-ca6f3e4f0c1fc2cb110c788018369e07.png +0 -0
  433. data/public/assets/rails_admin/colorpicker/custom_indic-04660eb352eb259581a36a0fe8da2d4d.gif +0 -0
  434. data/public/assets/rails_admin/colorpicker/custom_rgb_b-64bc0c5110f84efe32e82c58d50660f6.png +0 -0
  435. data/public/assets/rails_admin/colorpicker/custom_rgb_g-33fe011475956750a457b1f93f1b9075.png +0 -0
  436. data/public/assets/rails_admin/colorpicker/custom_rgb_r-18f2ee37089d850c52b212d8a31aac92.png +0 -0
  437. data/public/assets/rails_admin/colorpicker/custom_submit-9d0a14eebb9ae04edfb8099827a42968.png +0 -0
  438. data/public/assets/rails_admin/colorpicker/select-76bd5c10f34de24b73ff4454735d3e18.png +0 -0
  439. data/public/assets/rails_admin/colorpicker/select2-d3fea9a451ac2c29bcd4a82b6e4f326a.png +0 -0
  440. data/public/assets/rails_admin/colorpicker/slider-db040ce7280fc74269e330a862e738e6.png +0 -0
  441. data/public/assets/rails_admin/jquery.colorpicker-7c36c2fac54a031f6e0dfe6ad137cfb1.js +1 -0
  442. data/public/assets/rails_admin/jquery.colorpicker-e402a30af31a4ba5957fec816dc9239c.css +1 -0
  443. data/public/assets/rails_admin/logo-9b479a57b493ee824767163101a5409f.png +0 -0
  444. data/public/assets/rails_admin/magnifier-4fcdfd820ff2e951458af3d1309ab20c.png +0 -0
  445. data/public/assets/rails_admin/multiselect/icon_sprite-415c1eec8a2d31d217d4d1d5a1d44345.png +0 -0
  446. data/public/assets/rails_admin/multiselect/ui-icon-circle-triangle-n-dark-32c1cfdd900379bf62658e475fb2ba38.png +0 -0
  447. data/public/assets/rails_admin/multiselect/ui-icon-circle-triangle-n-light-73160d919a189ba13bd4387e3623b7e9.png +0 -0
  448. data/public/assets/rails_admin/multiselect/ui-icon-circle-triangle-s-dark-c15e6bff59c80c5473236cf77870f31d.png +0 -0
  449. data/public/assets/rails_admin/multiselect/ui-icon-circle-triangle-s-light-fbf43811420f67d49d4dc64c7817f72c.png +0 -0
  450. data/public/assets/rails_admin/rails_admin-d25a684b9f690652469ceb212fbe7b95.js +328 -0
  451. data/public/assets/rails_admin/rails_admin-d85fb3c8bbff377491ed5af5239cf185.css +8 -0
  452. data/public/assets/resque_web/application-b29b34115c3ad5c539f26114fc91e584.css +4 -0
  453. data/public/assets/resque_web/application-d2bc6e68cf7c6215e804fe9e3f46f1d0.js +111 -0
  454. data/public/assets/resque_web/idle-53474088772d9917bd463b19efa32fc3.png +0 -0
  455. data/public/assets/resque_web/lifebuoy-0281230b31ba4078685f4df3e8169534.png +0 -0
  456. data/public/assets/resque_web/poll-af53f85832c41a9cde68b08cb09711f1.png +0 -0
  457. data/public/assets/resque_web/rails-9c0a079bdd7701d7e729bd956823d153.png +0 -0
  458. data/public/assets/resque_web/working-26a36c5119cbdcc64ebade2c5f8c389d.png +0 -0
  459. data/public/assets/twitter/bootstrap/glyphicons-halflings-2516339970d710819585f90773aebe0a.png +0 -0
  460. data/public/assets/twitter/bootstrap/glyphicons-halflings-white-9bbc6e9602998a385c2ea13df56470fd.png +0 -0
  461. data/public/bg_big.svg +2 -0
  462. data/public/bg_new.svg +2 -0
  463. data/public/favicon.ico +0 -0
  464. data/public/resources/keyword_config.json +51 -0
  465. data/public/resources/visualization/area.html +17 -0
  466. data/public/resources/visualization/area_step.html +17 -0
  467. data/public/resources/visualization/bar.html +17 -0
  468. data/public/resources/visualization/custom.html +6 -0
  469. data/public/resources/visualization/line.html +16 -0
  470. data/public/resources/visualization/presets.json +13 -0
  471. data/public/resources/visualization/scatter.html +17 -0
  472. data/public/resources/visualization/spline.html +17 -0
  473. data/public/resources/visualization/spline_area.html +17 -0
  474. data/public/resources/visualization/stacked_area.html +18 -0
  475. data/public/resources/visualization/stacked_bar.html +18 -0
  476. data/public/resources/visualization/stacked_spline_area.html +18 -0
  477. data/public/resources/visualization/template.json +12 -0
  478. data/public/robots.txt +2 -0
  479. data/vendor/assets/javascripts/ace/ace.js +18655 -0
  480. data/vendor/assets/javascripts/ace/ext-language_tools.js +1937 -0
  481. data/vendor/assets/javascripts/ace/mode-html.js +2794 -0
  482. data/vendor/assets/javascripts/ace/mode-pgsql.js +1503 -0
  483. data/vendor/assets/javascripts/ace/snippets/coffee.js +102 -0
  484. data/vendor/assets/javascripts/ace/snippets/css.js +974 -0
  485. data/vendor/assets/javascripts/ace/snippets/haml.js +27 -0
  486. data/vendor/assets/javascripts/ace/snippets/html.js +835 -0
  487. data/vendor/assets/javascripts/ace/snippets/html_elixir.js +7 -0
  488. data/vendor/assets/javascripts/ace/snippets/html_ruby.js +7 -0
  489. data/vendor/assets/javascripts/ace/snippets/javascript.js +202 -0
  490. data/vendor/assets/javascripts/ace/snippets/json.js +7 -0
  491. data/vendor/assets/javascripts/ace/snippets/jsp.js +106 -0
  492. data/vendor/assets/javascripts/ace/snippets/jsx.js +7 -0
  493. data/vendor/assets/javascripts/ace/snippets/less.js +7 -0
  494. data/vendor/assets/javascripts/ace/snippets/mysql.js +7 -0
  495. data/vendor/assets/javascripts/ace/snippets/pgsql.js +7 -0
  496. data/vendor/assets/javascripts/ace/snippets/plain_text.js +7 -0
  497. data/vendor/assets/javascripts/ace/snippets/rhtml.js +7 -0
  498. data/vendor/assets/javascripts/ace/snippets/sass.js +7 -0
  499. data/vendor/assets/javascripts/ace/snippets/scss.js +7 -0
  500. data/vendor/assets/javascripts/ace/snippets/snippets.js +16 -0
  501. data/vendor/assets/javascripts/ace/snippets/sql.js +33 -0
  502. data/vendor/assets/javascripts/ace/snippets/sqlserver.js +76 -0
  503. data/vendor/assets/javascripts/ace/snippets/svg.js +7 -0
  504. data/vendor/assets/javascripts/ace/snippets/text.js +7 -0
  505. data/vendor/assets/javascripts/ace/snippets/textile.js +37 -0
  506. data/vendor/assets/javascripts/ace/theme-monokai.js +105 -0
  507. data/vendor/assets/javascripts/angular-filter/angular-filter.js +2271 -0
  508. data/vendor/assets/javascripts/angular-hotkeys/hotkeys.js +1523 -0
  509. data/vendor/assets/javascripts/angular-selection-model/selection-model.js +563 -0
  510. data/vendor/assets/javascripts/angular-spinner/treasure-overlay-spinner.js +53 -0
  511. data/vendor/assets/javascripts/angular-ui-ace/ui-ace.js +298 -0
  512. data/vendor/assets/javascripts/angular-ui-bootstrap/ui-bootstrap-tpls-0.14.3.js +8503 -0
  513. data/vendor/assets/javascripts/d3/c3.min.js +5 -0
  514. data/vendor/assets/javascripts/d3/d3.v3.min.js +5 -0
  515. data/vendor/assets/javascripts/infinite-scroll/infinite-scroll.js +186 -0
  516. data/vendor/assets/javascripts/ng-clip/ngClip.js +84 -0
  517. data/vendor/assets/javascripts/ng-tags-input/ng-tags-input.min.js +1 -0
  518. data/vendor/assets/javascripts/pluralize/pluralize.js +453 -0
  519. data/vendor/assets/javascripts/underscore-js/underscore.js +1548 -0
  520. data/vendor/assets/stylesheets/angular-hotkeys/hotkeys.css +110 -0
  521. data/vendor/assets/stylesheets/angular-spinner/treasure-overlay-spinner.css +136 -0
  522. data/vendor/assets/stylesheets/c3/c3.min.css +1 -0
  523. data/vendor/assets/stylesheets/ng-tags-input/ng-tags-input.bootstrap.min.css +1 -0
  524. data/vendor/assets/stylesheets/ng-tags-input/ng-tags-input.min.css +1 -0
  525. data/vendor/assets/stylesheets/octicons/README.md +1 -0
  526. data/vendor/assets/stylesheets/octicons/sprockets-octicons.scss +217 -0
  527. metadata +600 -0
@@ -0,0 +1,95 @@
1
+ // Underscore-contrib (underscore.function.predicates.js 0.3.0)
2
+ // (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors
3
+ // Underscore-contrib may be freely distributed under the MIT license.
4
+
5
+ _.mixin({
6
+ // A wrapper around instanceof
7
+ isInstanceOf: function(x, t) { return (x instanceof t); },
8
+
9
+ // An associative object is one where its elements are
10
+ // accessed via a key or index. (i.e. array and object)
11
+ isAssociative: function(x) { return _.isArray(x) || _.isObject(x) || _.isArguments(x); },
12
+
13
+ // An indexed object is anything that allows numerical index for
14
+ // accessing its elements (e.g. arrays and strings). NOTE: Underscore
15
+ // does not support cross-browser consistent use of strings as array-like
16
+ // objects, so be wary in IE 8 when using String objects and IE<8.
17
+ // on string literals & objects.
18
+ isIndexed: function(x) { return _.isArray(x) || _.isString(x) || _.isArguments(x); },
19
+
20
+ // A seq is something considered a sequential composite type (i.e. arrays and `arguments`).
21
+ isSequential: function(x) { return (_.isArray(x)) || (_.isArguments(x)); },
22
+
23
+ // Check if an object is an object literal, since _.isObject(function() {}) === _.isObject([]) === true
24
+ isPlainObject: function(x) { return _.isObject(x) && x.constructor === Object; },
25
+
26
+ // These do what you think that they do
27
+ isZero: function(x) { return 0 === x; },
28
+ isEven: function(x) { return _.isFinite(x) && (x & 1) === 0; },
29
+ isOdd: function(x) { return _.isFinite(x) && !_.isEven(x); },
30
+ isPositive: function(x) { return x > 0; },
31
+ isNegative: function(x) { return x < 0; },
32
+ isValidDate: function(x) { return _.isDate(x) && !_.isNaN(x.getTime()); },
33
+
34
+ // A numeric is a variable that contains a numeric value, regardless its type
35
+ // It can be a String containing a numeric value, exponential notation, or a Number object
36
+ // See here for more discussion: http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric/1830844#1830844
37
+ isNumeric: function(n) {
38
+ return !isNaN(parseFloat(n)) && isFinite(n);
39
+ },
40
+
41
+ // An integer contains an optional minus sign to begin and only the digits 0-9
42
+ // Objects that can be parsed that way are also considered ints, e.g. "123"
43
+ // Floats that are mathematically equal to integers are considered integers, e.g. 1.0
44
+ // See here for more discussion: http://stackoverflow.com/questions/1019515/javascript-test-for-an-integer
45
+ isInteger: function(i) {
46
+ return _.isNumeric(i) && i % 1 === 0;
47
+ },
48
+
49
+ // A float is a numbr that is not an integer.
50
+ isFloat: function(n) {
51
+ return _.isNumeric(n) && !_.isInteger(n);
52
+ },
53
+
54
+ // checks if a string is a valid JSON
55
+ isJSON: function(str) {
56
+ try {
57
+ JSON.parse(str);
58
+ } catch (e) {
59
+ return false;
60
+ }
61
+ return true;
62
+ },
63
+
64
+ // Returns true if its arguments are monotonically
65
+ // increaing values; false otherwise.
66
+ isIncreasing: function() {
67
+ var count = _.size(arguments);
68
+ if (count === 1) return true;
69
+ if (count === 2) return arguments[0] < arguments[1];
70
+
71
+ for (var i = 1; i < count; i++) {
72
+ if (arguments[i-1] >= arguments[i]) {
73
+ return false;
74
+ }
75
+ }
76
+
77
+ return true;
78
+ },
79
+
80
+ // Returns true if its arguments are monotonically
81
+ // decreaing values; false otherwise.
82
+ isDecreasing: function() {
83
+ var count = _.size(arguments);
84
+ if (count === 1) return true;
85
+ if (count === 2) return arguments[0] > arguments[1];
86
+
87
+ for (var i = 1; i < count; i++) {
88
+ if (arguments[i-1] <= arguments[i]) {
89
+ return false;
90
+ }
91
+ }
92
+
93
+ return true;
94
+ }
95
+ });
@@ -0,0 +1,111 @@
1
+ // Underscore-contrib (underscore.object.builders.js 0.3.0)
2
+ // (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors
3
+ // Underscore-contrib may be freely distributed under the MIT license.
4
+
5
+ // Helpers
6
+ // -------
7
+
8
+ // Create quick reference variables for speed access to core prototypes.
9
+ var slice = Array.prototype.slice,
10
+ concat = Array.prototype.concat;
11
+
12
+ var existy = function(x) { return x != null; };
13
+ var truthy = function(x) { return (x !== false) && existy(x); };
14
+ var isAssociative = function(x) { return _.isArray(x) || _.isObject(x); };
15
+ var curry2 = function(fun) {
16
+ return function(last) {
17
+ return function(first) {
18
+ return fun(first, last);
19
+ };
20
+ };
21
+ };
22
+
23
+
24
+ // Mixing in the object builders
25
+ // ----------------------------
26
+
27
+ _.mixin({
28
+ // Merges two or more objects starting with the left-most and
29
+ // applying the keys right-word
30
+ // {any:any}* -> {any:any}
31
+ merge: function(/* objs */){
32
+ var dest = _.some(arguments) ? {} : null;
33
+
34
+ if (truthy(dest)) {
35
+ _.extend.apply(null, concat.call([dest], _.toArray(arguments)));
36
+ }
37
+
38
+ return dest;
39
+ },
40
+
41
+ // Takes an object and another object of strings to strings where the second
42
+ // object describes the key renaming to occur in the first object.
43
+ renameKeys: function(obj, kobj) {
44
+ return _.reduce(kobj, function(o, nu, old) {
45
+ if (existy(obj[old])) {
46
+ o[nu] = obj[old];
47
+ return o;
48
+ }
49
+ else
50
+ return o;
51
+ },
52
+ _.omit.apply(null, concat.call([obj], _.keys(kobj))));
53
+ },
54
+
55
+ // Snapshots an object deeply. Based on the version by
56
+ // [Keith Devens](http://keithdevens.com/weblog/archive/2007/Jun/07/javascript.clone)
57
+ // until we can find a more efficient and robust way to do it.
58
+ snapshot: function(obj) {
59
+ if(obj == null || typeof(obj) != 'object') {
60
+ return obj;
61
+ }
62
+
63
+ var temp = new obj.constructor();
64
+
65
+ for(var key in obj) {
66
+ if (obj.hasOwnProperty(key)) {
67
+ temp[key] = _.snapshot(obj[key]);
68
+ }
69
+ }
70
+
71
+ return temp;
72
+ },
73
+
74
+ // Updates the value at any depth in a nested object based on the
75
+ // path described by the keys given. The function provided is supplied
76
+ // the current value and is expected to return a value for use as the
77
+ // new value. If no keys are provided, then the object itself is presented
78
+ // to the given function.
79
+ updatePath: function(obj, fun, ks, defaultValue) {
80
+ if (!isAssociative(obj)) throw new TypeError("Attempted to update a non-associative object.");
81
+ if (!existy(ks)) return fun(obj);
82
+
83
+ var deepness = _.isArray(ks);
84
+ var keys = deepness ? ks : [ks];
85
+ var ret = deepness ? _.snapshot(obj) : _.clone(obj);
86
+ var lastKey = _.last(keys);
87
+ var target = ret;
88
+
89
+ _.each(_.initial(keys), function(key) {
90
+ if (defaultValue && !_.has(target, key)) {
91
+ target[key] = _.clone(defaultValue);
92
+ }
93
+ target = target[key];
94
+ });
95
+
96
+ target[lastKey] = fun(target[lastKey]);
97
+ return ret;
98
+ },
99
+
100
+ // Sets the value at any depth in a nested object based on the
101
+ // path described by the keys given.
102
+ setPath: function(obj, value, ks, defaultValue) {
103
+ if (!existy(ks)) throw new TypeError("Attempted to set a property at a null path.");
104
+
105
+ return _.updatePath(obj, function() { return value; }, ks, defaultValue);
106
+ },
107
+
108
+ // Returns an object where each element of an array is keyed to
109
+ // the number of times that it occurred in said array.
110
+ frequencies: curry2(_.countBy)(_.identity)
111
+ });
@@ -0,0 +1,112 @@
1
+ // Helpers
2
+ // -------
3
+
4
+ // Create quick reference variables for speed access to core prototypes.
5
+ var concat = Array.prototype.concat;
6
+ var ArrayProto = Array.prototype;
7
+ var slice = ArrayProto.slice;
8
+
9
+ // Will take a path like 'element[0][1].subElement["Hey!.What?"]["[hey]"]'
10
+ // and return ["element", "0", "1", "subElement", "Hey!.What?", "[hey]"]
11
+ function keysFromPath(path) {
12
+ // from http://codereview.stackexchange.com/a/63010/8176
13
+ /**
14
+ * Repeatedly capture either:
15
+ * - a bracketed expression, discarding optional matching quotes inside, or
16
+ * - an unbracketed expression, delimited by a dot or a bracket.
17
+ */
18
+ var re = /\[("|')(.+)\1\]|([^.\[\]]+)/g;
19
+
20
+ var elements = [];
21
+ var result;
22
+ while ((result = re.exec(path)) !== null) {
23
+ elements.push(result[2] || result[3]);
24
+ }
25
+ return elements;
26
+ }
27
+
28
+ // Mixing in the object selectors
29
+ // ------------------------------
30
+
31
+ _.mixin({
32
+ // Returns a function that will attempt to look up a named field
33
+ // in any object that it's given.
34
+ accessor: function(field) {
35
+ return function(obj) {
36
+ return (obj && obj[field]);
37
+ };
38
+ },
39
+
40
+ // Given an object, returns a function that will attempt to look up a field
41
+ // that it's given.
42
+ dictionary: function (obj) {
43
+ return function(field) {
44
+ return (obj && field && obj[field]);
45
+ };
46
+ },
47
+
48
+ // Like `_.pick` except that it takes an array of keys to pick.
49
+ selectKeys: function (obj, ks) {
50
+ return _.pick.apply(null, concat.call([obj], ks));
51
+ },
52
+
53
+ // Returns the key/value pair for a given property in an object, undefined if not found.
54
+ kv: function(obj, key) {
55
+ if (_.has(obj, key)) {
56
+ return [key, obj[key]];
57
+ }
58
+
59
+ return void 0;
60
+ },
61
+
62
+ // Gets the value at any depth in a nested object based on the
63
+ // path described by the keys given. Keys may be given as an array
64
+ // or as a dot-separated string.
65
+ getPath: function getPath (obj, ks) {
66
+ ks = typeof ks == "string" ? keysFromPath(ks) : ks;
67
+
68
+ var i = -1, length = ks.length;
69
+
70
+ // If the obj is null or undefined we have to break as
71
+ // a TypeError will result trying to access any property
72
+ // Otherwise keep incrementally access the next property in
73
+ // ks until complete
74
+ while (++i < length && obj != null) {
75
+ obj = obj[ks[i]];
76
+ }
77
+ return i === length ? obj : void 0;
78
+ },
79
+
80
+ // Returns a boolean indicating whether there is a property
81
+ // at the path described by the keys given
82
+ hasPath: function hasPath (obj, ks) {
83
+ ks = typeof ks == "string" ? keysFromPath(ks) : ks;
84
+
85
+ var i = -1, length = ks.length;
86
+ while (++i < length && _.isObject(obj)) {
87
+ if (ks[i] in obj) {
88
+ obj = obj[ks[i]];
89
+ } else {
90
+ return false;
91
+ }
92
+ }
93
+ return i === length;
94
+ },
95
+
96
+ keysFromPath: keysFromPath,
97
+
98
+ pickWhen: function(obj, pred) {
99
+ var copy = {};
100
+
101
+ _.each(obj, function(value, key) {
102
+ if (pred(obj[key])) copy[key] = obj[key];
103
+ });
104
+
105
+ return copy;
106
+ },
107
+
108
+ omitWhen: function(obj, pred) {
109
+ return _.pickWhen(obj, function(e) { return !pred(e); });
110
+ }
111
+
112
+ });
@@ -0,0 +1,15 @@
1
+ // Underscore-contrib (underscore.util.existential.js 0.3.0)
2
+ // (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors
3
+ // Underscore-contrib may be freely distributed under the MIT license.
4
+
5
+ _.mixin({
6
+ exists: function(x) { return x != null; },
7
+ truthy: function(x) { return (x !== false) && _.exists(x); },
8
+ falsey: function(x) { return !_.truthy(x); },
9
+ not: function(b) { return !b; },
10
+ firstExisting: function() {
11
+ for (var i = 0; i < arguments.length; i++) {
12
+ if (arguments[i] != null) return arguments[i];
13
+ }
14
+ }
15
+ });
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var Utils = Utils || {};
4
+
5
+ Utils.arrayHelpers = {
6
+ removeItem: function(collection, findIdxFn) {
7
+ var itemIdx = _.findIndex(collection, findIdxFn)
8
+ collection.splice(itemIdx, 1);
9
+ return collection;
10
+ },
11
+ compare: function compare(left, right, iteratee) {
12
+ return (left.length === right.length) &&
13
+ _.every(left, function(leftItem) {
14
+ return _.some(right, function(rightItem) {
15
+ if (_.exists(iteratee)) {
16
+ return iteratee(leftItem) === iteratee(rightItem);
17
+ } else {
18
+ return leftItem === rightItem;
19
+ }
20
+ });
21
+ });
22
+ }
23
+ };
24
+
25
+ Utils.stringHelpers = {
26
+ isPresent: function(str) {
27
+ return !(str||'').match(/^\s*$/);
28
+ }
29
+ };
@@ -0,0 +1,13 @@
1
+ .alert-bar
2
+ height: 25px
3
+ width: 40%
4
+
5
+ .alert-fade-out
6
+ -webkit-animation-name: fade-out
7
+ -webkit-animation-duration: 10s
8
+ animation-name: fade-out
9
+ animation-duration: 10s
10
+ animation-timing-function: ease-in
11
+ margin: 0px
12
+ padding: 0px
13
+ border-radius: 0px 0px 15px 0px
@@ -0,0 +1,66 @@
1
+ .alerts-index
2
+ .limit-title
3
+ max-width: 180px
4
+
5
+ .scrollable
6
+ overflow: auto
7
+ min-width: 100%
8
+ max-height: 400px
9
+
10
+ .label
11
+ background-color: $pending-alert-color
12
+
13
+ &.Pending
14
+ background-color: $pending-alert-color
15
+
16
+ &.Paused
17
+ background-color: $paused-alert-color
18
+
19
+ &.Passing
20
+ background-color: $passing-alert-color
21
+
22
+ &.Failing
23
+ background-color: $failing-alert-color
24
+
25
+ &.Errored
26
+ background-color: $errored-alert-color
27
+
28
+ .alert-show
29
+ .extra-padding
30
+ padding: 20px
31
+
32
+ .sm-margin
33
+ margin-top: 5px
34
+
35
+ .selected
36
+ background-color: $light-yellow
37
+ &:hover
38
+ background-color: $light-yellow
39
+
40
+ .throbber-loader
41
+ display: block
42
+ margin-bottom: 20px
43
+
44
+ .alert-edit, .alert-info
45
+ background-color: $gray-lighter
46
+ border: 1px solid $gray-light
47
+ padding: 20px
48
+
49
+ h5
50
+ line-height: 1.6
51
+
52
+ .form-group
53
+ padding: 30px 0
54
+
55
+ &.top
56
+ padding: 10px 0 30px
57
+
58
+ &.middle
59
+ padding-bottom: 0px
60
+ marging-bottom: 0px
61
+
62
+ .short-input
63
+ max-width: 100px
64
+
65
+
66
+
@@ -0,0 +1,35 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require_tree ../../../vendor/assets/stylesheets
12
+ */
13
+
14
+ @import 'variables'
15
+ @import 'bootstrap-sprockets'
16
+ @import 'bootstrap'
17
+ @import 'results'
18
+ @import 'schemas'
19
+ @import 'queries'
20
+ @import 'spinners'
21
+ @import 'repl'
22
+ @import 'alerts'
23
+ @import 'snippets'
24
+ @import 'visualizations'
25
+ @import 'sidebar'
26
+ @import 'comments'
27
+ @import 'shared'
28
+ @import 'sort_bar'
29
+ @import 'index_components'
30
+ @import 'alert_bar'
31
+ @import 'summary'
32
+ @import 'sessions'
33
+
34
+ div.content
35
+ padding: 0 30px
@@ -0,0 +1,7 @@
1
+ .comments
2
+
3
+ textarea
4
+ width: 300px
5
+ height: 150px
6
+ font-size: small
7
+
@@ -0,0 +1,105 @@
1
+ // css for the query items
2
+ .index-items
3
+ ul
4
+ list-style-type: none
5
+ padding-left: 0
6
+
7
+ .item-header
8
+ border-radius: 10px 10px 0px 0px
9
+ padding: 5px
10
+
11
+ .item-container
12
+ border: 2px solid transparent
13
+ margin: 3px 0px 3px 0px
14
+ padding: 10px
15
+ background-color: white
16
+ border-radius: 5px
17
+ transition: background-color 1s ease
18
+ background-color: rgba(white, $opacity-high)
19
+ &:hover
20
+ background-color: white
21
+
22
+ .selected
23
+ border: 2px lighten($highlight-blue, 70%) solid
24
+ background: white
25
+
26
+ // css for each individual query index item
27
+ .index-item
28
+ font-size: small
29
+
30
+ .query-index
31
+ #author
32
+ float: left
33
+ display: inline
34
+ width: 120px
35
+
36
+ #updated-at
37
+ display: inline
38
+ width: 100px
39
+ padding-right: 10px
40
+
41
+ #created-at
42
+ display: inline
43
+ width: 100px
44
+ padding-left: 10px
45
+
46
+ // sidebar
47
+ .index-sidebar
48
+ position: fixed
49
+ top: 58px
50
+ width: 17%
51
+ bottom: 10%
52
+ right: 0
53
+ z-index: 1000
54
+ display: block
55
+ padding: 20px
56
+ overflow-x: hidden
57
+ overflow-y: auto
58
+ padding-top: 0
59
+ padding-bottom: 0
60
+ padding-right: 50px
61
+ padding-left: 15px
62
+ font-size: small
63
+ line-height: 24px
64
+
65
+ tags-input
66
+ .tags
67
+ border-radius: 3px
68
+
69
+ .input
70
+ background-color: transparent
71
+
72
+ .menu-label
73
+ opacity: $opacity-high
74
+ font-size: small
75
+ color: white
76
+
77
+ .lower
78
+ padding: -3px
79
+
80
+ .query-preview
81
+ border: 1px $gray-lighter dotted
82
+ font-family: Menlo, Courier New, Courier
83
+ font-size: 11px
84
+ height: 150px
85
+ width: 100%
86
+ overflow: auto
87
+ outline: none
88
+ line-height: 1.5
89
+ background-color: rgba(white, $opacity-mid)
90
+ border-radius: 5px
91
+
92
+ -webkit-box-shadow: none
93
+ -moz-box-shadow: none
94
+ box-shadow: none
95
+
96
+ .right5
97
+ margin-right: 5px
98
+
99
+ .btn-format
100
+ width: 99%
101
+ border: 0px
102
+ border-radius: 3px
103
+
104
+ .btn-format[disabled]
105
+ opacity: $opacity-low
@@ -0,0 +1,110 @@
1
+ .show-query
2
+ .ace-tm
3
+ min-height: 300px
4
+ margin-bottom: 0px
5
+
6
+ .tag-panel
7
+ border-radius: 0px
8
+ box-shadow: 0px
9
+ border: 1px solid #CECECE
10
+
11
+ .panel-heading
12
+ padding: 5px
13
+
14
+ .panel-body
15
+ padding: 6px
16
+
17
+ tags-input .host
18
+ margin-top: 0px
19
+ margin-bottom: 0px
20
+
21
+ .bold
22
+ font-weight: bold
23
+
24
+ pre
25
+ border-radius: 0px
26
+
27
+ .query-title-form.ng-dirty
28
+ background-color: $gray-lighter
29
+
30
+ .query-metadata
31
+ dt,dd
32
+ display: inline
33
+
34
+ .table
35
+ border: 1px solid #CECECE
36
+ word-wrap: break-word
37
+ td
38
+ border: none
39
+ th
40
+ background-color: #f5f5f5
41
+
42
+ tags-input .tags .tag-item
43
+ border: 1px solid #FFFFFF
44
+
45
+ .tag.label, .tag-template
46
+ border-radius: 3px
47
+ background-color: #5bc0de
48
+
49
+ &.engagement
50
+ background-color: $engagement-tag-color
51
+
52
+ &.conversion
53
+ background-color: $conversion-tag-color
54
+
55
+ &.approved
56
+ background-color: $approved-tag-color
57
+
58
+ &.maturity
59
+ background-color: $maturity-tag-color
60
+
61
+ &.funnel
62
+ background-color: $funnel-tag-color
63
+
64
+ &.payments
65
+ background-color: $payments-tag-color
66
+
67
+ &.games
68
+ background-color: $games-tag-color
69
+
70
+ &.customer_support
71
+ background-color: $customer-support-tag-color
72
+
73
+ &.official
74
+ background-color: $official-tag-color
75
+
76
+ &.roles
77
+ background-color: darken($slate-blue, 10%)
78
+
79
+ .tag.label
80
+ margin: 0 3px
81
+ cursor: pointer
82
+ display: inline-block
83
+
84
+ tags-input .tags .tag-item
85
+ padding: 0px
86
+
87
+ .tag-template
88
+ padding: 0 5px
89
+
90
+ .host
91
+ .tags
92
+ border: none
93
+ box-shadow: none
94
+ &.focused
95
+ border: none
96
+ box-shadow: none
97
+
98
+ #query_title
99
+ width: 100%
100
+ font-size: 2em
101
+ font-weight: bold
102
+
103
+ #query-btns
104
+ margin: 0 0 0
105
+
106
+ .white-background
107
+ background-color: #FFFFFF
108
+
109
+ .result-panel
110
+ margin-bottom: 0px