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.27 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.26 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.45 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.25 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.23 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.44 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.22 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.43 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.21 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.42 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.20 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.41 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.19 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.40 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.18 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.39 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.17 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.38 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.5.16 app/view_models/workarea/admin/changes_view_model.rb
workarea-admin-3.4.37 app/view_models/workarea/admin/changes_view_model.rb