Files
osem/app/views/shared/_object_changes.html.haml
2018-06-01 09:05:21 -07:00

60 lines
2.7 KiB
Plaintext

:ruby
version_item = current_or_last_object_state(version.item_type, version.item_id)
previous_version = version.event == 'create' ? version : (version.reify || version.previous_version)
version_previous_item = current_or_last_object_state(previous_version.try(:item_type), previous_version.try(:item_id))
.col-md-10.col-md-offset-1.changeset{ id: "changeset-#{version.id}" }
%br
%br
%table.table.table-bordered.table-hover
%thead
%tr
%th Updated Attribute
- if version.event != 'create'
%th Previous Value
- if version.event != 'destroy'
%th New Value
- if can? :revert_attribute, version
%th Action
%tbody
- if version.event != 'destroy'
- version.changeset.reject{ |_, values| values[0].blank? && values[1].blank? }.each do |attribute, values|
%tr
%td= attribute
/ If the attribute is an associated model, show the value of the record it corresponds to, not just the ID.
/ Eg. when the version is of an Event, if the attribute is event_type_id it shows
/ Workshop (ID: 116) instead of just 116
- if attribute.include?('_id')
- model_name = attribute.chomp('_id').camelize
- if version.event != 'create'
%td
- associated_object = current_or_last_object_state(model_name, values[0])
= associated_object.try(:title) || associated_object.try(:name)
= values[0].blank? ? '-' : "(ID: #{values[0]})"
%td
- associated_object = current_or_last_object_state(model_name, values[1])
= associated_object.try(:title) || associated_object.try(:name)
= (values[1].blank? ? '-' : "(ID: #{values[1]})")
- else
- if version.event != 'create'
%td= values[0].blank? ? '-' : values[0]
%td= values[1].blank? ? '-' : values[1]
- if can? :revert_attribute, version
%td= link_to 'Revert', admin_revision_history_revert_attribute_path(id: version.id, attribute: attribute), class: 'btn btn-sm btn-primary', data: { confirm: "Are you sure you want to revert #{attribute}?" }
- else
- version.reify.attributes.each do |attribute, value|
%tr
%td= attribute
- if attribute.include?('_id')
- model_name = attribute.chomp('_id').camelize
%td
- associated_object = current_or_last_object_state(model_name, value)
= associated_object.try(:title) || associated_object.try(:name)
= value.blank? ? '-' : "(ID: #{value})"
- else
%td= value.blank? ? '-' : value