class Card class Action class ActionRenderer attr_reader :action, :header 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 include ::Bootstrapper def method_missing method_name, *args, &block if block_given? @format.send(method_name, *args, &block) else @format.send(method_name, *args) end end def respond_to_missing? method_name, _include_private=false @format.respond_to? method_name end def render classes = @format.classy("action-list") bs_layout container: true, fluid: true do row do html <<-HTML HTML end end end 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 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 def content_diff return @action.raw_view if @action.action_type == :delete @format.subformat(@action.card).render_action_summary action_id: @action.id end def type_diff return "" unless @action.new_type? @hide_diff ? @action.value(:cardtype) : @action.cardtype_diff end def name_changes return old_name unless @action.new_name? @hide_diff ? new_name : Card::Content::Diff.complete(old_name, new_name) end def old_name (name = @action.previous_value :name) && title_in_context(name) end def new_name title_in_context @action.value(:name) end end end end