From 80d09eee999aa2d720db2a26322b0d42a23131da Mon Sep 17 00:00:00 2001 From: david Date: Mon, 22 Jul 2024 01:29:09 +0200 Subject: [PATCH] Forgejo actions config --- .forgejo/workflows/build_push.yml | 2 +- app/assets/images/logo-apfelschule.png | Bin 0 -> 13814 bytes app/models/pdf_documents/base.rb | 54 ++++++++++++++------ app/models/pdf_documents/customer_report.rb | 19 ++++--- app/views/elements/_element.html.erb | 2 +- app/views/success_criteria/_header.html.erb | 2 +- 6 files changed, 55 insertions(+), 24 deletions(-) create mode 100644 app/assets/images/logo-apfelschule.png diff --git a/.forgejo/workflows/build_push.yml b/.forgejo/workflows/build_push.yml index c114064..0e53725 100644 --- a/.forgejo/workflows/build_push.yml +++ b/.forgejo/workflows/build_push.yml @@ -12,7 +12,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v5 with: registry: code.hohl.cloud username: ${{ secrets.DOCKERHUB_USERNAME }} diff --git a/app/assets/images/logo-apfelschule.png b/app/assets/images/logo-apfelschule.png new file mode 100644 index 0000000000000000000000000000000000000000..475c455114dbe8acb63a83556a68e1159d208fb6 GIT binary patch literal 13814 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 XM9W#sK&Q~(msqlrN)lCK#zFrJM`%Pi literal 0 HcmV?d00001 diff --git a/app/models/pdf_documents/base.rb b/app/models/pdf_documents/base.rb index b72bceb..6c7ecef 100644 --- a/app/models/pdf_documents/base.rb +++ b/app/models/pdf_documents/base.rb @@ -1,14 +1,17 @@ module PdfDocuments class Base + attr_reader :params + def initialize(prawn_document, **params) @prawn_document = prawn_document @prawn_document.markup_options = markup_options - @prawn_document.font_families.update('Lexend' => { - normal: 'vendor/assets/fonts/Lexend-Light.ttf', - bold: 'vendor/assets/fonts/Lexend-Bold.ttf', - italic: 'vendor/assets/fonts/Lexend-Regular.ttf' - }) - @prawn_document.font 'Lexend' + # @prawn_document.font_families.update('Lexend' => { + # normal: 'vendor/assets/fonts/Lexend-Light.ttf', + # bold: 'vendor/assets/fonts/Lexend-Bold.ttf', + # exta_bold: 'vendor/assets/fonts/Lexend-ExtraBold.ttf', + # italic: 'vendor/assets/fonts/Lexend-Regular.ttf' + # }) + @prawn_document.font 'Helvetica', size: 12 @params = OpenStruct.new(params) end @@ -24,14 +27,14 @@ module PdfDocuments end def heading1(text) - @prawn_document.markup "

#{text}

" + @prawn_document.markup "

#{text}

" end def heading2(text) @prawn_document.markup "

#{text}

" end - def heading2(text) + def heading3(text) @prawn_document.markup "

#{text}

" end @@ -43,18 +46,27 @@ module PdfDocuments @prawn_document.markup prepare_rich_text(text) end + def hr + @prawn_document.markup '
' + end + def markup_options { - text: { size: 10, margin_bottom: 10 }, - heading1: { style: :bold, size: 24, margin_bottom: 10, margin_top: 20 }, - heading2: { style: :bold, size: 18, margin_bottom: 10, margin_top: 15 }, - heading3: { style: :bold, size: 16, margin_bottom: 10, margin_top: 10 }, - heading4: { style: :bold, size: 14, margin_bottom: 10, margin_top: 5 }, - heading5: { style: :bold, size: 14, margin_bottom: 10, margin_top: 5 }, - heading6: { style: :thin, size: 14, margin_bottom: 10, margin_top: 5 } + text: { size: 12, margin_bottom: 5 }, + heading1: { style: :bold, size: 26, margin_bottom: 10, margin_top: 0 }, + heading2: { style: :bold, size: 17, margin_bottom: 10, margin_top: 5 }, + heading3: { style: :bold, size: 13, margin_bottom: 10, margin_top: 5 }, + heading4: { style: :bold, size: 12, margin_bottom: 10, margin_top: 5 }, + heading5: { style: :bold, size: 12, margin_bottom: 10, margin_top: 5 }, + heading6: { style: :thin, size: 12, margin_bottom: 10, margin_top: 5 } } end + def logo + @prawn_document.image 'app/assets/images/logo-apfelschule.png', width: 150 + @prawn_document.move_down 30 + end + def prepare_rich_text(rich_text) { h1: 'h4' }.each do |tag, replacement| rich_text = rich_text.to_s.gsub("<#{tag}", "<#{replacement}") @@ -63,5 +75,17 @@ module PdfDocuments rich_text end + + def font(...) + @prawn_document.font(...) + end + + def formatted_text(...) + @prawn_document.formatted_text(...) + end + + def move_down(...) + @prawn_document.move_down(...) + end end end diff --git a/app/models/pdf_documents/customer_report.rb b/app/models/pdf_documents/customer_report.rb index 997c5a1..048ca10 100644 --- a/app/models/pdf_documents/customer_report.rb +++ b/app/models/pdf_documents/customer_report.rb @@ -3,15 +3,22 @@ module PdfDocuments private def generate - heading1 @params.report.name + logo + @prawn_document.formatted_text_box [{ + text: "Dieses Dokument wurd am #{Time.current.strftime('%d %B %Y')} um #{Time.current.strftime('%H:%M:%S')} erstellt.", size: 8, align: :right + }], align: :right - @params.report.elements.each do |element| - heading2 element.title - text element.path + heading1 params.report.name + rich_text params.report.comment_html + + params.report.elements.each.with_index(1) do |element, element_index| + heading2 "#{element_index} #{element.title}" + formatted_text [{ text: element.path, styles: %i[bold italic underline] }] + move_down(5) rich_text element.description_html - element.success_criteria.each do |success_criterion| - text success_criterion.title + element.success_criteria.each.with_index(1) do |success_criterion, sc_index| + heading3 "#{element_index}.#{sc_index} #{success_criterion.title}" rich_text success_criterion.description_html rich_text success_criterion.comment_html end diff --git a/app/views/elements/_element.html.erb b/app/views/elements/_element.html.erb index a667966..b468c09 100644 --- a/app/views/elements/_element.html.erb +++ b/app/views/elements/_element.html.erb @@ -1,7 +1,7 @@
<%= turbo_frame_tag dom_id(element, :frame) do %>
-

+

<%= element.title %> diff --git a/app/views/success_criteria/_header.html.erb b/app/views/success_criteria/_header.html.erb index e13f5c1..8fa1cae 100644 --- a/app/views/success_criteria/_header.html.erb +++ b/app/views/success_criteria/_header.html.erb @@ -1,7 +1,7 @@ <% edit_mode = action_name == "edit" %>