Sha256: 48527a94d1180e3b441dce7d8ed6d749b0aa5ed78247cd547f7c6cd205d76f2d

Contents?: true

Size: 1.34 KB

Versions: 62

Compression:

Stored size: 1.34 KB

Contents

module Workarea
  module Admin
    class ChangesViewModel < ApplicationViewModel
      def id
        Digest::SHA1.hexdigest(model.to_s)
      end

      def present_changes
        model.reject { |k, v| k.blank? || v.all?(&:blank?) }
      end

      def relevant_fields
        present_changes
          .keys
          .map { |k| remove_id_from_field_name(k) }
          .map(&:humanize)
          .map(&:downcase)
          .map { |n| t("workarea.admin.fields.#{n}", default: n) }
      end

      def to_html
        if model.blank? || relevant_fields.blank?
          t('workarea.admin.fields', count: 0).html_safe
        elsif relevant_fields.size > 3
          %Q(
              <a href="#changes-#{id}" data-tooltip="true">
                #{t('workarea.admin.fields', count: relevant_fields.size)}
              </a>
              <div id="changes-#{id}" class="tooltip-content">
                <p>#{relevant_fields.to_sentence}</p>
              </div>
          ).html_safe
        else
          relevant_fields
            .map { |f| "<strong>#{f}</strong>" }
            .to_sentence
            .html_safe
        end
      end

      private

      def remove_id_from_field_name(field)
        if field.ends_with?('_ids')
          field.gsub(/_ids$/, '').pluralize
        else
          field.gsub(/_u?id$/, '')
        end
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-admin-3.5.15 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.36 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.14 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.35 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.13 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.34 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.12 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.33 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.11 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.10 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.32 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.9 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.31 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.8 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.30 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.7 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.29 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.6 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.28 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.5 app/view_models/workarea/admin/changes_view_model.rb