# frozen_string_literal: true module PdfDocuments class CustomerReport < Base private def generate move_down 130 logo(width: 250, xs: false) move_down 40 heading1 params.report.name move_down 20 @prawn_document.text "#{I18n.l params.report.updated_at.to_date, format: :long}" move_down 40 safe_display(params.report.comment) do rich_text _1 move_down 30 end @prawn_document.font_size(8) do @prawn_document.draw_text("Dokument erstellt am #{Time.current.strftime('%d %B %Y')} um #{Time.current.strftime('%H:%M:%S')}", at: [0, 0]) end @prawn_document.start_new_page @pages = {} params.report.export[:elements].each.with_index(1) do |(element, success_criteria), element_index| new_page(required_space: 200) if element_index > 1 without_page_break do heading2 "#{element_index} #{element.title}" @prawn_document.text("Pfad: #{element.page.path}", inline_format: true) safe_display(element.screenshot) do image(_1.variant(:thumbnail), height: 160) move_down(15) end end rich_text element.description move_down(10) success_criteria.each.with_index(1) do |success_criterion, sc_index| @pages[success_criterion] = @prawn_document.page_number success_criterion_row(success_criterion, [ element_index, sc_index ]) end end @prawn_document.start_new_page heading1("Anhang: Richtlinien") params.report.export[:success_criteria].group_by(&:check).sort_by{ |c, _scs| c.external_number }.each do |check, criteria| heading2(check.display_label) @pages[check] = @prawn_document.page_number { external_number: { label: "WCAG Nummer" }, external_url: { label: "WCAG Link" }, conformity_level: { label: "Konformität" }, conformity_notice_de: { label: "Anmerkung Konformität", rich: true }, priority: { label: "Priorität" }, criterion_de: { label: "Kriterium/Grundlage", rich: true }, exemption_details_de: { label: "Ausnahmen", rich: true }, criterion_details_de: { label: "Verstehen", rich: true }, example_de: { label: "Beispiel", rich: true }, annotation_de: { label: "Anmerkung", rich: true } }.each do |attribute, options| v = check.send(attribute) safe_display(v) do text("#{options[:label]}", inline_format: true) if options[:rich] rich_text(_1) else text(_1) end end end if check.links.any? move_down 5 text("Links", inline_format: true) move_down 5 check.links.group_by(&:link_category).each do |cat, links| rich_text(%Q( #{cat.name}