Sha256: 5def1dddd39ada9f05f2ed2bc4f7ffc7048e79db71a4f3be97225d9c8afc4d06

Contents?: true

Size: 1.6 KB

Versions: 7

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module Renalware
  module Concerns
    module PdfRenderable
      extend ActiveSupport::Concern

      included do
        protected

        def default_pdf_options
          {
            page_size: "A4",
            layout: "renalware/layouts/pdf",
            disposition: "inline",
            footer: {
              font_size: 8,
              right: "Page [page] of [topage]"
            },
            show_as_html: Rails.env.development? && params.key?(:debug),
            encoding: "UTF-8"
          }
        end

        # Render a Liquid template loaded from the database.
        # The template may have variable place holders w.g. {{ patient.name }} and these
        # are resolved by passing instance of Liquid Drops (presenters) in the variables hash.
        def render_liquid_template_to_pdf(template_name:, filename:, variables: nil)
          variables ||= default_liquid_variables
          body = System::RenderLiquidTemplate.call(template_name: template_name,
                                                   variables: variables)
          options = default_pdf_options.merge!(pdf: filename, locals: { body: body })
          render options
        end

        private

        # By default if no variables supplied, we insert the patient drop to allow basic patient
        # data to be accessed in the template with eg {{ patient.name }}
        # Note the has key must be a string and not a symbol.
        def default_liquid_variables
          { "patient" => Patients::PatientDrop.new(patient) }
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
renalware-core-2.0.24 app/controllers/renalware/concerns/pdf_renderable.rb
renalware-core-2.0.23 app/controllers/renalware/concerns/pdf_renderable.rb
renalware-core-2.0.22 app/controllers/renalware/concerns/pdf_renderable.rb
renalware-core-2.0.21 app/controllers/renalware/concerns/pdf_renderable.rb
renalware-core-2.0.20 app/controllers/renalware/concerns/pdf_renderable.rb
renalware-core-2.0.18 app/controllers/renalware/concerns/pdf_renderable.rb
renalware-core-2.0.17 app/controllers/renalware/concerns/pdf_renderable.rb