karafka-web 0.11.5 → 0.11.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/Gemfile +9 -10
- data/Gemfile.lint +14 -0
- data/Gemfile.lint.lock +123 -0
- data/Gemfile.lock +15 -16
- data/README.md +15 -15
- data/Rakefile +2 -2
- data/bin/balance_specs +120 -0
- data/bin/check_coverage +31 -0
- data/bin/collect_timings +83 -0
- data/bin/rspecs +10 -0
- data/bin/rspecs_parallel +111 -0
- data/docker-compose.yml +1 -1
- data/karafka-web.gemspec +35 -35
- data/lib/karafka/web/cli/base.rb +2 -2
- data/lib/karafka/web/cli/help.rb +2 -2
- data/lib/karafka/web/cli/install.rb +3 -3
- data/lib/karafka/web/cli/migrate.rb +3 -3
- data/lib/karafka/web/cli/reset.rb +3 -3
- data/lib/karafka/web/cli/uninstall.rb +1 -1
- data/lib/karafka/web/config.rb +40 -32
- data/lib/karafka/web/contracts/base.rb +2 -2
- data/lib/karafka/web/deserializer.rb +5 -5
- data/lib/karafka/web/installer.rb +14 -14
- data/lib/karafka/web/management/actions/base.rb +5 -5
- data/lib/karafka/web/management/actions/clean_boot_file.rb +3 -3
- data/lib/karafka/web/management/actions/create_initial_states.rb +8 -8
- data/lib/karafka/web/management/actions/enable.rb +3 -3
- data/lib/karafka/web/management/actions/extend_boot_file.rb +3 -3
- data/lib/karafka/web/management/migrations/base.rb +3 -3
- data/lib/karafka/web/management/migrations/consumers_metrics/0_set_initial.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1699543515_fill_missing_received_and_sent_bytes.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1700234522_introduce_waiting.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1700234522_remove_processing.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1704722380_split_listeners_into_active_and_paused.rb +7 -7
- data/lib/karafka/web/management/migrations/consumers_metrics/1706607960_introduce_lag_total.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1706611396_rename_lag_total_to_lag_hybrid.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1716218393_populate_jobs_metrics.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_reports/1761645571_rename_process_name_to_id.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_reports/1765657887_add_group_instance_id_to_subscription_groups.rb +42 -0
- data/lib/karafka/web/management/migrations/consumers_states/0_set_initial.rb +2 -2
- data/lib/karafka/web/management/migrations/consumers_states/1699543515_fill_missing_received_and_sent_bytes.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1700234522_introduce_waiting.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1700234522_remove_processing.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1704722380_split_listeners_into_active_and_paused.rb +7 -7
- data/lib/karafka/web/management/migrations/consumers_states/1706607960_introduce_lag_total.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1706611396_rename_lag_total_to_lag_hybrid.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1716218393_add_jobs_counter.rb +1 -1
- data/lib/karafka/web/management/migrator.rb +2 -2
- data/lib/karafka/web/pro/commanding/commands/base.rb +20 -4
- data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +22 -5
- data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +22 -5
- data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +21 -4
- data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +20 -3
- data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +20 -3
- data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +20 -3
- data/lib/karafka/web/pro/commanding/commands/topics/pause.rb +48 -0
- data/lib/karafka/web/pro/commanding/commands/topics/resume.rb +49 -0
- data/lib/karafka/web/pro/commanding/config.rb +23 -5
- data/lib/karafka/web/pro/commanding/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/commanding/dispatcher.rb +61 -26
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +20 -3
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +21 -4
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +20 -3
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +24 -7
- data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +36 -12
- data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +47 -8
- data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -13
- data/lib/karafka/web/pro/commanding/handlers/topics/commands/base.rb +109 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/commands/pause.rb +76 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/commands/resume.rb +56 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/executor.rb +75 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/listener.rb +82 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/tracker.rb +81 -0
- data/lib/karafka/web/pro/commanding/listener.rb +23 -6
- data/lib/karafka/web/pro/commanding/manager.rb +44 -23
- data/lib/karafka/web/pro/commanding/matcher.rb +46 -18
- data/lib/karafka/web/pro/commanding/matchers/base.rb +87 -0
- data/lib/karafka/web/pro/commanding/matchers/consumer_group_id.rb +58 -0
- data/lib/karafka/web/pro/commanding/matchers/message_type.rb +49 -0
- data/lib/karafka/web/pro/commanding/matchers/partition_id.rb +61 -0
- data/lib/karafka/web/pro/commanding/matchers/process_id.rb +58 -0
- data/lib/karafka/web/pro/commanding/matchers/schema_version.rb +44 -0
- data/lib/karafka/web/pro/commanding/matchers/topic.rb +58 -0
- data/lib/karafka/web/pro/commanding/request.rb +19 -2
- data/lib/karafka/web/pro/commanding.rb +19 -2
- data/lib/karafka/web/pro/loader.rb +20 -3
- data/lib/karafka/web/pro/ui/app.rb +25 -8
- data/lib/karafka/web/pro/ui/controllers/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +37 -15
- data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +23 -6
- data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +43 -42
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +36 -17
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +59 -33
- data/lib/karafka/web/pro/ui/controllers/consumers/topics/pauses_controller.rb +164 -0
- data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +26 -9
- data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +25 -9
- data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +22 -5
- data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +26 -9
- data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +23 -6
- data/lib/karafka/web/pro/ui/controllers/health_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +22 -5
- data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +25 -8
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +21 -4
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +26 -9
- data/lib/karafka/web/pro/ui/controllers/status_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/support_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +20 -3
- data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +20 -3
- data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +41 -2
- data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +24 -7
- data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/branding/config.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/branding.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/features.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/policies/config.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/policies/messages.rb +20 -3
- data/lib/karafka/web/pro/ui/lib/policies/requests.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/policies.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/safe_runner.rb +20 -3
- data/lib/karafka/web/pro/ui/lib/search/config.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +24 -6
- data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +20 -3
- data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +26 -9
- data/lib/karafka/web/pro/ui/lib/search/runner.rb +33 -16
- data/lib/karafka/web/pro/ui/lib/search.rb +19 -2
- data/lib/karafka/web/pro/ui/routes/base.rb +19 -2
- data/lib/karafka/web/pro/ui/routes/cluster.rb +21 -4
- data/lib/karafka/web/pro/ui/routes/consumers.rb +83 -49
- data/lib/karafka/web/pro/ui/routes/dashboard.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/dlq.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/errors.rb +21 -4
- data/lib/karafka/web/pro/ui/routes/explorer.rb +33 -16
- data/lib/karafka/web/pro/ui/routes/health.rb +26 -9
- data/lib/karafka/web/pro/ui/routes/jobs.rb +23 -6
- data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +29 -12
- data/lib/karafka/web/pro/ui/routes/routing.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +28 -11
- data/lib/karafka/web/pro/ui/routes/status.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/support.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/topics.rb +29 -12
- data/lib/karafka/web/pro/ui/routes/ux.rb +20 -3
- data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/_config.erb +14 -3
- data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_backtrace.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_command.erb +24 -66
- data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_incompatible_command.erb +19 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/_incompatible_schema.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_table.erb +15 -4
- data/lib/karafka/web/pro/ui/views/consumers/commands/details/_acceptance.erb +19 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/details/_request.erb +19 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/details/_result.erb +27 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/metadata/_request.erb +52 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/metadata/_response.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_command_name_badge.erb +40 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_request.erb +47 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_response.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +14 -15
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performance.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_metrics.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition.erb +15 -5
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +16 -5
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_stopped.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_subscription_group.erb +31 -7
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/performance.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/controls/_controls.erb +14 -3
- data/lib/karafka/web/pro/ui/views/consumers/controls/index.erb +35 -7
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_job.erb +14 -3
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_no_jobs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/jobs/pending.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/jobs/running.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +20 -13
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +37 -46
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +25 -14
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +17 -6
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +14 -3
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +40 -48
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +18 -8
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +22 -11
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_partition_info.erb +57 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +16 -5
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +16 -5
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_adjusting_warning.erb +38 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_breadcrumbs.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_edit_form.erb +66 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_lrj_not_manageable.erb +30 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_new_form.erb +86 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_not_running.erb +27 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_topic_info.erb +72 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/edit.erb +29 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/new.erb +29 -0
- data/lib/karafka/web/pro/ui/views/dashboard/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/errors/_error.erb +14 -3
- data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +18 -5
- data/lib/karafka/web/pro/ui/views/errors/_selector.erb +14 -3
- data/lib/karafka/web/pro/ui/views/errors/_table.erb +14 -3
- data/lib/karafka/web/pro/ui/views/errors/index.erb +39 -26
- data/lib/karafka/web/pro/ui/views/errors/partition.erb +50 -37
- data/lib/karafka/web/pro/ui/views/errors/show.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_failed_deserialization.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_filtered.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_message.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_partition_option.erb +18 -5
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_selector.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_metadata.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_payload.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_resources_utilization.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_too_big_to_be_displayed.erb +15 -4
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_detail.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_key.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_messages.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +15 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition.erb +52 -39
- data/lib/karafka/web/pro/ui/views/explorer/explorer/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_actions.erb +39 -26
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_limited.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +28 -16
- data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_metadata.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_no_search_criteria.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_search_criteria.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/search/_search_modal.erb +27 -15
- data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_no_data.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_no_partition_data.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partition.erb +22 -6
- data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partitions_with_fallback.erb +15 -2
- data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_topic_edit_options.erb +64 -0
- data/lib/karafka/web/pro/ui/views/health/changes.erb +14 -2
- data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/lags.erb +14 -2
- data/lib/karafka/web/pro/ui/views/health/offsets.erb +14 -2
- data/lib/karafka/web/pro/ui/views/health/overview.erb +29 -5
- data/lib/karafka/web/pro/ui/views/jobs/_job.erb +14 -3
- data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/jobs/pending.erb +13 -2
- data/lib/karafka/web/pro/ui/views/jobs/running.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +14 -3
- data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +14 -3
- data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +14 -3
- data/lib/karafka/web/pro/ui/views/routing/_detail.erb +13 -2
- data/lib/karafka/web/pro/ui/views/routing/_topic.erb +14 -3
- data/lib/karafka/web/pro/ui/views/routing/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/routing/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_cancel.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_compacted.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_schedule.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_tombstone.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_unknown.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +52 -39
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +14 -3
- data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +14 -3
- data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +13 -2
- data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +13 -2
- data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +14 -3
- data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +17 -6
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +21 -10
- data/lib/karafka/web/pro/ui/views/topics/configs/index.erb +14 -3
- data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_badges.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_chart.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +18 -6
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_limited.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/offsets/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/_metric_box.erb +20 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_partition.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/_replication_info.erb +65 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_resilience_success.erb +24 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_warning_low_durability.erb +67 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_warning_no_redundancy.erb +66 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_warning_zero_fault_tolerance.erb +67 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/show.erb +15 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +25 -11
- data/lib/karafka/web/pro/ui/views/topics/topics/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +13 -2
- data/lib/karafka/web/processing/consumer.rb +1 -1
- data/lib/karafka/web/processing/consumers/aggregators/metrics.rb +11 -11
- data/lib/karafka/web/processing/consumers/aggregators/state.rb +4 -3
- data/lib/karafka/web/processing/consumers/reports_migrator.rb +2 -2
- data/lib/karafka/web/processing/consumers/schema_manager.rb +1 -1
- data/lib/karafka/web/processing/publisher.rb +2 -2
- data/lib/karafka/web/producer.rb +61 -0
- data/lib/karafka/web/tracking/consumers/contracts/report.rb +2 -2
- data/lib/karafka/web/tracking/consumers/contracts/subscription_group.rb +1 -0
- data/lib/karafka/web/tracking/consumers/listeners/booting.rb +1 -1
- data/lib/karafka/web/tracking/consumers/listeners/connections.rb +7 -2
- data/lib/karafka/web/tracking/consumers/listeners/errors.rb +10 -10
- data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +1 -1
- data/lib/karafka/web/tracking/consumers/listeners/processing.rb +25 -25
- data/lib/karafka/web/tracking/consumers/listeners/statistics.rb +35 -35
- data/lib/karafka/web/tracking/consumers/reporter.rb +2 -2
- data/lib/karafka/web/tracking/consumers/sampler/enrichers/consumer_groups.rb +1 -0
- data/lib/karafka/web/tracking/consumers/sampler/metrics/base.rb +2 -1
- data/lib/karafka/web/tracking/consumers/sampler/metrics/container.rb +15 -15
- data/lib/karafka/web/tracking/consumers/sampler/metrics/network.rb +6 -6
- data/lib/karafka/web/tracking/consumers/sampler/metrics/os.rb +41 -37
- data/lib/karafka/web/tracking/consumers/sampler.rb +7 -7
- data/lib/karafka/web/tracking/helpers/error_info.rb +10 -10
- data/lib/karafka/web/tracking/helpers/sysconf.rb +2 -2
- data/lib/karafka/web/tracking/helpers/ttls/array.rb +1 -1
- data/lib/karafka/web/tracking/helpers/ttls/hash.rb +1 -1
- data/lib/karafka/web/tracking/helpers/ttls/stats.rb +4 -4
- data/lib/karafka/web/tracking/producers/listeners/booting.rb +1 -1
- data/lib/karafka/web/tracking/producers/listeners/errors.rb +2 -2
- data/lib/karafka/web/tracking/producers/reporter.rb +2 -2
- data/lib/karafka/web/tracking/producers/sampler.rb +1 -1
- data/lib/karafka/web/tracking/ui/errors.rb +4 -4
- data/lib/karafka/web/ui/app.rb +2 -2
- data/lib/karafka/web/ui/base.rb +30 -30
- data/lib/karafka/web/ui/controllers/base_controller.rb +24 -24
- data/lib/karafka/web/ui/controllers/cluster_controller.rb +3 -3
- data/lib/karafka/web/ui/controllers/requests/params.rb +6 -6
- data/lib/karafka/web/ui/helpers/application_helper.rb +59 -59
- data/lib/karafka/web/ui/helpers/paths_helper.rb +15 -7
- data/lib/karafka/web/ui/helpers/tailwind_helper.rb +6 -6
- data/lib/karafka/web/ui/helpers/time_helper.rb +1 -1
- data/lib/karafka/web/ui/helpers/topics_helper.rb +4 -4
- data/lib/karafka/web/ui/lib/admin.rb +2 -2
- data/lib/karafka/web/ui/lib/paginations/base.rb +7 -7
- data/lib/karafka/web/ui/lib/paginations/offset_based.rb +2 -2
- data/lib/karafka/web/ui/lib/paginations/page_based.rb +1 -1
- data/lib/karafka/web/ui/lib/paginations/paginators/arrays.rb +3 -3
- data/lib/karafka/web/ui/lib/paginations/watermark_offsets_based.rb +1 -1
- data/lib/karafka/web/ui/lib/sorter.rb +2 -2
- data/lib/karafka/web/ui/models/counters.rb +1 -1
- data/lib/karafka/web/ui/models/health.rb +1 -0
- data/lib/karafka/web/ui/models/jobs.rb +2 -2
- data/lib/karafka/web/ui/models/message.rb +9 -9
- data/lib/karafka/web/ui/models/metrics/charts/aggregated.rb +3 -3
- data/lib/karafka/web/ui/models/metrics/charts/topics.rb +3 -3
- data/lib/karafka/web/ui/models/metrics/topics.rb +8 -8
- data/lib/karafka/web/ui/models/processes.rb +3 -3
- data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +2 -2
- data/lib/karafka/web/ui/models/status/checks/base.rb +127 -0
- data/lib/karafka/web/ui/models/status/checks/commands_topic_presence.rb +52 -0
- data/lib/karafka/web/ui/models/status/checks/connection.rb +68 -0
- data/lib/karafka/web/ui/models/status/checks/consumers_reports.rb +34 -0
- data/lib/karafka/web/ui/models/status/checks/consumers_reports_schema_state.rb +32 -0
- data/lib/karafka/web/ui/models/status/checks/consumers_schemas.rb +44 -0
- data/lib/karafka/web/ui/models/status/checks/enabled.rb +39 -0
- data/lib/karafka/web/ui/models/status/checks/initial_consumers_metrics.rb +48 -0
- data/lib/karafka/web/ui/models/status/checks/initial_consumers_state.rb +48 -0
- data/lib/karafka/web/ui/models/status/checks/live_reporting.rb +31 -0
- data/lib/karafka/web/ui/models/status/checks/materializing_lag.rb +49 -0
- data/lib/karafka/web/ui/models/status/checks/partitions.rb +45 -0
- data/lib/karafka/web/ui/models/status/checks/pro_subscription.rb +29 -0
- data/lib/karafka/web/ui/models/status/checks/replication.rb +51 -0
- data/lib/karafka/web/ui/models/status/checks/routing_topics_presence.rb +53 -0
- data/lib/karafka/web/ui/models/status/checks/state_calculation.rb +39 -0
- data/lib/karafka/web/ui/models/status/checks/topics.rb +44 -0
- data/lib/karafka/web/ui/models/status/context.rb +142 -0
- data/lib/karafka/web/ui/models/status/step.rb +64 -0
- data/lib/karafka/web/ui/models/status.rb +70 -356
- data/lib/karafka/web/ui/models/topic.rb +2 -2
- data/lib/karafka/web/ui/public/javascripts/application.min.js +1 -1
- data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
- data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
- data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +2 -2
- data/lib/karafka/web/ui/public/stylesheets/application.min.css +4660 -2524
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +62 -3
- data/lib/karafka/web/ui/routes/assets.rb +7 -7
- data/lib/karafka/web/ui/routes/cluster.rb +4 -4
- data/lib/karafka/web/ui/routes/consumers.rb +2 -2
- data/lib/karafka/web/ui/routes/dashboard.rb +1 -1
- data/lib/karafka/web/ui/routes/errors.rb +2 -2
- data/lib/karafka/web/ui/routes/jobs.rb +4 -4
- data/lib/karafka/web/ui/routes/routing.rb +1 -1
- data/lib/karafka/web/ui/routes/status.rb +1 -1
- data/lib/karafka/web/ui/routes/support.rb +1 -1
- data/lib/karafka/web/ui/routes/ux.rb +1 -1
- data/lib/karafka/web/ui/views/cluster/_partition.erb +1 -0
- data/lib/karafka/web/ui/views/dashboard/_counters.erb +16 -16
- data/lib/karafka/web/ui/views/errors/_detail.erb +2 -3
- data/lib/karafka/web/ui/views/errors/_error.erb +1 -1
- data/lib/karafka/web/ui/views/errors/index.erb +1 -1
- data/lib/karafka/web/ui/views/errors/show.erb +1 -1
- data/lib/karafka/web/ui/views/jobs/_job.erb +1 -1
- data/lib/karafka/web/ui/views/layout.erb +1 -1
- data/lib/karafka/web/ui/views/routing/_consumer_group.erb +1 -1
- data/lib/karafka/web/ui/views/routing/_topic.erb +1 -1
- data/lib/karafka/web/ui/views/shared/_header.erb +5 -5
- data/lib/karafka/web/ui/views/shared/_navigation.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_error.erb +2 -2
- data/lib/karafka/web/ui/views/shared/alerts/_info.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_success.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +2 -2
- data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +3 -3
- data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +4 -4
- data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -4
- data/lib/karafka/web/ui/views/shared/exceptions/unhandled_error.erb +4 -4
- data/lib/karafka/web/ui/views/status/show.erb +15 -0
- data/lib/karafka/web/ui/views/status/warnings/_commands_topic_presence.erb +14 -0
- data/lib/karafka/web/ui/views/ux/_code.erb +0 -1
- data/lib/karafka/web/ui/views/ux/_data_table.erb +79 -0
- data/lib/karafka/web/ui/views/ux/_headers.erb +1 -1
- data/lib/karafka/web/ui/views/ux/_pagination.erb +1 -1
- data/lib/karafka/web/version.rb +1 -1
- data/lib/karafka/web.rb +17 -17
- data/package-lock.json +480 -92
- data/package.json +3 -1
- data/renovate.json +12 -11
- data/tailwind.config.js +4 -7
- metadata +72 -3
- data/lib/karafka/web/pro/ui/views/consumers/commands/_metadata.erb +0 -44
|
Binary file
|
|
Binary file
|
|
@@ -6,6 +6,45 @@
|
|
|
6
6
|
|
|
7
7
|
@config '../../../../../../../tailwind.config.js';
|
|
8
8
|
|
|
9
|
+
/*
|
|
10
|
+
Safelist using @source inline() - Tailwind v4.1+ feature
|
|
11
|
+
Uses brace expansion syntax for patterns
|
|
12
|
+
Note: Regex patterns in tailwind.config.js safelist do NOT work with @tailwindcss/postcss
|
|
13
|
+
Reference: https://tailwindcss.com/docs/detecting-classes-in-source-files#safelisting-specific-utilities
|
|
14
|
+
*/
|
|
15
|
+
@source inline('badge{,-xs,-sm,-lg,-outline,-ghost,-info,-error,-warning,-success,-primary,-secondary,-neutral,-accent}');
|
|
16
|
+
@source inline('alert{,-info,-error,-warning,-success,-primary,-secondary}');
|
|
17
|
+
@source inline('btn{,-xs,-sm,-md,-lg,-square,-circle,-ghost,-outline,-link,-active,-disabled,-info,-error,-warning,-success,-primary,-secondary,-neutral,-accent}');
|
|
18
|
+
@source inline('bg-{base-100,base-200,base-300,info,error,warning,success,primary,secondary,neutral,accent}');
|
|
19
|
+
@source inline('status-row-{warning,error,success,info,quiet,quieting,running,stopped,stopping,pending}');
|
|
20
|
+
@source inline('menu{,-xs,-sm,-md,-lg,-horizontal,-vertical,-compact,-active}');
|
|
21
|
+
@source inline('card{,-body,-title,-actions,-compact,-bordered,-side}');
|
|
22
|
+
@source inline('toggle{,-xs,-sm,-md,-lg,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
23
|
+
@source inline('input{,-xs,-sm,-md,-lg,-bordered,-ghost,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
24
|
+
@source inline('textarea{,-xs,-sm,-md,-lg,-bordered,-ghost,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
25
|
+
@source inline('select{,-xs,-sm,-md,-lg,-bordered,-ghost,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
26
|
+
@source inline('checkbox{,-xs,-sm,-md,-lg,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
27
|
+
@source inline('radio{,-xs,-sm,-md,-lg,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
28
|
+
@source inline('link{,-primary,-secondary,-accent,-success,-warning,-error,-info,-hover}');
|
|
29
|
+
@source inline('table{,-xs,-sm,-md,-lg,-zebra,-pin-rows,-pin-cols}');
|
|
30
|
+
@source inline('tooltip{,-open,-top,-bottom,-left,-right,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
31
|
+
@source inline('modal{,-open,-top,-bottom,-middle}');
|
|
32
|
+
@source inline('dropdown{,-open,-top,-bottom,-left,-right,-end,-hover}');
|
|
33
|
+
@source inline('tabs{,-boxed,-bordered,-lifted}');
|
|
34
|
+
@source inline('tab{,-active,-disabled,-bordered,-lifted}');
|
|
35
|
+
@source inline('collapse{,-open,-close,-arrow,-plus}');
|
|
36
|
+
@source inline('progress{,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
37
|
+
@source inline('radial-progress');
|
|
38
|
+
@source inline('loading{,-spinner,-dots,-ring,-ball,-bars,-infinity}');
|
|
39
|
+
@source inline('divider{,-horizontal,-vertical,-start,-end,-neutral,-primary,-secondary,-accent,-success,-warning,-error,-info}');
|
|
40
|
+
@source inline('drawer{,-open,-end,-side}');
|
|
41
|
+
@source inline('navbar{,-start,-center,-end}');
|
|
42
|
+
@source inline('breadcrumbs');
|
|
43
|
+
@source inline('steps{,-horizontal,-vertical}');
|
|
44
|
+
@source inline('step{,-primary,-secondary,-accent,-success,-warning,-error,-info,-neutral}');
|
|
45
|
+
@source inline('form-control');
|
|
46
|
+
@source inline('label{,-text,-text-alt}');
|
|
47
|
+
|
|
9
48
|
/*
|
|
10
49
|
The default border color has changed to `currentColor` in Tailwind CSS v4,
|
|
11
50
|
so we've added these compatibility styles to make sure everything still
|
|
@@ -312,7 +351,11 @@
|
|
|
312
351
|
}
|
|
313
352
|
|
|
314
353
|
& td:has(.btn) {
|
|
315
|
-
@apply text-
|
|
354
|
+
@apply text-right;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
& th:has(.btn) {
|
|
358
|
+
@apply text-right;
|
|
316
359
|
}
|
|
317
360
|
}
|
|
318
361
|
|
|
@@ -322,12 +365,21 @@
|
|
|
322
365
|
|
|
323
366
|
@utility btn {
|
|
324
367
|
.data-table td:has(&) {
|
|
325
|
-
@apply text-
|
|
368
|
+
@apply text-right;
|
|
326
369
|
}
|
|
327
370
|
|
|
328
371
|
.row-table td:has(&) {
|
|
329
|
-
@apply text-
|
|
372
|
+
@apply text-right;
|
|
330
373
|
}
|
|
374
|
+
|
|
375
|
+
.data-table th:has(&) {
|
|
376
|
+
@apply text-right;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.row-table th:has(&) {
|
|
380
|
+
@apply text-right;
|
|
381
|
+
}
|
|
382
|
+
|
|
331
383
|
@apply font-normal;
|
|
332
384
|
}
|
|
333
385
|
|
|
@@ -748,6 +800,13 @@ tr:not(:first-child) th[colspan]:not([colspan="1"]) {
|
|
|
748
800
|
@apply text-center;
|
|
749
801
|
}
|
|
750
802
|
|
|
803
|
+
table th.options,
|
|
804
|
+
table td.options {
|
|
805
|
+
width: 1%;
|
|
806
|
+
white-space: nowrap;
|
|
807
|
+
@apply text-right;
|
|
808
|
+
}
|
|
809
|
+
|
|
751
810
|
#controls {
|
|
752
811
|
button {
|
|
753
812
|
&:hover {
|
|
@@ -10,15 +10,15 @@ module Karafka
|
|
|
10
10
|
route do |r|
|
|
11
11
|
# Serves current version specific assets to prevent users from fetching old assets
|
|
12
12
|
# after upgrade.
|
|
13
|
-
r.on
|
|
13
|
+
r.on "assets", Karafka::Web::VERSION do
|
|
14
14
|
custom_css = Karafka::Web.config.ui.custom.css
|
|
15
15
|
|
|
16
16
|
# If there are custom css styles and js inserted via the config we should display
|
|
17
17
|
# them. They can be either files or just content.
|
|
18
18
|
if custom_css
|
|
19
|
-
r.get(
|
|
20
|
-
response[
|
|
21
|
-
response[
|
|
19
|
+
r.get("stylesheets/custom.css") do
|
|
20
|
+
response["Content-Type"] = "text/css"
|
|
21
|
+
response["Cache-Control"] = "max-age=31536000, immutable"
|
|
22
22
|
|
|
23
23
|
if File.exist?(custom_css) && File.file?(custom_css)
|
|
24
24
|
File.read(custom_css)
|
|
@@ -31,9 +31,9 @@ module Karafka
|
|
|
31
31
|
custom_js = Karafka::Web.config.ui.custom.js
|
|
32
32
|
|
|
33
33
|
if custom_js
|
|
34
|
-
r.get(
|
|
35
|
-
response[
|
|
36
|
-
response[
|
|
34
|
+
r.get("javascripts/custom.js") do
|
|
35
|
+
response["Content-Type"] = "application/javascript"
|
|
36
|
+
response["Cache-Control"] = "max-age=31536000, immutable"
|
|
37
37
|
|
|
38
38
|
if File.exist?(custom_js) && File.file?(custom_js)
|
|
39
39
|
File.read(custom_js)
|
|
@@ -7,18 +7,18 @@ module Karafka
|
|
|
7
7
|
# Manages the cluster related routes
|
|
8
8
|
class Cluster < Base
|
|
9
9
|
route do |r|
|
|
10
|
-
r.on
|
|
10
|
+
r.on "cluster" do
|
|
11
11
|
controller = build(Controllers::ClusterController)
|
|
12
12
|
|
|
13
|
-
r.get
|
|
13
|
+
r.get "brokers" do
|
|
14
14
|
controller.brokers
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
r.get
|
|
17
|
+
r.get "replication" do
|
|
18
18
|
controller.replication
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
r.redirect root_path(
|
|
21
|
+
r.redirect root_path("cluster/brokers")
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -7,7 +7,7 @@ module Karafka
|
|
|
7
7
|
# Manages the consumers related routes
|
|
8
8
|
class Consumers < Base
|
|
9
9
|
route do |r|
|
|
10
|
-
r.on
|
|
10
|
+
r.on "consumers" do
|
|
11
11
|
%w[
|
|
12
12
|
performance
|
|
13
13
|
controls
|
|
@@ -18,7 +18,7 @@ module Karafka
|
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
r.get String,
|
|
21
|
+
r.get String, "subscriptions" do |_process_id|
|
|
22
22
|
raise ::Karafka::Web::Errors::Ui::ProOnlyError
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -7,14 +7,14 @@ module Karafka
|
|
|
7
7
|
# Manages the errors related routes
|
|
8
8
|
class Errors < Base
|
|
9
9
|
route do |r|
|
|
10
|
-
r.on
|
|
10
|
+
r.on "errors" do
|
|
11
11
|
controller = build(Controllers::ErrorsController)
|
|
12
12
|
|
|
13
13
|
r.get Integer do |offset|
|
|
14
14
|
if params.current_offset == -1
|
|
15
15
|
controller.show(offset)
|
|
16
16
|
else
|
|
17
|
-
r.redirect root_path(
|
|
17
|
+
r.redirect root_path("errors", params.current_offset)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -7,18 +7,18 @@ module Karafka
|
|
|
7
7
|
# Manages the jobs related routes
|
|
8
8
|
class Jobs < Base
|
|
9
9
|
route do |r|
|
|
10
|
-
r.on
|
|
10
|
+
r.on "jobs" do
|
|
11
11
|
controller = build(Controllers::JobsController)
|
|
12
12
|
|
|
13
|
-
r.get
|
|
13
|
+
r.get "running" do
|
|
14
14
|
controller.running
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
r.get
|
|
17
|
+
r.get "pending" do
|
|
18
18
|
controller.pending
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
r.redirect root_path(
|
|
21
|
+
r.redirect root_path("jobs/running")
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div id="refreshable" class="col-span-12 mb-10">
|
|
2
|
-
<div class="card bg-base-100 border border-
|
|
2
|
+
<div class="card bg-base-100 border border-base-300 rounded-md">
|
|
3
3
|
<div class="card-body p-2 text-sm">
|
|
4
4
|
<div class="w-full">
|
|
5
5
|
<ul class="list-none grid grid-cols-2 md:grid-cols-3 lg:grid-cols-9 text-center gap-4 mb-0 mt-0">
|
|
@@ -7,66 +7,66 @@
|
|
|
7
7
|
<div class="count mb-1 text-md">
|
|
8
8
|
<%= number_with_delimiter @counters.messages, ' ' %>
|
|
9
9
|
</div>
|
|
10
|
-
<div class="desc text-
|
|
10
|
+
<div class="desc text-base-content/70">Messages</div>
|
|
11
11
|
</li>
|
|
12
12
|
<li class="p-1">
|
|
13
13
|
<div class="count mb-1 text-md">
|
|
14
14
|
<%= number_with_delimiter @counters.batches, ' ' %>
|
|
15
15
|
</div>
|
|
16
|
-
<div class="desc text-
|
|
16
|
+
<div class="desc text-base-content/70">Batches</div>
|
|
17
17
|
</li>
|
|
18
18
|
<li class="p-1">
|
|
19
|
-
<a href="<%= root_path('jobs/running') %>" class="hover:text-
|
|
19
|
+
<a href="<%= root_path('jobs/running') %>" class="hover:text-primary">
|
|
20
20
|
<div class="count mb-1 text-md">
|
|
21
21
|
<%= number_with_delimiter @counters.jobs, ' ' %>
|
|
22
22
|
</div>
|
|
23
|
-
<div class="desc text-
|
|
23
|
+
<div class="desc text-base-content/70">Jobs</div>
|
|
24
24
|
</a>
|
|
25
25
|
</li>
|
|
26
26
|
<li class="p-1">
|
|
27
|
-
<a href="<%= root_path('health/lags') %>" class="hover:text-
|
|
27
|
+
<a href="<%= root_path('health/lags') %>" class="hover:text-primary">
|
|
28
28
|
<div class="count mb-1 text-md">
|
|
29
29
|
<%= number_with_delimiter @counters.lag_hybrid, ' ' %>
|
|
30
30
|
</div>
|
|
31
|
-
<div class="desc text-
|
|
31
|
+
<div class="desc text-base-content/70">Total lag</div>
|
|
32
32
|
</a>
|
|
33
33
|
</li>
|
|
34
34
|
<li class="p-1">
|
|
35
|
-
<a href="<%= root_path('jobs/running') %>" class="hover:text-
|
|
35
|
+
<a href="<%= root_path('jobs/running') %>" class="hover:text-primary">
|
|
36
36
|
<div class="count mb-1 text-md">
|
|
37
37
|
<%= number_with_delimiter @counters.busy, ' ' %>
|
|
38
38
|
</div>
|
|
39
|
-
<div class="desc text-
|
|
39
|
+
<div class="desc text-base-content/70">Running</div>
|
|
40
40
|
</a>
|
|
41
41
|
</li>
|
|
42
42
|
<li class="p-1">
|
|
43
|
-
<a href="<%= root_path('jobs/pending') %>" class="hover:text-
|
|
43
|
+
<a href="<%= root_path('jobs/pending') %>" class="hover:text-primary">
|
|
44
44
|
<div class="count mb-1 text-md">
|
|
45
45
|
<%= number_with_delimiter @counters.pending, ' ' %>
|
|
46
46
|
</div>
|
|
47
|
-
<div class="desc text-
|
|
47
|
+
<div class="desc text-base-content/70">Pending</div>
|
|
48
48
|
</a>
|
|
49
49
|
</li>
|
|
50
50
|
<li class="p-1">
|
|
51
|
-
<a href="<%= root_path('errors') %>" class="hover:text-
|
|
51
|
+
<a href="<%= root_path('errors') %>" class="hover:text-primary">
|
|
52
52
|
<div class="count mb-1 text-md">
|
|
53
53
|
<%= number_with_delimiter @counters.errors, ' ' %>
|
|
54
54
|
</div>
|
|
55
|
-
<div class="desc text-
|
|
55
|
+
<div class="desc text-base-content/70">Errors</div>
|
|
56
56
|
</a>
|
|
57
57
|
</li>
|
|
58
58
|
<li class="p-1">
|
|
59
59
|
<div class="count mb-1 text-md">
|
|
60
60
|
<%= number_with_delimiter @counters.retries, ' ' %>
|
|
61
61
|
</div>
|
|
62
|
-
<div class="desc text-
|
|
62
|
+
<div class="desc text-base-content/70">Retries</div>
|
|
63
63
|
</li>
|
|
64
64
|
<li class="p-1">
|
|
65
|
-
<a href="<%= root_path('dlq') %>" class="hover:text-
|
|
65
|
+
<a href="<%= root_path('dlq') %>" class="hover:text-primary">
|
|
66
66
|
<div class="count mb-1 text-md">
|
|
67
67
|
<%= number_with_delimiter @counters.dead, ' ' %>
|
|
68
68
|
</div>
|
|
69
|
-
<div class="desc text-
|
|
69
|
+
<div class="desc text-base-content/70">Dead</div>
|
|
70
70
|
</a>
|
|
71
71
|
</li>
|
|
72
72
|
</ul>
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
Backtrace
|
|
37
37
|
</h2>
|
|
38
38
|
|
|
39
|
-
<pre class="mb-5 p-0 border border-
|
|
39
|
+
<pre class="mb-5 p-0 border border-base-300 text-sm"><code class="wrapped json p-0 m-0"><%= @error_message.payload[:backtrace] %></code></pre>
|
|
40
40
|
</div>
|
|
41
41
|
<% else %>
|
|
42
42
|
<% view_title "Offset #{@offset}" %>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
>
|
|
13
13
|
<div class="turbo-progress-bar"></div>
|
|
14
14
|
|
|
15
|
-
<input id="main-drawer" type="checkbox" class="drawer-toggle"
|
|
15
|
+
<input id="main-drawer" type="checkbox" class="drawer-toggle">
|
|
16
16
|
|
|
17
17
|
<aside id="drawer-side" class="drawer-side z-10">
|
|
18
18
|
<label for="main-drawer" class="drawer-overlay"></label>
|
|
@@ -12,15 +12,15 @@
|
|
|
12
12
|
rel="stylesheet"
|
|
13
13
|
href="<%= asset_path('stylesheets/libs/highlight_light.min.css') %>"
|
|
14
14
|
class="highlight-light"
|
|
15
|
-
disabled
|
|
16
|
-
|
|
15
|
+
disabled
|
|
16
|
+
>
|
|
17
17
|
|
|
18
18
|
<link
|
|
19
19
|
rel="stylesheet"
|
|
20
20
|
href="<%= asset_path('stylesheets/libs/highlight_dark.min.css') %>"
|
|
21
21
|
class="highlight-dark"
|
|
22
|
-
disabled
|
|
23
|
-
|
|
22
|
+
disabled
|
|
23
|
+
>
|
|
24
24
|
|
|
25
25
|
<link
|
|
26
26
|
rel="stylesheet"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<link
|
|
32
32
|
rel="stylesheet"
|
|
33
33
|
href="<%= asset_path('stylesheets/custom.css') %>"
|
|
34
|
-
|
|
34
|
+
>
|
|
35
35
|
<% end %>
|
|
36
36
|
|
|
37
37
|
<script
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div class="alert alert-error" role="alert">
|
|
2
|
-
<%== icon :x_circle
|
|
2
|
+
<%== icon :x_circle %>
|
|
3
3
|
<span>
|
|
4
4
|
<%== message %>
|
|
5
5
|
</span>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<% if allow_close %>
|
|
10
10
|
<button type="button" class="close-alert" title="Close this error notice">
|
|
11
|
-
<%== icon :x_mark
|
|
11
|
+
<%== icon :x_mark %>
|
|
12
12
|
</button>
|
|
13
13
|
<% end %>
|
|
14
14
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div class="alert alert-warning" role="alert">
|
|
2
|
-
<%== icon :exclamation_triangle
|
|
2
|
+
<%== icon :exclamation_triangle %>
|
|
3
3
|
<span>
|
|
4
4
|
<%== message %>
|
|
5
5
|
</span>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<% if allow_close %>
|
|
10
10
|
<button type="button" class="close-alert" title="Close this warning notice">
|
|
11
|
-
<%== icon :x_mark
|
|
11
|
+
<%== icon :x_mark %>
|
|
12
12
|
</button>
|
|
13
13
|
<% end %>
|
|
14
14
|
</div>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<h1 class="text-8xl font-bold">403</h1>
|
|
10
10
|
|
|
11
11
|
<p class="text-3xl mt-5">
|
|
12
|
-
<span class="text-
|
|
12
|
+
<span class="text-error">Oops!</span> Not permitted.
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
15
|
<div class="mt-5">
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
<p class="text-lg font-light mb-5">Please make sure, that:</p>
|
|
21
21
|
|
|
22
22
|
<ul class="list-disc text-left text-lg mb-10 pl-5 font-light">
|
|
23
|
-
<li>You have visited the <a href="<%= root_path('status') %>" class="
|
|
23
|
+
<li>You have visited the <a href="<%= root_path('status') %>" class="link link-primary">Status</a> page to troubleshoot any potential issues</li>
|
|
24
24
|
<li>You are authorized to access the resource you requested</li>
|
|
25
25
|
<li>Web UI configuration permits the action you requested</li>
|
|
26
26
|
</ul>
|
|
27
27
|
|
|
28
28
|
<p>
|
|
29
29
|
<a href="<%= root_path %>" class="btn btn-primary mr-2 rounded-md py-1">Go Home</a>
|
|
30
|
-
<a href="<%= root_path('status') %>" class="btn btn-success
|
|
30
|
+
<a href="<%= root_path('status') %>" class="btn btn-success rounded-md">Status page</a>
|
|
31
31
|
</p>
|
|
32
32
|
</div>
|
|
33
33
|
</div>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<h1 class="text-8xl font-bold">404</h1>
|
|
10
10
|
|
|
11
11
|
<p class="text-3xl mt-5">
|
|
12
|
-
<span class="text-
|
|
12
|
+
<span class="text-error">Oops!</span> Page not found.
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
15
|
<div class="mt-5">
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
<p class="text-lg font-light mb-5">Please make sure, that:</p>
|
|
21
21
|
|
|
22
22
|
<ul class="list-disc text-left text-lg mb-10 pl-5 font-light">
|
|
23
|
-
<li>You have visited the <a href="<%= root_path('status') %>" class="
|
|
23
|
+
<li>You have visited the <a href="<%= root_path('status') %>" class="link link-primary">Status</a> page to troubleshoot any potential issues</li>
|
|
24
24
|
<li>All the topics required by Karafka Web exist</li>
|
|
25
|
-
<li>You have used <code class="bg-
|
|
25
|
+
<li>You have used <code class="bg-base-200 px-1 py-0.5 rounded-sm">bundle exec karafka-web migrate</code> to initialize the Web UI</li>
|
|
26
26
|
<li>You have a working connection with your Kafka cluster</li>
|
|
27
27
|
<li>The resource you requested exists</li>
|
|
28
28
|
</ul>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
<p>
|
|
35
35
|
<a href="<%= root_path %>" class="btn btn-primary mr-2 rounded-md py-1">Go Home</a>
|
|
36
|
-
<a href="<%= root_path('status') %>" class="btn btn-success
|
|
36
|
+
<a href="<%= root_path('status') %>" class="btn btn-success rounded-md">Status page</a>
|
|
37
37
|
</p>
|
|
38
38
|
</div>
|
|
39
39
|
</div>
|