Class: Components::ResolveButton

Inherits:
Base
  • Object
show all
Includes:
Phlex::Rails::Helpers::ButtonTo
Defined in:
app/components/resolve_button.rb

Constant Summary collapse

OPTIONS =
{
  show: {
    icon: "box",
    i18n_key: "models.file.open_button.text", # i18n-tasks-use t('models.file.open_button.text')
    button_type: "primary"
  },
  edit: {
    icon: "pencil",
    i18n_key: "general.edit", # i18n-tasks-use t('general.edit')
    button_type: "primary"
  },
  destroy: {
    icon: "trash",
    i18n_key: "general.delete", # i18n-tasks-use t('general.delete')
    button_type: "danger",
    confirm: "%{type}s.destroy.confirm"
  },
  merge: {
    icon: "box-arrow-in-up-left",
    i18n_key: "models.problem.merge_all", # i18n-tasks-use t('models.problem.merge_all')
    button_type: "danger"
  },
  upload: {
    icon: "upload",
    i18n_key: "application.navbar.upload", # i18n-tasks-use t('application.navbar.upload')
    button_type: "primary"
  },
  convert: {
    icon: "arrow-left-right",
    i18n_key: "model_files.show.convert", # i18n-tasks-use t('model_files.show.convert')
    button_type: "warning"
  },
  organize: {
    icon: "folder-check",
    i18n_key: "models.organize.label", # i18n-tasks-use t('models.organize.label')
    button_type: "warning",
    confirm: "models.organize.confirm" # i18n-tasks-use t('models.organize.confirm')
  }
}

Instance Method Summary collapse

Constructor Details

#initialize(problem:, user: nil, inside_form: false) ⇒ ResolveButton

Returns a new instance of ResolveButton.



46
47
48
49
50
# File 'app/components/resolve_button.rb', line 46

def initialize(problem:, user: nil, inside_form: false)
  @problem = problem
  @user = user
  @inside_form = inside_form
end

Instance Method Details

#before_template ⇒ Object



52
53
54
55
# File 'app/components/resolve_button.rb', line 52

def before_template
  @options = OPTIONS[@problem.resolution_strategy.to_sym]
  @text = t @options[:i18n_key]
end

#render? ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'app/components/resolve_button.rb', line 87

def render?
  ProblemPolicy.new(@user, @problem).resolve?
end

#view_template ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'app/components/resolve_button.rb', line 57

def view_template
  if @problem.in_progress
    button_to("#", class: "btn btn-#{@options[:button_type]} disabled") do
      span(class: "spinner-border spinner-border-sm") { Icon(icon: "", label: "") }
      whitespace
      span { @text }
    end
  elsif @inside_form
    GoButton(
      label: @text,
      href: resolve_problem_path(@problem, resolve: true),
      variant: @options[:button_type],
      icon: @options[:icon],
      confirm: @options[:confirm] ? translate(@options[:confirm] % {type: @problem.problematic_type.underscore}) : nil,
      nofollow: true,
      data: {"turbo-method" => "post"}
    )
  else
    DoButton(
      label: @text,
      href: resolve_problem_path(@problem, resolve: true),
      variant: @options[:button_type],
      icon: @options[:icon],
      method: :post,
      confirm: @options[:confirm] ? translate(@options[:confirm] % {type: @problem.problematic_type.underscore}) : nil,
      nofollow: true
    )
  end
end