From 897c50a055a4ab27c6e9a42ee176ce36c420b372 Mon Sep 17 00:00:00 2001 From: Simon Mayer <simon.mayer@onb.ac.at> Date: Thu, 6 Oct 2022 17:16:20 +0200 Subject: [PATCH] Add completion display for search_to_dataset_worker and proper Sidekiq client configuration --- app/controllers/dataset_controller.rb | 6 +++++- app/javascript/channels/notification_channel.js | 6 ++++++ app/workers/search_to_dataset_worker.rb | 6 ++++++ config/initializers/sidekiq.rb | 12 ++++++++---- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/controllers/dataset_controller.rb b/app/controllers/dataset_controller.rb index e67f613..5360107 100644 --- a/app/controllers/dataset_controller.rb +++ b/app/controllers/dataset_controller.rb @@ -166,7 +166,11 @@ class DatasetController < ApplicationController def add_all_documents SearchToDatasetWorker.perform_async(current_user.id, session[:working_dataset], params[:search_params].to_unsafe_h) title = Dataset.find(session[:working_dataset]).title - message = "<p>Documents are being added to your dataset. You will be notified when the operation is done.</p>" + message = "<p>Documents are being added to your dataset.</p><div class=\"completion-rate mt-2\"> + <div class=\"progress\" id=\"progress-#{session[:working_dataset]}\"> + <div class=\"progress-bar progress-bar-striped\" role=\"progressbar\" style=\"width: 0%;\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\">0%</div> + </div> +</div>" render partial: "shared/notification", locals: { notif_title: title, notif_content: message.html_safe } end diff --git a/app/javascript/channels/notification_channel.js b/app/javascript/channels/notification_channel.js index c820626..7b32a09 100644 --- a/app/javascript/channels/notification_channel.js +++ b/app/javascript/channels/notification_channel.js @@ -41,6 +41,12 @@ consumer.subscriptions.create("NotificationChannel", { progress_bar.attr("aria-valuenow", data.completion) progress_bar.html(`${data.completion}%`) } + if(window.location.pathname.endsWith("/search")) { + const progress_bar = $("#progress-".concat(data.dataset_id)).find('.progress-bar') + progress_bar.attr("style", `width: ${data.completion}%;`) + progress_bar.attr("aria-valuenow", data.completion) + progress_bar.html(`${data.completion}%`) + } break case "experiment_finished": // $("#experiment_status").html(data.message) diff --git a/app/workers/search_to_dataset_worker.rb b/app/workers/search_to_dataset_worker.rb index 2315294..f1126cf 100644 --- a/app/workers/search_to_dataset_worker.rb +++ b/app/workers/search_to_dataset_worker.rb @@ -18,6 +18,12 @@ class SearchToDatasetWorker res = SolrSearcher.query search_params numFound = res["response"]["numFound"] doc_ids.concat res["response"]["docs"].map { |d| d["id"] } + completion = (100 * doc_ids.size / numFound).to_i + ActionCable.server.broadcast("notifications.#{user_id}", { + type: "completion_rate", + dataset_id: dataset_id, + completion: completion, + }) end existing = dataset.add_documents doc_ids nb_docs_added = doc_ids.size - existing.size diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 5b0a95c..cbf6d9b 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -1,5 +1,9 @@ +redis = { url: ENV.fetch("REDIS_URL", "redis://localhost:6379/1") } + Sidekiq.configure_server do |config| - config.redis = { - url: ENV.fetch("REDIS_URL", "redis://localhost:6379/1") - } - end \ No newline at end of file + config.redis = redis +end + +Sidekiq.configure_client do |config| + config.redis = redis +end -- GitLab