From 12cacfdf90facebcbda229138053bfebfa592f9f Mon Sep 17 00:00:00 2001 From: James Smith Date: Tue, 5 Nov 2024 12:38:53 +0000 Subject: [PATCH] add indicator for whether problem resolution is in progress --- app/components/resolve_button_component.rb | 36 +++++++++++++------ app/controllers/problems_controller.rb | 2 ++ ...41105121830_add_in_progress_to_problems.rb | 5 +++ db/schema.rb | 3 +- 4 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 db/migrate/20241105121830_add_in_progress_to_problems.rb diff --git a/app/components/resolve_button_component.rb b/app/components/resolve_button_component.rb index a07ed7084..75d5f9fdd 100644 --- a/app/components/resolve_button_component.rb +++ b/app/components/resolve_button_component.rb @@ -50,16 +50,30 @@ class ResolveButtonComponent < ViewComponent::Base def call text = t @options[:i18n_key] - link_to( - safe_join([helpers.icon(@options[:icon], text), text], " "), - resolve_problem_path(@problem), - class: "btn btn-#{@options[:button_type]}", - data: { - confirm: @options[:confirm] ? - translate(@options[:confirm] % {type: @problem.problematic_type.underscore}) : - nil - }, - method: :post - ) + if @problem.in_progress + link_to( + safe_join( + [ + content_tag(:span, helpers.icon("", ""), class: "spinner-border spinner-border-sm"), + content_tag(:span, text) + ], + " " + ), + "#", + class: "btn btn-#{@options[:button_type]} disabled" + ) + else + link_to( + safe_join([helpers.icon(@options[:icon], text), text], " "), + resolve_problem_path(@problem), + class: "btn btn-#{@options[:button_type]}", + data: { + confirm: @options[:confirm] ? + translate(@options[:confirm] % {type: @problem.problematic_type.underscore}) : + nil + }, + method: :post + ) + end end end diff --git a/app/controllers/problems_controller.rb b/app/controllers/problems_controller.rb index 0b60232b5..283cd204d 100644 --- a/app/controllers/problems_controller.rb +++ b/app/controllers/problems_controller.rb @@ -110,6 +110,7 @@ class ProblemsController < ApplicationController def resolve_by_merging(problem) case problem.problematic_type when "Model" + problem.update(in_progress: true) problem.problematic.merge_all_children! else raise NotImplementedError @@ -128,6 +129,7 @@ class ProblemsController < ApplicationController def resolve_by_converting(problem) case problem.problematic_type when "ModelFile" + problem.update(in_progress: true) problem.problematic.convert_to! :threemf else raise NotImplementedError diff --git a/db/migrate/20241105121830_add_in_progress_to_problems.rb b/db/migrate/20241105121830_add_in_progress_to_problems.rb new file mode 100644 index 000000000..f7f045496 --- /dev/null +++ b/db/migrate/20241105121830_add_in_progress_to_problems.rb @@ -0,0 +1,5 @@ +class AddInProgressToProblems < ActiveRecord::Migration[7.1] + def change + add_column :problems, :in_progress, :boolean, default: false, null: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 8fff024c9..253c9e9e7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_10_25_110218) do +ActiveRecord::Schema[7.1].define(version: 2024_11_05_121830) do create_table "caber_relations", force: :cascade do |t| t.string "subject_type" t.integer "subject_id" @@ -240,6 +240,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_25_110218) do t.string "note" t.boolean "ignored", default: false, null: false t.string "public_id" + t.boolean "in_progress", default: false, null: false t.index ["category", "problematic_id", "problematic_type"], name: "index_problems_on_category_and_problematic_id_and_type", unique: true t.index ["problematic_type", "problematic_id"], name: "index_problems_on_problematic" t.index ["public_id"], name: "index_problems_on_public_id"