class RuleSetRadio

Attributes

format[R]

Public Class Methods

new(format, set_name, tag, state) click to toggle source

@param state [:current, :overwritten]

# File set/rule/rule_form/rule_set_radio.rb, line 9
def initialize format, set_name, tag, state
  @format = format
  @card = format.card
  @set_name = set_name
  @tag = tag
  @state = state
end

Public Instance Methods

html(narrower) click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 17
def html narrower
  @narrower_rules = narrower

  rule_radio do
    radio_text = "#{@set_name}+#{@tag}"
    radio_button :name, radio_text, checked: false, warning: warning
  end
end

Private Instance Methods

current?() click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 28
def current?
  @state == :current
end
extra_info() click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 50
def extra_info
  case @state
  when :current
    "(current)"
  when :overwritten, :exists
    link_to_card "#{@set_name}+#{@card.rule_user_setting_name}", "(#{@state})",
                 target: "_blank"
  end
end
label() click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 44
def label
  label = Card.fetch(@set_name).label
  label += " <em>#{extra_info}</em>".html_safe if extra_info
  label
end
narrower_warning() click to toggle source

warn user if rule change won't have a effect on the current card because there is a narrower rule

# File set/rule/rule_form/rule_set_radio.rb, line 70
def narrower_warning
  return unless @state.in? %i[current overwritten]

  @narrower_rules << Card.fetch(@set_name).uncapitalized_label
  return unless @state == :overwritten

  narrower_warning_message
end
narrower_warning_message() click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 79
def narrower_warning_message
  plural = @narrower_rules.size > 1 ? "s" : ""
  "This rule will not have any effect on this card unless you delete " \
  "the narrower rule#{plural} for #{@narrower_rules.to_sentence}."
end
overwritten?() click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 32
def overwritten?
  @state == :overwritten
end
rule_radio() { || ... } click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 36
def rule_radio
  label_classes = ["set-label", ("current-set-label" if current?)]
  icon = icon_tag "open_in_new", "link-muted"
  wrap_with :label, class: label_classes.compact.join(" ") do
    [yield, label, link_to_card(@set_name, icon, target: "decko_set")]
  end
end
warning() click to toggle source
# File set/rule/rule_form/rule_set_radio.rb, line 60
def warning
  if @set_name == "*all"
    "This rule will affect all cards! Are you sure?"
  else
    narrower_warning
  end
end