karafka-web 0.8.2 → 0.9.0.rc2

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 (271) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +5 -16
  4. data/CHANGELOG.md +40 -0
  5. data/Gemfile.lock +21 -23
  6. data/LICENSE +3 -3
  7. data/bin/rspecs +1 -1
  8. data/config/locales/pro_errors.yml +11 -0
  9. data/config/locales/slogans.yml +62 -0
  10. data/docker-compose.yml +1 -1
  11. data/karafka-web.gemspec +4 -2
  12. data/lib/karafka/web/app.rb +1 -1
  13. data/lib/karafka/web/config.rb +23 -3
  14. data/lib/karafka/web/contracts/config.rb +7 -1
  15. data/lib/karafka/web/management/actions/create_topics.rb +21 -0
  16. data/lib/karafka/web/management/actions/delete_topics.rb +1 -0
  17. data/lib/karafka/web/management/actions/enable.rb +12 -6
  18. data/lib/karafka/web/management/migrations/0_base.rb +1 -1
  19. data/lib/karafka/web/pro/commanding/commands/base.rb +33 -0
  20. data/lib/karafka/web/pro/commanding/commands/probe.rb +41 -0
  21. data/lib/karafka/web/pro/commanding/commands/quiet.rb +31 -0
  22. data/lib/karafka/web/pro/commanding/commands/stop.rb +31 -0
  23. data/lib/karafka/web/pro/commanding/config.rb +51 -0
  24. data/lib/karafka/web/pro/commanding/contracts/config.rb +56 -0
  25. data/lib/karafka/web/pro/commanding/dispatcher.rb +93 -0
  26. data/lib/karafka/web/pro/commanding/listener.rb +97 -0
  27. data/lib/karafka/web/pro/commanding/manager.rb +98 -0
  28. data/lib/karafka/web/pro/commanding/matcher.rb +50 -0
  29. data/lib/karafka/web/pro/commanding.rb +40 -0
  30. data/lib/karafka/web/pro/loader.rb +40 -0
  31. data/lib/karafka/web/{ui/pro → pro/ui}/app.rb +103 -22
  32. data/lib/karafka/web/{ui/pro/controllers/cluster.rb → pro/ui/controllers/base_controller.rb} +4 -5
  33. data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +54 -0
  34. data/lib/karafka/web/pro/ui/controllers/commanding_controller.rb +118 -0
  35. data/lib/karafka/web/pro/ui/controllers/commands_controller.rb +96 -0
  36. data/lib/karafka/web/{ui/pro/controllers/consumers.rb → pro/ui/controllers/consumers_controller.rb} +31 -4
  37. data/lib/karafka/web/{ui/pro/controllers/dashboard.rb → pro/ui/controllers/dashboard_controller.rb} +5 -3
  38. data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +60 -0
  39. data/lib/karafka/web/{ui/pro/controllers/errors.rb → pro/ui/controllers/errors_controller.rb} +5 -7
  40. data/lib/karafka/web/{ui/pro/controllers/explorer.rb → pro/ui/controllers/explorer_controller.rb} +24 -19
  41. data/lib/karafka/web/{ui/pro/controllers/health.rb → pro/ui/controllers/health_controller.rb} +16 -3
  42. data/lib/karafka/web/{ui/pro/controllers/jobs.rb → pro/ui/controllers/jobs_controller.rb} +4 -4
  43. data/lib/karafka/web/{ui/pro/controllers/messages.rb → pro/ui/controllers/messages_controller.rb} +8 -6
  44. data/lib/karafka/web/{ui/pro/controllers/routing.rb → pro/ui/controllers/routing_controller.rb} +6 -22
  45. data/lib/karafka/web/{ui/pro/controllers/status.rb → pro/ui/controllers/status_controller.rb} +3 -3
  46. data/lib/karafka/web/pro/ui/controllers/topics_controller.rb +99 -0
  47. data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +50 -0
  48. data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +29 -0
  49. data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +13 -0
  50. data/lib/karafka/web/pro/ui/views/cluster/_config.erb +13 -0
  51. data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +27 -0
  52. data/lib/karafka/web/pro/ui/views/cluster/brokers.erb +27 -0
  53. data/lib/karafka/web/pro/ui/views/cluster/index.erb +27 -0
  54. data/lib/karafka/web/pro/ui/views/cluster/show.erb +27 -0
  55. data/lib/karafka/web/pro/ui/views/commands/_backtrace.erb +20 -0
  56. data/lib/karafka/web/pro/ui/views/commands/_breadcrumbs.erb +21 -0
  57. data/lib/karafka/web/pro/ui/views/commands/_command.erb +60 -0
  58. data/lib/karafka/web/pro/ui/views/commands/_command_details.erb +11 -0
  59. data/lib/karafka/web/pro/ui/views/commands/_details.erb +26 -0
  60. data/lib/karafka/web/pro/ui/views/commands/_empty.erb +3 -0
  61. data/lib/karafka/web/pro/ui/views/commands/_incompatible_schema.erb +14 -0
  62. data/lib/karafka/web/pro/ui/views/commands/_metadata.erb +50 -0
  63. data/lib/karafka/web/pro/ui/views/commands/_table.erb +23 -0
  64. data/lib/karafka/web/pro/ui/views/commands/index.erb +17 -0
  65. data/lib/karafka/web/pro/ui/views/commands/show.erb +38 -0
  66. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/_breadcrumbs.erb +20 -4
  67. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/_consumer.erb +2 -21
  68. data/lib/karafka/web/pro/ui/views/consumers/_consumer_controls.erb +78 -0
  69. data/lib/karafka/web/pro/ui/views/consumers/_consumer_performance.erb +59 -0
  70. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/_counters.erb +7 -5
  71. data/lib/karafka/web/pro/ui/views/consumers/_tabs.erb +35 -0
  72. data/lib/karafka/web/pro/ui/views/consumers/consumer/_commands.erb +32 -0
  73. data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_jobs.erb +7 -0
  74. data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_subscriptions.erb +7 -0
  75. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_subscription_group.erb +13 -8
  76. data/lib/karafka/web/pro/ui/views/consumers/consumer/_title.erb +5 -0
  77. data/lib/karafka/web/pro/ui/views/consumers/controls.erb +67 -0
  78. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/details.erb +6 -1
  79. data/lib/karafka/web/pro/ui/views/consumers/index.erb +39 -0
  80. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/pending_jobs.erb +15 -7
  81. data/lib/karafka/web/pro/ui/views/consumers/performance.erb +52 -0
  82. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/running_jobs.erb +15 -7
  83. data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/subscriptions.erb +6 -1
  84. data/lib/karafka/web/{ui/pro → pro/ui}/views/dashboard/index.erb +10 -10
  85. data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +7 -0
  86. data/lib/karafka/web/{ui/pro → pro/ui}/views/dlq/index.erb +1 -1
  87. data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/_error.erb +2 -6
  88. data/lib/karafka/web/pro/ui/views/errors/_table.erb +23 -0
  89. data/lib/karafka/web/pro/ui/views/explorer/_failed_deserialization.erb +4 -0
  90. data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/_message.erb +7 -1
  91. data/lib/karafka/web/pro/ui/views/explorer/_no_topics.erb +5 -0
  92. data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/index.erb +1 -6
  93. data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/message/_metadata.erb +33 -9
  94. data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/message/_payload.erb +4 -4
  95. data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/message/_payload_actions.erb +1 -1
  96. data/lib/karafka/web/pro/ui/views/explorer/messages/_headers.erb +33 -0
  97. data/lib/karafka/web/pro/ui/views/explorer/messages/_key.erb +20 -0
  98. data/lib/karafka/web/pro/ui/views/explorer/partition/_cleaned.erb +5 -0
  99. data/lib/karafka/web/pro/ui/views/explorer/partition/_empty.erb +5 -0
  100. data/lib/karafka/web/pro/ui/views/explorer/partition/_messages.erb +21 -0
  101. data/lib/karafka/web/pro/ui/views/explorer/topic/_empty.erb +5 -0
  102. data/lib/karafka/web/pro/ui/views/explorer/topic/_limited.erb +10 -0
  103. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_breadcrumbs.erb +8 -0
  104. data/lib/karafka/web/pro/ui/views/health/_no_data.erb +7 -0
  105. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_partition.erb +1 -1
  106. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_partition_lags.erb +6 -3
  107. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_tabs.erb +11 -1
  108. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/changes.erb +13 -8
  109. data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +54 -0
  110. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/lags.erb +14 -8
  111. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/offsets.erb +15 -12
  112. data/lib/karafka/web/{ui/pro → pro/ui}/views/health/overview.erb +21 -7
  113. data/lib/karafka/web/{ui/pro → pro/ui}/views/jobs/_job.erb +1 -1
  114. data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +7 -0
  115. data/lib/karafka/web/{ui/pro → pro/ui}/views/jobs/pending.erb +12 -8
  116. data/lib/karafka/web/{ui/pro → pro/ui}/views/jobs/running.erb +12 -8
  117. data/lib/karafka/web/{ui/pro → pro/ui}/views/routing/_consumer_group.erb +2 -2
  118. data/lib/karafka/web/{ui/pro → pro/ui}/views/routing/index.erb +1 -1
  119. data/lib/karafka/web/{ui/pro → pro/ui}/views/routing/show.erb +1 -1
  120. data/lib/karafka/web/{ui/pro → pro/ui}/views/shared/_navigation.erb +14 -0
  121. data/lib/karafka/web/pro/ui/views/topics/_breadcrumbs.erb +37 -0
  122. data/lib/karafka/web/pro/ui/views/topics/_partition.erb +16 -0
  123. data/lib/karafka/web/pro/ui/views/topics/_tabs.erb +37 -0
  124. data/lib/karafka/web/pro/ui/views/topics/_topic.erb +12 -0
  125. data/lib/karafka/web/pro/ui/views/topics/config.erb +29 -0
  126. data/lib/karafka/web/pro/ui/views/topics/distribution/_badges.erb +7 -0
  127. data/lib/karafka/web/pro/ui/views/topics/distribution/_chart.erb +2 -0
  128. data/lib/karafka/web/pro/ui/views/topics/distribution/_empty_partitions.erb +1 -0
  129. data/lib/karafka/web/pro/ui/views/topics/distribution/_limited.erb +10 -0
  130. data/lib/karafka/web/pro/ui/views/topics/distribution/_partition.erb +10 -0
  131. data/lib/karafka/web/pro/ui/views/topics/distribution.erb +47 -0
  132. data/lib/karafka/web/pro/ui/views/topics/index.erb +16 -0
  133. data/lib/karafka/web/pro/ui/views/topics/replication.erb +28 -0
  134. data/lib/karafka/web/processing/consumers/aggregators/base.rb +1 -1
  135. data/lib/karafka/web/processing/consumers/aggregators/metrics.rb +1 -1
  136. data/lib/karafka/web/processing/consumers/aggregators/state.rb +4 -4
  137. data/lib/karafka/web/tracking/consumers/contracts/report.rb +1 -1
  138. data/lib/karafka/web/tracking/consumers/listeners/booting.rb +3 -1
  139. data/lib/karafka/web/tracking/consumers/listeners/errors.rb +2 -2
  140. data/lib/karafka/web/tracking/consumers/reporter.rb +3 -3
  141. data/lib/karafka/web/tracking/consumers/sampler.rb +2 -2
  142. data/lib/karafka/web/tracking/contracts/error.rb +1 -1
  143. data/lib/karafka/web/tracking/producers/listeners/booting.rb +3 -1
  144. data/lib/karafka/web/tracking/producers/listeners/errors.rb +2 -2
  145. data/lib/karafka/web/tracking/producers/reporter.rb +1 -1
  146. data/lib/karafka/web/tracking/producers/sampler.rb +1 -1
  147. data/lib/karafka/web/tracking/sampler.rb +3 -3
  148. data/lib/karafka/web/ui/app.rb +13 -9
  149. data/lib/karafka/web/ui/base.rb +1 -0
  150. data/lib/karafka/web/ui/controllers/{base.rb → base_controller.rb} +15 -2
  151. data/lib/karafka/web/ui/controllers/{become_pro.rb → become_pro_controller.rb} +1 -1
  152. data/lib/karafka/web/ui/controllers/{cluster.rb → cluster_controller.rb} +4 -4
  153. data/lib/karafka/web/ui/controllers/{consumers.rb → consumers_controller.rb} +3 -3
  154. data/lib/karafka/web/ui/controllers/{dashboard.rb → dashboard_controller.rb} +1 -1
  155. data/lib/karafka/web/ui/controllers/{errors.rb → errors_controller.rb} +2 -2
  156. data/lib/karafka/web/ui/controllers/{jobs.rb → jobs_controller.rb} +5 -5
  157. data/lib/karafka/web/ui/controllers/{routing.rb → routing_controller.rb} +2 -2
  158. data/lib/karafka/web/ui/controllers/{status.rb → status_controller.rb} +1 -1
  159. data/lib/karafka/web/ui/helpers/alerts_helper.rb +23 -0
  160. data/lib/karafka/web/ui/helpers/application_helper.rb +53 -1
  161. data/lib/karafka/web/ui/lib/paginations/offset_based.rb +3 -4
  162. data/lib/karafka/web/ui/lib/safe_runner.rb +59 -0
  163. data/lib/karafka/web/ui/models/broker.rb +66 -0
  164. data/lib/karafka/web/ui/models/health.rb +28 -2
  165. data/lib/karafka/web/ui/models/message.rb +9 -3
  166. data/lib/karafka/web/ui/models/process.rb +10 -5
  167. data/lib/karafka/web/ui/models/processes.rb +2 -2
  168. data/lib/karafka/web/ui/models/status.rb +1 -1
  169. data/lib/karafka/web/ui/models/topic.rb +78 -0
  170. data/lib/karafka/web/ui/public/javascripts/application.js +18 -1
  171. data/lib/karafka/web/ui/public/javascripts/charts/data_formatting_utility.js +71 -0
  172. data/lib/karafka/web/ui/public/javascripts/charts/dataset_state_manager.js +49 -0
  173. data/lib/karafka/web/ui/public/javascripts/charts/types/bar.js +123 -0
  174. data/lib/karafka/web/ui/public/javascripts/charts/types/line.js +143 -0
  175. data/lib/karafka/web/ui/public/javascripts/charts.js +10 -325
  176. data/lib/karafka/web/ui/public/javascripts/live_poll.js +5 -5
  177. data/lib/karafka/web/ui/public/javascripts/tabs_manager.js +57 -0
  178. data/lib/karafka/web/ui/public/stylesheets/application.css +7 -6
  179. data/lib/karafka/web/ui/views/cluster/_breadcrumbs.erb +3 -3
  180. data/lib/karafka/web/ui/views/cluster/_no_partitions.erb +1 -3
  181. data/lib/karafka/web/ui/views/cluster/_tabs.erb +3 -3
  182. data/lib/karafka/web/ui/views/cluster/brokers.erb +19 -19
  183. data/lib/karafka/web/ui/views/cluster/replication.erb +37 -0
  184. data/lib/karafka/web/ui/views/consumers/_assignments_badges.erb +24 -0
  185. data/lib/karafka/web/ui/views/consumers/_consumer.erb +2 -15
  186. data/lib/karafka/web/ui/views/consumers/_counters.erb +1 -1
  187. data/lib/karafka/web/ui/views/consumers/_summary.erb +5 -5
  188. data/lib/karafka/web/ui/views/consumers/index.erb +22 -20
  189. data/lib/karafka/web/ui/views/dashboard/index.erb +9 -9
  190. data/lib/karafka/web/ui/views/errors/_cleaned.erb +1 -3
  191. data/lib/karafka/web/ui/views/errors/_error.erb +2 -6
  192. data/lib/karafka/web/ui/views/errors/_no_errors.erb +1 -3
  193. data/lib/karafka/web/ui/views/errors/index.erb +22 -20
  194. data/lib/karafka/web/ui/views/jobs/_job.erb +4 -1
  195. data/lib/karafka/web/ui/views/jobs/_no_jobs.erb +1 -3
  196. data/lib/karafka/web/ui/views/jobs/pending.erb +4 -3
  197. data/lib/karafka/web/ui/views/jobs/running.erb +4 -3
  198. data/lib/karafka/web/ui/views/routing/_consumer_group.erb +2 -2
  199. data/lib/karafka/web/ui/views/routing/index.erb +1 -1
  200. data/lib/karafka/web/ui/views/routing/show.erb +1 -1
  201. data/lib/karafka/web/ui/views/shared/_become_pro.erb +3 -3
  202. data/lib/karafka/web/ui/views/shared/_header.erb +16 -10
  203. data/lib/karafka/web/ui/views/shared/_navigation.erb +17 -3
  204. data/lib/karafka/web/ui/views/shared/_not_a_message.erb +5 -0
  205. data/lib/karafka/web/ui/views/shared/alerts/_info.erb +3 -0
  206. data/lib/karafka/web/ui/views/shared/charts/_bar.erb +7 -0
  207. data/lib/karafka/web/ui/views/shared/{_chart.erb → charts/_line.erb} +1 -1
  208. data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +1 -1
  209. data/lib/karafka/web/ui/views/status/show.erb +1 -1
  210. data/lib/karafka/web/version.rb +1 -1
  211. data/lib/karafka/web.rb +17 -1
  212. data.tar.gz.sig +0 -0
  213. metadata +189 -120
  214. metadata.gz.sig +0 -0
  215. data/lib/karafka/web/ui/pro/controllers/dlq.rb +0 -43
  216. data/lib/karafka/web/ui/pro/views/consumers/consumer/_no_jobs.erb +0 -9
  217. data/lib/karafka/web/ui/pro/views/consumers/consumer/_no_subscriptions.erb +0 -9
  218. data/lib/karafka/web/ui/pro/views/consumers/index.erb +0 -36
  219. data/lib/karafka/web/ui/pro/views/dlq/_no_topics.erb +0 -9
  220. data/lib/karafka/web/ui/pro/views/errors/_table.erb +0 -21
  221. data/lib/karafka/web/ui/pro/views/explorer/_failed_deserialization.erb +0 -4
  222. data/lib/karafka/web/ui/pro/views/explorer/_no_topics.erb +0 -7
  223. data/lib/karafka/web/ui/pro/views/explorer/messages/_headers.erb +0 -15
  224. data/lib/karafka/web/ui/pro/views/explorer/messages/_key.erb +0 -12
  225. data/lib/karafka/web/ui/pro/views/explorer/partition/_cleaned.erb +0 -3
  226. data/lib/karafka/web/ui/pro/views/explorer/partition/_empty.erb +0 -3
  227. data/lib/karafka/web/ui/pro/views/explorer/partition/_messages.erb +0 -19
  228. data/lib/karafka/web/ui/pro/views/explorer/topic/_empty.erb +0 -3
  229. data/lib/karafka/web/ui/pro/views/explorer/topic/_limited.erb +0 -4
  230. data/lib/karafka/web/ui/pro/views/health/_no_data.erb +0 -9
  231. data/lib/karafka/web/ui/pro/views/jobs/_no_jobs.erb +0 -9
  232. data/lib/karafka/web/ui/public/javascripts/tabs.js +0 -59
  233. data/lib/karafka/web/ui/views/cluster/topics.erb +0 -35
  234. /data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_consumer_group.erb +0 -0
  235. /data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_job.erb +0 -0
  236. /data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_metrics.erb +0 -0
  237. /data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_partition.erb +0 -0
  238. /data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_stopped.erb +0 -0
  239. /data/lib/karafka/web/{ui/pro → pro/ui}/views/consumers/consumer/_tabs.erb +0 -0
  240. /data/lib/karafka/web/{ui/pro → pro/ui}/views/dlq/_breadcrumbs.erb +0 -0
  241. /data/lib/karafka/web/{ui/pro → pro/ui}/views/dlq/_topic.erb +0 -0
  242. /data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/_breadcrumbs.erb +0 -0
  243. /data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/_partition_option.erb +0 -0
  244. /data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/_title_with_select.erb +0 -0
  245. /data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/index.erb +0 -0
  246. /data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/partition.erb +0 -0
  247. /data/lib/karafka/web/{ui/pro → pro/ui}/views/errors/show.erb +0 -0
  248. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/_breadcrumbs.erb +0 -0
  249. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/_filtered.erb +0 -0
  250. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/_partition_option.erb +0 -0
  251. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/_topic.erb +0 -0
  252. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/message/_message_actions.erb +0 -0
  253. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/messages/_detail.erb +0 -0
  254. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/partition/_details.erb +0 -0
  255. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/partition.erb +0 -0
  256. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/show.erb +0 -0
  257. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/topic/_details.erb +0 -0
  258. /data/lib/karafka/web/{ui/pro → pro/ui}/views/explorer/topic.erb +0 -0
  259. /data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_consumer_group_header.erb +0 -0
  260. /data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_partition_offset.erb +0 -0
  261. /data/lib/karafka/web/{ui/pro → pro/ui}/views/health/_partition_times.erb +0 -0
  262. /data/lib/karafka/web/{ui/pro → pro/ui}/views/routing/_detail.erb +0 -0
  263. /data/lib/karafka/web/{ui/pro → pro/ui}/views/routing/_topic.erb +0 -0
  264. /data/lib/karafka/web/ui/public/javascripts/{bootstrap.min.js → libs/bootstrap.min.js} +0 -0
  265. /data/lib/karafka/web/ui/public/javascripts/{chart.min.js → libs/chart.min.js} +0 -0
  266. /data/lib/karafka/web/ui/public/javascripts/{datepicker.js → libs/datepicker.js} +0 -0
  267. /data/lib/karafka/web/ui/public/javascripts/{highlight.min.js → libs/highlight.min.js} +0 -0
  268. /data/lib/karafka/web/ui/public/javascripts/{timeago.min.js → libs/timeago.min.js} +0 -0
  269. /data/lib/karafka/web/ui/public/stylesheets/{bootstrap.min.css → libs/bootstrap.min.css} +0 -0
  270. /data/lib/karafka/web/ui/public/stylesheets/{datepicker.min.css → libs/datepicker.min.css} +0 -0
  271. /data/lib/karafka/web/ui/public/stylesheets/{highlight.min.css → libs/highlight.min.css} +0 -0
@@ -9,11 +9,13 @@
9
9
  Dashboard
10
10
  </a>
11
11
  </li>
12
+
12
13
  <li class="nav-item ms-3">
13
14
  <a class="nav-link <%= nav_class(start_with: '/consumers') %>" href="<%= root_path('consumers') %>">
14
15
  Consumers
15
16
  </a>
16
17
  </li>
18
+
17
19
  <li class="nav-item ms-3">
18
20
  <a class="nav-link <%= nav_class(start_with: '/jobs') %>" href="<%= root_path('jobs/running') %>">
19
21
  Jobs
@@ -21,35 +23,47 @@
21
23
  </li>
22
24
 
23
25
  <li class="nav-item ms-3">
24
- <a class="nav-link text-muted <%= nav_class(start_with: '/health') %>" href="<%= root_path('health') %>" title="Pro feature">
26
+ <a class="nav-link text-muted" href="<%= root_path('health') %>" title="Pro feature">
25
27
  Health
26
28
  </a>
27
29
  </li>
30
+
28
31
  <li class="nav-item ms-3">
29
32
  <a class="nav-link <%= nav_class(start_with: '/routing') %>" href="<%= root_path('routing') %>">
30
33
  Routing
31
34
  </a>
32
35
  </li>
36
+
33
37
  <li class="nav-item ms-3">
34
- <a class="nav-link text-muted <%= nav_class(start_with: '/explorer') %>" href="<%= root_path('explorer') %>" title="Pro feature">
38
+ <a class="nav-link text-muted" href="<%= root_path('explorer') %>" title="Pro feature">
35
39
  Explorer
36
40
  </a>
37
41
  </li>
42
+
38
43
  <li class="nav-item ms-3">
39
44
  <a class="nav-link <%= nav_class(start_with: '/errors') %>" href="<%= root_path('errors') %>">
40
45
  Errors
41
46
  </a>
42
47
  </li>
48
+
43
49
  <li class="nav-item ms-3">
44
- <a class="nav-link text-muted <%= nav_class(start_with: '/dlq') %>" href="<%= root_path('dlq') %>" title="Pro feature">
50
+ <a class="nav-link text-muted" href="<%= root_path('dlq') %>" title="Pro feature">
45
51
  Dead
46
52
  </a>
47
53
  </li>
54
+
48
55
  <li class="nav-item ms-3">
49
56
  <a class="nav-link <%= nav_class(start_with: '/cluster') %>" href="<%= root_path('cluster') %>">
50
57
  Cluster
51
58
  </a>
52
59
  </li>
60
+
61
+ <li class="nav-item ms-3">
62
+ <a class="nav-link text-muted" href="<%= root_path('topics') %>" title="Pro feature">
63
+ Topics
64
+ </a>
65
+ </li>
66
+
53
67
  <li class="nav-item ms-3">
54
68
  <a class="nav-link <%= nav_class(start_with: '/status') %>" href="<%= root_path('status') %>">
55
69
  Status
@@ -0,0 +1,5 @@
1
+ <tr>
2
+ <td colspan="100" class="text-center text-muted">
3
+ This offset does not contain meaningful data. The message may have been compacted or is a system entry.
4
+ </td>
5
+ </tr>
@@ -0,0 +1,3 @@
1
+ <div class="alert alert-info" role="alert">
2
+ <%= message %>
3
+ </div>
@@ -0,0 +1,7 @@
1
+ <div class="chartjs-wrapper">
2
+ <canvas
3
+ id="<%= id %>-chart"
4
+ class="chartjs chartjs-bar"
5
+ data-datasets="<%= data %>"
6
+ ></canvas>
7
+ </div>
@@ -6,7 +6,7 @@
6
6
  <div class="mt-4 chartjs-wrapper">
7
7
  <canvas
8
8
  id="<%= id %>-chart"
9
- class="chartjs <%= 'blurred' if blurred %>"
9
+ class="chartjs chartjs-line <%= 'blurred' if blurred %>"
10
10
  data-datasets="<%= data %>"
11
11
  data-label_type_y="<%= label_type_y %>"
12
12
  data-label_type_x="<%= label_type_x %>"
@@ -23,7 +23,7 @@
23
23
  <ul class="mb-5 text-start">
24
24
  <li>You have visited the <a href="<%= root_path('status') %>">Status</a> page to troubleshoot any potential issues</li>
25
25
  <li>All the topics required by Karafka Web exist</li>
26
- <li>You have used <code>bundle exec karafka-web install</code> to initialize the Web UI</li>
26
+ <li>You have used <code>bundle exec karafka-web migrate</code> to initialize the Web UI</li>
27
27
  <li>You have a working connection with your Kafka cluster</li>
28
28
  <li>The resource you requested exists</li>
29
29
  </ul>
@@ -1,4 +1,4 @@
1
- <%== view_title('Web UI status details') %>
1
+ <%== view_title('Web UI Status Details', hr: true) %>
2
2
 
3
3
  <div class="container">
4
4
  <div class="row">
@@ -3,6 +3,6 @@
3
3
  module Karafka
4
4
  module Web
5
5
  # Current gem version
6
- VERSION = '0.8.2'
6
+ VERSION = '0.9.0.rc2'
7
7
  end
8
8
  end
data/lib/karafka/web.rb CHANGED
@@ -28,7 +28,13 @@ module Karafka
28
28
  # Sets up the whole configuration
29
29
  # @param [Block] block configuration block
30
30
  def setup(&block)
31
+ Pro::Loader.pre_setup_all(config) if Karafka.pro?
32
+
31
33
  Config.configure(&block)
34
+
35
+ Pro::Loader.post_setup_all(config) if Karafka.pro?
36
+
37
+ @configured = true
32
38
  end
33
39
 
34
40
  # @return [Karafka::Web::Config] config instance
@@ -39,6 +45,9 @@ module Karafka
39
45
  # Activates all the needed routing and sets up listener, etc
40
46
  # This needs to run **after** the optional configuration of the web component
41
47
  def enable!
48
+ # Run the setup to initialize components if user did not run it prior himself
49
+ setup unless @configured
50
+
42
51
  # Make sure config is as expected
43
52
  # It should be configured before enabling the Web UI
44
53
  Contracts::Config.new.validate!(config.to_h)
@@ -50,6 +59,13 @@ module Karafka
50
59
  # custom values provided by our user
51
60
  App.engine.plugin(:sessions, **config.ui.sessions.to_h)
52
61
  end
62
+
63
+ # @return [Array<String>] Web UI slogans we use to encourage people to support Karafka
64
+ def slogans
65
+ @slogans ||= YAML.load_file(
66
+ gem_root.join('config', 'locales', 'slogans.yml')
67
+ ).dig('en', 'slogans')
68
+ end
53
69
  end
54
70
  end
55
71
  end
@@ -59,7 +75,7 @@ require_relative 'web/inflector'
59
75
  loader = Zeitwerk::Loader.new
60
76
 
61
77
  # Make sure pro is not loaded unless Pro
62
- loader.ignore(Karafka::Web.gem_root.join('lib/karafka/web/ui/pro'))
78
+ loader.ignore(Karafka::Web.gem_root.join('lib/karafka/web/pro'))
63
79
 
64
80
  # If license is detected, we can use loader without limitations
65
81
  Karafka::Licenser.detect do
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.9.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
36
36
  msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
37
37
  -----END CERTIFICATE-----
38
- date: 2024-02-16 00:00:00.000000000 Z
38
+ date: 2024-04-15 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: erubi
@@ -57,40 +57,40 @@ dependencies:
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 2.3.0
60
+ version: 2.4.0.beta1
61
61
  - - "<"
62
62
  - !ruby/object:Gem::Version
63
- version: 2.4.0
63
+ version: 2.5.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 2.3.0
70
+ version: 2.4.0.beta1
71
71
  - - "<"
72
72
  - !ruby/object:Gem::Version
73
- version: 2.4.0
73
+ version: 2.5.0
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: karafka-core
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: 2.3.0
80
+ version: 2.4.0.rc1
81
81
  - - "<"
82
82
  - !ruby/object:Gem::Version
83
- version: 2.4.0
83
+ version: 2.5.0
84
84
  type: :runtime
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: 2.3.0
90
+ version: 2.4.0.rc1
91
91
  - - "<"
92
92
  - !ruby/object:Gem::Version
93
- version: 2.4.0
93
+ version: 2.5.0
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: roda
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +168,8 @@ files:
168
168
  - bin/wait_for_kafka
169
169
  - certs/cert_chain.pem
170
170
  - config/locales/errors.yml
171
+ - config/locales/pro_errors.yml
172
+ - config/locales/slogans.yml
171
173
  - docker-compose.yml
172
174
  - karafka-web.gemspec
173
175
  - lib/karafka/web.rb
@@ -210,6 +212,151 @@ files:
210
212
  - lib/karafka/web/management/migrations/1706611396_rename_lag_total_to_lag_hybrid_in_metrics.rb
211
213
  - lib/karafka/web/management/migrations/1706611396_rename_lag_total_to_lag_hybrid_in_states.rb
212
214
  - lib/karafka/web/management/migrator.rb
215
+ - lib/karafka/web/pro/commanding.rb
216
+ - lib/karafka/web/pro/commanding/commands/base.rb
217
+ - lib/karafka/web/pro/commanding/commands/probe.rb
218
+ - lib/karafka/web/pro/commanding/commands/quiet.rb
219
+ - lib/karafka/web/pro/commanding/commands/stop.rb
220
+ - lib/karafka/web/pro/commanding/config.rb
221
+ - lib/karafka/web/pro/commanding/contracts/config.rb
222
+ - lib/karafka/web/pro/commanding/dispatcher.rb
223
+ - lib/karafka/web/pro/commanding/listener.rb
224
+ - lib/karafka/web/pro/commanding/manager.rb
225
+ - lib/karafka/web/pro/commanding/matcher.rb
226
+ - lib/karafka/web/pro/loader.rb
227
+ - lib/karafka/web/pro/ui/app.rb
228
+ - lib/karafka/web/pro/ui/controllers/base_controller.rb
229
+ - lib/karafka/web/pro/ui/controllers/cluster_controller.rb
230
+ - lib/karafka/web/pro/ui/controllers/commanding_controller.rb
231
+ - lib/karafka/web/pro/ui/controllers/commands_controller.rb
232
+ - lib/karafka/web/pro/ui/controllers/consumers_controller.rb
233
+ - lib/karafka/web/pro/ui/controllers/dashboard_controller.rb
234
+ - lib/karafka/web/pro/ui/controllers/dlq_controller.rb
235
+ - lib/karafka/web/pro/ui/controllers/errors_controller.rb
236
+ - lib/karafka/web/pro/ui/controllers/explorer_controller.rb
237
+ - lib/karafka/web/pro/ui/controllers/health_controller.rb
238
+ - lib/karafka/web/pro/ui/controllers/jobs_controller.rb
239
+ - lib/karafka/web/pro/ui/controllers/messages_controller.rb
240
+ - lib/karafka/web/pro/ui/controllers/routing_controller.rb
241
+ - lib/karafka/web/pro/ui/controllers/status_controller.rb
242
+ - lib/karafka/web/pro/ui/controllers/topics_controller.rb
243
+ - lib/karafka/web/pro/ui/lib/patterns_detector.rb
244
+ - lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb
245
+ - lib/karafka/web/pro/ui/views/cluster/_broker.erb
246
+ - lib/karafka/web/pro/ui/views/cluster/_config.erb
247
+ - lib/karafka/web/pro/ui/views/cluster/_tabs.erb
248
+ - lib/karafka/web/pro/ui/views/cluster/brokers.erb
249
+ - lib/karafka/web/pro/ui/views/cluster/index.erb
250
+ - lib/karafka/web/pro/ui/views/cluster/show.erb
251
+ - lib/karafka/web/pro/ui/views/commands/_backtrace.erb
252
+ - lib/karafka/web/pro/ui/views/commands/_breadcrumbs.erb
253
+ - lib/karafka/web/pro/ui/views/commands/_command.erb
254
+ - lib/karafka/web/pro/ui/views/commands/_command_details.erb
255
+ - lib/karafka/web/pro/ui/views/commands/_details.erb
256
+ - lib/karafka/web/pro/ui/views/commands/_empty.erb
257
+ - lib/karafka/web/pro/ui/views/commands/_incompatible_schema.erb
258
+ - lib/karafka/web/pro/ui/views/commands/_metadata.erb
259
+ - lib/karafka/web/pro/ui/views/commands/_table.erb
260
+ - lib/karafka/web/pro/ui/views/commands/index.erb
261
+ - lib/karafka/web/pro/ui/views/commands/show.erb
262
+ - lib/karafka/web/pro/ui/views/consumers/_breadcrumbs.erb
263
+ - lib/karafka/web/pro/ui/views/consumers/_consumer.erb
264
+ - lib/karafka/web/pro/ui/views/consumers/_consumer_controls.erb
265
+ - lib/karafka/web/pro/ui/views/consumers/_consumer_performance.erb
266
+ - lib/karafka/web/pro/ui/views/consumers/_counters.erb
267
+ - lib/karafka/web/pro/ui/views/consumers/_tabs.erb
268
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_commands.erb
269
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_consumer_group.erb
270
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_job.erb
271
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_metrics.erb
272
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_no_jobs.erb
273
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_no_subscriptions.erb
274
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_partition.erb
275
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_stopped.erb
276
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_subscription_group.erb
277
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_tabs.erb
278
+ - lib/karafka/web/pro/ui/views/consumers/consumer/_title.erb
279
+ - lib/karafka/web/pro/ui/views/consumers/controls.erb
280
+ - lib/karafka/web/pro/ui/views/consumers/details.erb
281
+ - lib/karafka/web/pro/ui/views/consumers/index.erb
282
+ - lib/karafka/web/pro/ui/views/consumers/pending_jobs.erb
283
+ - lib/karafka/web/pro/ui/views/consumers/performance.erb
284
+ - lib/karafka/web/pro/ui/views/consumers/running_jobs.erb
285
+ - lib/karafka/web/pro/ui/views/consumers/subscriptions.erb
286
+ - lib/karafka/web/pro/ui/views/dashboard/index.erb
287
+ - lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb
288
+ - lib/karafka/web/pro/ui/views/dlq/_no_topics.erb
289
+ - lib/karafka/web/pro/ui/views/dlq/_topic.erb
290
+ - lib/karafka/web/pro/ui/views/dlq/index.erb
291
+ - lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb
292
+ - lib/karafka/web/pro/ui/views/errors/_error.erb
293
+ - lib/karafka/web/pro/ui/views/errors/_partition_option.erb
294
+ - lib/karafka/web/pro/ui/views/errors/_table.erb
295
+ - lib/karafka/web/pro/ui/views/errors/_title_with_select.erb
296
+ - lib/karafka/web/pro/ui/views/errors/index.erb
297
+ - lib/karafka/web/pro/ui/views/errors/partition.erb
298
+ - lib/karafka/web/pro/ui/views/errors/show.erb
299
+ - lib/karafka/web/pro/ui/views/explorer/_breadcrumbs.erb
300
+ - lib/karafka/web/pro/ui/views/explorer/_failed_deserialization.erb
301
+ - lib/karafka/web/pro/ui/views/explorer/_filtered.erb
302
+ - lib/karafka/web/pro/ui/views/explorer/_message.erb
303
+ - lib/karafka/web/pro/ui/views/explorer/_no_topics.erb
304
+ - lib/karafka/web/pro/ui/views/explorer/_partition_option.erb
305
+ - lib/karafka/web/pro/ui/views/explorer/_topic.erb
306
+ - lib/karafka/web/pro/ui/views/explorer/index.erb
307
+ - lib/karafka/web/pro/ui/views/explorer/message/_message_actions.erb
308
+ - lib/karafka/web/pro/ui/views/explorer/message/_metadata.erb
309
+ - lib/karafka/web/pro/ui/views/explorer/message/_payload.erb
310
+ - lib/karafka/web/pro/ui/views/explorer/message/_payload_actions.erb
311
+ - lib/karafka/web/pro/ui/views/explorer/messages/_detail.erb
312
+ - lib/karafka/web/pro/ui/views/explorer/messages/_headers.erb
313
+ - lib/karafka/web/pro/ui/views/explorer/messages/_key.erb
314
+ - lib/karafka/web/pro/ui/views/explorer/partition.erb
315
+ - lib/karafka/web/pro/ui/views/explorer/partition/_cleaned.erb
316
+ - lib/karafka/web/pro/ui/views/explorer/partition/_details.erb
317
+ - lib/karafka/web/pro/ui/views/explorer/partition/_empty.erb
318
+ - lib/karafka/web/pro/ui/views/explorer/partition/_messages.erb
319
+ - lib/karafka/web/pro/ui/views/explorer/show.erb
320
+ - lib/karafka/web/pro/ui/views/explorer/topic.erb
321
+ - lib/karafka/web/pro/ui/views/explorer/topic/_details.erb
322
+ - lib/karafka/web/pro/ui/views/explorer/topic/_empty.erb
323
+ - lib/karafka/web/pro/ui/views/explorer/topic/_limited.erb
324
+ - lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb
325
+ - lib/karafka/web/pro/ui/views/health/_consumer_group_header.erb
326
+ - lib/karafka/web/pro/ui/views/health/_no_data.erb
327
+ - lib/karafka/web/pro/ui/views/health/_partition.erb
328
+ - lib/karafka/web/pro/ui/views/health/_partition_lags.erb
329
+ - lib/karafka/web/pro/ui/views/health/_partition_offset.erb
330
+ - lib/karafka/web/pro/ui/views/health/_partition_times.erb
331
+ - lib/karafka/web/pro/ui/views/health/_tabs.erb
332
+ - lib/karafka/web/pro/ui/views/health/changes.erb
333
+ - lib/karafka/web/pro/ui/views/health/cluster_lags.erb
334
+ - lib/karafka/web/pro/ui/views/health/lags.erb
335
+ - lib/karafka/web/pro/ui/views/health/offsets.erb
336
+ - lib/karafka/web/pro/ui/views/health/overview.erb
337
+ - lib/karafka/web/pro/ui/views/jobs/_job.erb
338
+ - lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb
339
+ - lib/karafka/web/pro/ui/views/jobs/pending.erb
340
+ - lib/karafka/web/pro/ui/views/jobs/running.erb
341
+ - lib/karafka/web/pro/ui/views/routing/_consumer_group.erb
342
+ - lib/karafka/web/pro/ui/views/routing/_detail.erb
343
+ - lib/karafka/web/pro/ui/views/routing/_topic.erb
344
+ - lib/karafka/web/pro/ui/views/routing/index.erb
345
+ - lib/karafka/web/pro/ui/views/routing/show.erb
346
+ - lib/karafka/web/pro/ui/views/shared/_navigation.erb
347
+ - lib/karafka/web/pro/ui/views/topics/_breadcrumbs.erb
348
+ - lib/karafka/web/pro/ui/views/topics/_partition.erb
349
+ - lib/karafka/web/pro/ui/views/topics/_tabs.erb
350
+ - lib/karafka/web/pro/ui/views/topics/_topic.erb
351
+ - lib/karafka/web/pro/ui/views/topics/config.erb
352
+ - lib/karafka/web/pro/ui/views/topics/distribution.erb
353
+ - lib/karafka/web/pro/ui/views/topics/distribution/_badges.erb
354
+ - lib/karafka/web/pro/ui/views/topics/distribution/_chart.erb
355
+ - lib/karafka/web/pro/ui/views/topics/distribution/_empty_partitions.erb
356
+ - lib/karafka/web/pro/ui/views/topics/distribution/_limited.erb
357
+ - lib/karafka/web/pro/ui/views/topics/distribution/_partition.erb
358
+ - lib/karafka/web/pro/ui/views/topics/index.erb
359
+ - lib/karafka/web/pro/ui/views/topics/replication.erb
213
360
  - lib/karafka/web/processing/consumer.rb
214
361
  - lib/karafka/web/processing/consumers/aggregators/base.rb
215
362
  - lib/karafka/web/processing/consumers/aggregators/metrics.rb
@@ -258,20 +405,21 @@ files:
258
405
  - lib/karafka/web/tracking/scheduler.rb
259
406
  - lib/karafka/web/ui/app.rb
260
407
  - lib/karafka/web/ui/base.rb
261
- - lib/karafka/web/ui/controllers/base.rb
262
- - lib/karafka/web/ui/controllers/become_pro.rb
263
- - lib/karafka/web/ui/controllers/cluster.rb
264
- - lib/karafka/web/ui/controllers/consumers.rb
265
- - lib/karafka/web/ui/controllers/dashboard.rb
266
- - lib/karafka/web/ui/controllers/errors.rb
267
- - lib/karafka/web/ui/controllers/jobs.rb
408
+ - lib/karafka/web/ui/controllers/base_controller.rb
409
+ - lib/karafka/web/ui/controllers/become_pro_controller.rb
410
+ - lib/karafka/web/ui/controllers/cluster_controller.rb
411
+ - lib/karafka/web/ui/controllers/consumers_controller.rb
412
+ - lib/karafka/web/ui/controllers/dashboard_controller.rb
413
+ - lib/karafka/web/ui/controllers/errors_controller.rb
414
+ - lib/karafka/web/ui/controllers/jobs_controller.rb
268
415
  - lib/karafka/web/ui/controllers/requests/params.rb
269
416
  - lib/karafka/web/ui/controllers/responses/deny.rb
270
417
  - lib/karafka/web/ui/controllers/responses/file.rb
271
418
  - lib/karafka/web/ui/controllers/responses/redirect.rb
272
419
  - lib/karafka/web/ui/controllers/responses/render.rb
273
- - lib/karafka/web/ui/controllers/routing.rb
274
- - lib/karafka/web/ui/controllers/status.rb
420
+ - lib/karafka/web/ui/controllers/routing_controller.rb
421
+ - lib/karafka/web/ui/controllers/status_controller.rb
422
+ - lib/karafka/web/ui/helpers/alerts_helper.rb
275
423
  - lib/karafka/web/ui/helpers/application_helper.rb
276
424
  - lib/karafka/web/ui/helpers/paths_helper.rb
277
425
  - lib/karafka/web/ui/lib/admin.rb
@@ -284,8 +432,10 @@ files:
284
432
  - lib/karafka/web/ui/lib/paginations/paginators/partitions.rb
285
433
  - lib/karafka/web/ui/lib/paginations/paginators/sets.rb
286
434
  - lib/karafka/web/ui/lib/paginations/watermark_offsets_based.rb
435
+ - lib/karafka/web/ui/lib/safe_runner.rb
287
436
  - lib/karafka/web/ui/lib/sorter.rb
288
437
  - lib/karafka/web/ui/lib/ttl_cache.rb
438
+ - lib/karafka/web/ui/models/broker.rb
289
439
  - lib/karafka/web/ui/models/cluster_info.rb
290
440
  - lib/karafka/web/ui/models/consumer_group.rb
291
441
  - lib/karafka/web/ui/models/consumers_metrics.rb
@@ -307,119 +457,35 @@ files:
307
457
  - lib/karafka/web/ui/models/topic.rb
308
458
  - lib/karafka/web/ui/models/visibility_filter.rb
309
459
  - lib/karafka/web/ui/models/watermark_offsets.rb
310
- - lib/karafka/web/ui/pro/app.rb
311
- - lib/karafka/web/ui/pro/controllers/cluster.rb
312
- - lib/karafka/web/ui/pro/controllers/consumers.rb
313
- - lib/karafka/web/ui/pro/controllers/dashboard.rb
314
- - lib/karafka/web/ui/pro/controllers/dlq.rb
315
- - lib/karafka/web/ui/pro/controllers/errors.rb
316
- - lib/karafka/web/ui/pro/controllers/explorer.rb
317
- - lib/karafka/web/ui/pro/controllers/health.rb
318
- - lib/karafka/web/ui/pro/controllers/jobs.rb
319
- - lib/karafka/web/ui/pro/controllers/messages.rb
320
- - lib/karafka/web/ui/pro/controllers/routing.rb
321
- - lib/karafka/web/ui/pro/controllers/status.rb
322
- - lib/karafka/web/ui/pro/views/consumers/_breadcrumbs.erb
323
- - lib/karafka/web/ui/pro/views/consumers/_consumer.erb
324
- - lib/karafka/web/ui/pro/views/consumers/_counters.erb
325
- - lib/karafka/web/ui/pro/views/consumers/consumer/_consumer_group.erb
326
- - lib/karafka/web/ui/pro/views/consumers/consumer/_job.erb
327
- - lib/karafka/web/ui/pro/views/consumers/consumer/_metrics.erb
328
- - lib/karafka/web/ui/pro/views/consumers/consumer/_no_jobs.erb
329
- - lib/karafka/web/ui/pro/views/consumers/consumer/_no_subscriptions.erb
330
- - lib/karafka/web/ui/pro/views/consumers/consumer/_partition.erb
331
- - lib/karafka/web/ui/pro/views/consumers/consumer/_stopped.erb
332
- - lib/karafka/web/ui/pro/views/consumers/consumer/_subscription_group.erb
333
- - lib/karafka/web/ui/pro/views/consumers/consumer/_tabs.erb
334
- - lib/karafka/web/ui/pro/views/consumers/details.erb
335
- - lib/karafka/web/ui/pro/views/consumers/index.erb
336
- - lib/karafka/web/ui/pro/views/consumers/pending_jobs.erb
337
- - lib/karafka/web/ui/pro/views/consumers/running_jobs.erb
338
- - lib/karafka/web/ui/pro/views/consumers/subscriptions.erb
339
- - lib/karafka/web/ui/pro/views/dashboard/index.erb
340
- - lib/karafka/web/ui/pro/views/dlq/_breadcrumbs.erb
341
- - lib/karafka/web/ui/pro/views/dlq/_no_topics.erb
342
- - lib/karafka/web/ui/pro/views/dlq/_topic.erb
343
- - lib/karafka/web/ui/pro/views/dlq/index.erb
344
- - lib/karafka/web/ui/pro/views/errors/_breadcrumbs.erb
345
- - lib/karafka/web/ui/pro/views/errors/_error.erb
346
- - lib/karafka/web/ui/pro/views/errors/_partition_option.erb
347
- - lib/karafka/web/ui/pro/views/errors/_table.erb
348
- - lib/karafka/web/ui/pro/views/errors/_title_with_select.erb
349
- - lib/karafka/web/ui/pro/views/errors/index.erb
350
- - lib/karafka/web/ui/pro/views/errors/partition.erb
351
- - lib/karafka/web/ui/pro/views/errors/show.erb
352
- - lib/karafka/web/ui/pro/views/explorer/_breadcrumbs.erb
353
- - lib/karafka/web/ui/pro/views/explorer/_failed_deserialization.erb
354
- - lib/karafka/web/ui/pro/views/explorer/_filtered.erb
355
- - lib/karafka/web/ui/pro/views/explorer/_message.erb
356
- - lib/karafka/web/ui/pro/views/explorer/_no_topics.erb
357
- - lib/karafka/web/ui/pro/views/explorer/_partition_option.erb
358
- - lib/karafka/web/ui/pro/views/explorer/_topic.erb
359
- - lib/karafka/web/ui/pro/views/explorer/index.erb
360
- - lib/karafka/web/ui/pro/views/explorer/message/_message_actions.erb
361
- - lib/karafka/web/ui/pro/views/explorer/message/_metadata.erb
362
- - lib/karafka/web/ui/pro/views/explorer/message/_payload.erb
363
- - lib/karafka/web/ui/pro/views/explorer/message/_payload_actions.erb
364
- - lib/karafka/web/ui/pro/views/explorer/messages/_detail.erb
365
- - lib/karafka/web/ui/pro/views/explorer/messages/_headers.erb
366
- - lib/karafka/web/ui/pro/views/explorer/messages/_key.erb
367
- - lib/karafka/web/ui/pro/views/explorer/partition.erb
368
- - lib/karafka/web/ui/pro/views/explorer/partition/_cleaned.erb
369
- - lib/karafka/web/ui/pro/views/explorer/partition/_details.erb
370
- - lib/karafka/web/ui/pro/views/explorer/partition/_empty.erb
371
- - lib/karafka/web/ui/pro/views/explorer/partition/_messages.erb
372
- - lib/karafka/web/ui/pro/views/explorer/show.erb
373
- - lib/karafka/web/ui/pro/views/explorer/topic.erb
374
- - lib/karafka/web/ui/pro/views/explorer/topic/_details.erb
375
- - lib/karafka/web/ui/pro/views/explorer/topic/_empty.erb
376
- - lib/karafka/web/ui/pro/views/explorer/topic/_limited.erb
377
- - lib/karafka/web/ui/pro/views/health/_breadcrumbs.erb
378
- - lib/karafka/web/ui/pro/views/health/_consumer_group_header.erb
379
- - lib/karafka/web/ui/pro/views/health/_no_data.erb
380
- - lib/karafka/web/ui/pro/views/health/_partition.erb
381
- - lib/karafka/web/ui/pro/views/health/_partition_lags.erb
382
- - lib/karafka/web/ui/pro/views/health/_partition_offset.erb
383
- - lib/karafka/web/ui/pro/views/health/_partition_times.erb
384
- - lib/karafka/web/ui/pro/views/health/_tabs.erb
385
- - lib/karafka/web/ui/pro/views/health/changes.erb
386
- - lib/karafka/web/ui/pro/views/health/lags.erb
387
- - lib/karafka/web/ui/pro/views/health/offsets.erb
388
- - lib/karafka/web/ui/pro/views/health/overview.erb
389
- - lib/karafka/web/ui/pro/views/jobs/_job.erb
390
- - lib/karafka/web/ui/pro/views/jobs/_no_jobs.erb
391
- - lib/karafka/web/ui/pro/views/jobs/pending.erb
392
- - lib/karafka/web/ui/pro/views/jobs/running.erb
393
- - lib/karafka/web/ui/pro/views/routing/_consumer_group.erb
394
- - lib/karafka/web/ui/pro/views/routing/_detail.erb
395
- - lib/karafka/web/ui/pro/views/routing/_topic.erb
396
- - lib/karafka/web/ui/pro/views/routing/index.erb
397
- - lib/karafka/web/ui/pro/views/routing/show.erb
398
- - lib/karafka/web/ui/pro/views/shared/_navigation.erb
399
460
  - lib/karafka/web/ui/public/images/favicon.ico
400
461
  - lib/karafka/web/ui/public/images/logo-gray.svg
401
462
  - lib/karafka/web/ui/public/images/logo.svg
402
463
  - lib/karafka/web/ui/public/javascripts/application.js
403
- - lib/karafka/web/ui/public/javascripts/bootstrap.min.js
404
- - lib/karafka/web/ui/public/javascripts/chart.min.js
405
464
  - lib/karafka/web/ui/public/javascripts/charts.js
406
- - lib/karafka/web/ui/public/javascripts/datepicker.js
407
- - lib/karafka/web/ui/public/javascripts/highlight.min.js
465
+ - lib/karafka/web/ui/public/javascripts/charts/data_formatting_utility.js
466
+ - lib/karafka/web/ui/public/javascripts/charts/dataset_state_manager.js
467
+ - lib/karafka/web/ui/public/javascripts/charts/types/bar.js
468
+ - lib/karafka/web/ui/public/javascripts/charts/types/line.js
469
+ - lib/karafka/web/ui/public/javascripts/libs/bootstrap.min.js
470
+ - lib/karafka/web/ui/public/javascripts/libs/chart.min.js
471
+ - lib/karafka/web/ui/public/javascripts/libs/datepicker.js
472
+ - lib/karafka/web/ui/public/javascripts/libs/highlight.min.js
473
+ - lib/karafka/web/ui/public/javascripts/libs/timeago.min.js
408
474
  - lib/karafka/web/ui/public/javascripts/live_poll.js
409
475
  - lib/karafka/web/ui/public/javascripts/offset_datetime.js
410
- - lib/karafka/web/ui/public/javascripts/tabs.js
411
- - lib/karafka/web/ui/public/javascripts/timeago.min.js
476
+ - lib/karafka/web/ui/public/javascripts/tabs_manager.js
412
477
  - lib/karafka/web/ui/public/stylesheets/application.css
413
- - lib/karafka/web/ui/public/stylesheets/bootstrap.min.css
414
- - lib/karafka/web/ui/public/stylesheets/datepicker.min.css
415
- - lib/karafka/web/ui/public/stylesheets/highlight.min.css
478
+ - lib/karafka/web/ui/public/stylesheets/libs/bootstrap.min.css
479
+ - lib/karafka/web/ui/public/stylesheets/libs/datepicker.min.css
480
+ - lib/karafka/web/ui/public/stylesheets/libs/highlight.min.css
416
481
  - lib/karafka/web/ui/views/cluster/_breadcrumbs.erb
417
482
  - lib/karafka/web/ui/views/cluster/_broker.erb
418
483
  - lib/karafka/web/ui/views/cluster/_no_partitions.erb
419
484
  - lib/karafka/web/ui/views/cluster/_partition.erb
420
485
  - lib/karafka/web/ui/views/cluster/_tabs.erb
421
486
  - lib/karafka/web/ui/views/cluster/brokers.erb
422
- - lib/karafka/web/ui/views/cluster/topics.erb
487
+ - lib/karafka/web/ui/views/cluster/replication.erb
488
+ - lib/karafka/web/ui/views/consumers/_assignments_badges.erb
423
489
  - lib/karafka/web/ui/views/consumers/_consumer.erb
424
490
  - lib/karafka/web/ui/views/consumers/_counters.erb
425
491
  - lib/karafka/web/ui/views/consumers/_no_consumers.erb
@@ -452,7 +518,6 @@ files:
452
518
  - lib/karafka/web/ui/views/routing/show.erb
453
519
  - lib/karafka/web/ui/views/shared/_become_pro.erb
454
520
  - lib/karafka/web/ui/views/shared/_brand.erb
455
- - lib/karafka/web/ui/views/shared/_chart.erb
456
521
  - lib/karafka/web/ui/views/shared/_content.erb
457
522
  - lib/karafka/web/ui/views/shared/_feature_pro.erb
458
523
  - lib/karafka/web/ui/views/shared/_flashes.erb
@@ -461,8 +526,12 @@ files:
461
526
  - lib/karafka/web/ui/views/shared/_live_poll.erb
462
527
  - lib/karafka/web/ui/views/shared/_navigation.erb
463
528
  - lib/karafka/web/ui/views/shared/_no_paginated_data.erb
529
+ - lib/karafka/web/ui/views/shared/_not_a_message.erb
464
530
  - lib/karafka/web/ui/views/shared/_pagination.erb
465
531
  - lib/karafka/web/ui/views/shared/_tab_nav.erb
532
+ - lib/karafka/web/ui/views/shared/alerts/_info.erb
533
+ - lib/karafka/web/ui/views/shared/charts/_bar.erb
534
+ - lib/karafka/web/ui/views/shared/charts/_line.erb
466
535
  - lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb
467
536
  - lib/karafka/web/ui/views/shared/exceptions/not_found.erb
468
537
  - lib/karafka/web/ui/views/shared/exceptions/pro_only.erb
@@ -512,7 +581,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
512
581
  requirements:
513
582
  - - ">="
514
583
  - !ruby/object:Gem::Version
515
- version: '0'
584
+ version: 3.0.0
516
585
  required_rubygems_version: !ruby/object:Gem::Requirement
517
586
  requirements:
518
587
  - - ">="
metadata.gz.sig CHANGED
Binary file