class Card::Action::ActionRenderer

Attributes

action[R]
header[R]

Public Class Methods

new(format, action, header=true, action_view=:summary, hide_diff=false) click to toggle source
# File lib/card/action/action_renderer.rb, line 6
def initialize format, action, header=true, action_view=:summary, hide_diff=false
  @format = format
  @action = action
  @header = header
  @action_view = action_view
  @hide_diff = hide_diff
end

Public Instance Methods

action_panel() click to toggle source
# File lib/card/action/action_renderer.rb, line 42
def action_panel
  bs_panel do
    if header
      heading do
        div type_diff, class: "float-right"
        div name_diff
      end
    end
    body do
      content_diff
    end
  end
end
content_diff() click to toggle source
# File lib/card/action/action_renderer.rb, line 68
def content_diff
  return @action.raw_view if @action.action_type == :delete

  @format.subformat(@action.card).render_action_summary action_id: @action.id
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/card/action/action_renderer.rb, line 15
def method_missing method_name, *args, &block
  if block_given?
    @format.send(method_name, *args, &block)
  else
    @format.send(method_name, *args)
  end
end
name_changes() click to toggle source
# File lib/card/action/action_renderer.rb, line 80
def name_changes
  return old_name unless @action.new_name?

  @hide_diff ? new_name : Card::Content::Diff.complete(old_name, new_name)
end
name_diff() click to toggle source
# File lib/card/action/action_renderer.rb, line 56
def name_diff
  if @action.card == @format.card
    name_changes
  else
    link_to_view(
      :related, name_changes,
      path: { slot: { items: { view: "history", nest_name: @action.card.name } } }
      # "data-slot-selector" => ".card-slot.history-view"
    )
  end
end
new_name() click to toggle source
# File lib/card/action/action_renderer.rb, line 90
def new_name
  title_in_context @action.value(:name)
end
old_name() click to toggle source
# File lib/card/action/action_renderer.rb, line 86
def old_name
  (name = @action.previous_value :name) && title_in_context(name)
end
render() click to toggle source
# File lib/card/action/action_renderer.rb, line 27
      def render
        classes = @format.classy("action-list")
        bs_layout container: true, fluid: true do
          row do
            html <<-HTML
              <ul class="#{classes} w-100">
                <li class="#{action.action_type}">
                  #{action_panel}
                </li>
              </ul>
            HTML
          end
        end
      end
respond_to_missing?(method_name, _include_private=false) click to toggle source
# File lib/card/action/action_renderer.rb, line 23
def respond_to_missing? method_name, _include_private=false
  @format.respond_to? method_name
end
type_diff() click to toggle source
# File lib/card/action/action_renderer.rb, line 74
def type_diff
  return "" unless @action.new_type?

  @hide_diff ? @action.value(:cardtype) : @action.cardtype_diff
end