massive pdf update

This commit is contained in:
Adrian Hinz 2022-05-04 12:46:27 +02:00
parent 31442cd507
commit 9ca47bff5e
37 changed files with 504 additions and 318 deletions

View File

@ -30,6 +30,7 @@ gem 'kaminari'
gem 'bootstrap4-kaminari-views'
gem 'wicked_pdf'
gem 'friendly_id', '~> 5.4.0'
gem 'combine_pdf'
# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'

BIN
app/assets/images/baner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

BIN
app/assets/images/no.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
app/assets/images/yes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,7 +1,7 @@
.mainer-header {
position: relative;
min-height: 800px;
background: url("/assets/main_kalendarz1.png") no-repeat center center fixed;
min-height: 396px;
background: url("/assets/baner_main.png") no-repeat center center;
background-size: cover;
}
@ -31,3 +31,81 @@
-ms-flex-pack: center;
justify-content: center;
}
.btn-outline-navy {
color: #1c509a;
border-color: #1c509a;
}
.btn-outline-navy:hover {
color: #fff;
background-color: #1c509a;
border-color: #1c509a;
}
.btn-outline-navy:focus, .btn-outline-navy.focus {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.btn-outline-navy.disabled, .btn-outline-navy:disabled {
color: #1c509a;
background-color: transparent;
}
.btn-outline-navy:not(:disabled):not(.disabled):active, .btn-outline-navy:not(:disabled):not(.disabled).active,
.show > .btn-outline-navy.dropdown-toggle {
color: #fff;
background-color: #1c509a;
border-color: #1c509a;
}
.btn-outline-navy:not(:disabled):not(.disabled):active:focus, .btn-outline-navy:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-navy.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.btn-navy {
color: #fff;
background-color: #1c509a;
border-color: #1c509a;
box-shadow: none;
}
.btn-navy:hover {
color: #fff;
background-color: #0a3a7e;
border-color: #0A3AB0;
}
.btn-navy:focus, .btn-navy.focus {
color: #fff;
background-color: #0a3a7e;
border-color: #1e7e34;
box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5);
}
.btn-navy.disabled, .btn-success:disabled {
color: #fff;
background-color: #1c509a;
border-color: #0A3AB0;
}
.btn-navy:not(:disabled):not(.disabled):active, .btn-navy:not(:disabled):not(.disabled).active,
.show > .btn-success.dropdown-toggle {
color: #fff;
background-color: #1c509a;
border-color: #0A3AB0;
}
.btn-navy:not(:disabled):not(.disabled):active:focus, .btn-navy:not(:disabled):not(.disabled).active:focus,
.show > .btn-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5);
}
.text-navy-new {
color: #1c509a;
}
.text-navy-new:hover {
color: #0a3a7e;
}

View File

@ -0,0 +1,32 @@
table, th, td {
border: 0px solid black;
border-collapse: collapse;
vertical-align: top;
}
table {
width: 100%;
}
.img-container {
position: relative;
text-align: left;
color: white;
}
/* Bottom left text */
.img-text-bottom-left {
position: absolute;
bottom: 240px;
left: 160px;
}
/* Bottom right text */
.img-text-bottom-right {
position: absolute;
bottom: 90px;
right: 130px;
}
.text-right {
text-align: right;
}

View File

@ -4,6 +4,7 @@
class HomeController < ApplicationController
layout 'home_layout'
before_action :check_status
include HomeHelper
def check_status
if defined?(current_user) && user_signed_in?
@ -67,7 +68,37 @@ class HomeController < ApplicationController
respond_to do |format|
format.html
format.pdf do
render pdf: @dotation.safe_id # Excluding ".pdf" extension.
pdf1a = WickedPdf.new.pdf_from_string(
render_cover_header(@dotation, @company_sizes),
{pdf: 'cover_header',
dpi: 300,
margin: { top: 0, bottom: 0, left: 0, right: 0 },
background: true,
no_background: false,
enable_local_file_access: true})
pdf1 = WickedPdf.new.pdf_from_string(
render_to_stringi(@dotation, @company_sizes), {pdf: @dotation.safe_id, # Excluding ".pdf" extension.
header: { content: render_to_string({ template: "shared/pdf_header.pdf", layout: false }), line: false },
footer: { content: render_to_string({ template: 'shared/pdf_footer.html', layout: false }), line: false },
dpi: 300,
margin: { top: 50, bottom: 50, left: 0, right: 0 },
background: true,
no_background: false,
enable_local_file_access: true})
#
pdf1b = WickedPdf.new.pdf_from_string(
render_cover_footer(@dotation, @company_sizes),
{pdf: 'cover_header',
dpi: 300,
margin: { top: 0, bottom: 0, left: 0, right: 0 },
background: true,
no_background: false,
enable_local_file_access: true})
combiner = CombinePDF.new
combiner << CombinePDF.parse(pdf1a)
combiner << CombinePDF.parse(pdf1)
combiner << CombinePDF.parse(pdf1b)
send_data combiner.to_pdf
end
end
end
@ -87,9 +118,40 @@ class HomeController < ApplicationController
@company_sizes = CompanySize.all
@dotations = Dotation.search_with_filters(filters).public_dot
.point_desc.end_date_asc
dotation = @dotations.first
respond_to do |format|
format.pdf do
render pdf: "zestawienie_dotacji_#{Time.now.strftime('%d%m%Y')}"
pdf1a = WickedPdf.new.pdf_from_string(
render_cover_header(dotation, @company_sizes),
{pdf: 'cover_header',
dpi: 300,
margin: { top: 0, bottom: 0, left: 0, right: 0 },
background: true,
no_background: false,
enable_local_file_access: true})
pdf1 = WickedPdf.new.pdf_from_string(
render_to_pdf_all(@dotations, @company_sizes), {pdf: "zestawienie_dotacji_#{Time.now.strftime('%d%m%Y')}", # Excluding ".pdf" extension.
header: { content: render_to_string({ template: "shared/pdf_header.pdf", layout: false }), line: false },
footer: { content: render_to_string({ template: 'shared/pdf_footer.html', layout: false }), line: false },
dpi: 300,
margin: { top: 50, bottom: 50, left: 0, right: 0 },
background: true,
no_background: false,
enable_local_file_access: true})
#
pdf1b = WickedPdf.new.pdf_from_string(
render_cover_footer(dotation, @company_sizes),
{pdf: 'cover_header',
dpi: 300,
margin: { top: 0, bottom: 0, left: 0, right: 0 },
background: true,
no_background: false,
enable_local_file_access: true})
combiner = CombinePDF.new
combiner << CombinePDF.parse(pdf1a)
combiner << CombinePDF.parse(pdf1)
combiner << CombinePDF.parse(pdf1b)
send_data combiner.to_pdf
end
end
end
@ -105,6 +167,10 @@ class HomeController < ApplicationController
@projects = Project.all
end
def pdf_header
end
def build_filter_hash
{
search: params[:search], company_sizes: @company_size_chk,

View File

@ -12,4 +12,59 @@ module HomeHelper
end
ret
end
def self.change_ammount(ammount)
return '' if ammount.blank?
ret = if ammount >= 1_000_000
"#{ammount / 1_000_000} mln"
else
"#{ammount / 1_000} tyś"
end
ret
end
def render_to_stringi(data, comp_sizes)
action_view = ActionView::Base.new
action_view.view_paths = ActionController::Base.view_paths
action_view.class_eval do
include ApplicationHelper
end
action_view.render template: 'home/show.pdf',
layout: 'layouts/pdf.html',
locals: { dotation: data, company_sizes: comp_sizes }
end
def render_to_pdf_all(data, comp_sizes)
action_view = ActionView::Base.new
action_view.view_paths = ActionController::Base.view_paths
action_view.class_eval do
include ApplicationHelper
end
action_view.render template: 'home/prepare_pdf.pdf',
layout: 'layouts/pdf.html',
locals: { dotations: data, company_sizes: comp_sizes }
end
def render_cover_header(data, comp_sizes)
action_view = ActionView::Base.new
action_view.view_paths = ActionController::Base.view_paths
action_view.class_eval do
include ApplicationHelper
end
action_view.render template: 'home/show.pdf',
layout: 'layouts/pdf_header.html',
locals: { dotation: data, company_sizes: comp_sizes }
end
def render_cover_footer(data, comp_sizes)
action_view = ActionView::Base.new
action_view.view_paths = ActionController::Base.view_paths
action_view.class_eval do
include ApplicationHelper
end
action_view.render template: 'home/show.pdf',
layout: 'layouts/pdf_footer.html',
locals: { dotation: data, company_sizes: comp_sizes }
end
end

View File

@ -145,4 +145,18 @@ class Dotation < ApplicationRecord
def safe_id
friendly_id
end
def replace_video
require 'nokogiri'
ret = full_descr
doc = Nokogiri::HTML(ret)
doc.css('iframe').each do |iframe|
url = 'https:' + iframe['src']
new_node = doc.create_element 'a'
new_node['href'] = url
new_node.inner_html = url
iframe.replace new_node
end
doc
end
end

View File

@ -2,7 +2,7 @@
<div class="card-header">
<h3 class="card-title" style="font-size: 1.5rem;">
<strong>
<%= link_to dotation.name, "/dotacja/#{dotation.safe_id}" %>
<%= link_to dotation.name, "/dotacja/#{dotation.safe_id}", class: 'text-navy-new' %>
</strong>
</h3>
<div class="card-tools">
@ -74,7 +74,7 @@
</div>
<div class="card-footer">
<%= link_to 'Zobacz więcej', "/dotacja/#{dotation.safe_id}", class: 'btn-lg btn-success float-right' %>
<%= link_to 'Zobacz więcej', "/dotacja/#{dotation.safe_id}", class: 'btn-lg btn-navy float-right' %>
</div>
</div>

View File

@ -24,7 +24,7 @@
<strong>Wartość projektu </strong>
</td>
<td>
do <%= change_ammount(dotation.max_amount) %> <%= dotation.max_amount_curr.name %>
do <%= HomeHelper.change_ammount(dotation.max_amount) %> <%= dotation.max_amount_curr.name %>
</td>
</tr>
<% end %>

View File

@ -4,9 +4,6 @@
</div>
<div class="col-md-8 order-first order-md-2">
<div class="card">
<div class="card-header">
<h3 class="card-title"><i class="fas fa-bullhorn"></i> Informacje</h3>
</div>
<div class="card-body">
<% if @dotations.blank? %>
<div class="alert alert-info">
@ -15,21 +12,21 @@
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<button type="button" class="btn btn-block btn-outline-success" data-toggle="modal" data-target="#modal-lg">
<i class="fas fa-bullhorn"></i> Powiadom mnie gdy pojawią się nowe dotacje
<button type="button" class="btn btn-block btn-navy" data-toggle="modal" data-target="#modal-lg">
<i class="fas fa-bullhorn"></i> Powiadom mnie, gdy pojawią się nowe dotacje
</button>
</div>
<div class="col-md-2"></div>
</div>
<% else %>
<div class="callout callout-info">
<div class="row">
<div class="col-md-6"><h5>Znalezionych aktywnych dotacji: <span class="badge badge-pill badge-info"><%= @dotations_size %></span></h5></div>
<div class="col-md-6">
<button type="button" class="btn btn-block btn-outline-success" data-toggle="modal" data-target="#modal-lg">
<i class="fas fa-bullhorn"></i> Powiadom mnie gdy pojawią się nowe dotacje
</button>
<div class="col-md-12"><h5>Znalezionych aktywnych dotacji: <%= @dotations_size %></h5></div>
</div>
<div class="row">
<div class="col-md-12">
<button type="button" class="btn btn-block btn-navy" data-toggle="modal" data-target="#modal-lg">
<i class="fas fa-bullhorn"></i> Powiadom mnie, gdy pojawią się nowe dotacje
</button>
</div>
</div>
<% end %>

View File

@ -7,7 +7,7 @@
<% unless params[:search].blank? %>
<div class="row">
<div class="col-md-12">
<%= link_to raw('<i class="fa fa-file-pdf"></i> Zapisz jako PDF'), "/zestawienie_dotacji/plik.pdf", class: 'btn btn-success btn-block' %>
<%= link_to raw('<i class="fa fa-file-pdf"></i> Zapisz jako PDF'), "/zestawienie_dotacji/plik.pdf", class: 'btn btn-navy btn-block' %>
</div>
</div>
<br />
@ -22,7 +22,7 @@
<div class="row">
<div class="col-md-12">
<div id="accordion">
<div class="card card-primary">
<div class="card card-secondary">
<div class="card-header">
<h4 class="card-title w-100">
<a class="d-block w-100 collapsed" data-toggle="collapse" href="#collapseOne" aria-expanded="true">
@ -43,7 +43,7 @@
</div>
</div>
</div>
<div class="card card-primary">
<div class="card card-secondary">
<div class="card-header">
<h4 class="card-title w-100">
<a class="d-block w-100" data-toggle="collapse" href="#collapseTwo" aria-expanded="true">
@ -64,7 +64,7 @@
</div>
</div>
</div>
<div class="card card-primary">
<div class="card card-secondary">
<div class="card-header">
<h4 class="card-title w-100">
<a class="d-block w-100" data-toggle="collapse" href="#collapseThree" aria-expanded="true">
@ -85,6 +85,7 @@
</div>
</div>
</div>
<%#
<div class="card card-primary">
<div class="card-header">
<h4 class="card-title w-100">
@ -97,12 +98,13 @@
<div class="card-body">
<div class="form-group">
<label for="localization">Lokalizacja projektu</label>
<%= text_field_tag(:localization, params[:localization], class: 'form-control', placeholder: 'Wpisz tu lokalizację') %>
text_field_tag(:localization, params[:localization], class: 'form-control', placeholder: 'Wpisz tu lokalizację')
</div>
</div>
</div>
</div>
<div class="card card-primary">
%>
<div class="card card-secondary">
<div class="card-header">
<h4 class="card-title w-100">
<a class="d-block w-100 collapsed" data-toggle="collapse" href="#collapseFive" aria-expanded="true">
@ -129,7 +131,7 @@
</div>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-block btn-outline-info" id="submit_form_btn">
<button type="submit" class="btn btn-block btn-outline-navy" id="submit_form_btn">
<i class="fas fa-bullhorn"></i> Zastosuj filtry
</button>
</div>

View File

@ -8,19 +8,41 @@
<br />
</div>
</div>
<div class="row">
<div class="col-md-12">
<h4><b>WIELKOŚĆ PRZEDSIĘBIORSTWA</b></h4>
</div>
</div>
<div class="row">
<div class="col-md-12">
<% @company_sizes.each do |company_size| %>
<% if @dotation.company_sizes.include?(company_size) %>
<%= image_tag 'yes'%> <%= company_size.name %>
<% else %>
<%= image_tag 'no' %> <%= company_size.name %>
<% end %>
&nbsp;&nbsp;
<% end %>
</div>
</div>
<br />
<% if !@dotation.expert_id.blank? && !@dotation.expert_info.blank? %>
<div class="row">
<div class="col-md-12">
<table class="table table-bordered">
<table style="border: none;">
<thead>
<tr><th colspan="2">Subiektywna opinia eksperta</th></tr>
<tr><th colspan="2"><h4><b>SUBIEKTYWNA OPINIA EKSPERTA</b></h4></th></tr>
</thead>
<tbody>
<tr>
<td>
<td style="border-style: none solid none none; border-color: #6c757d; border-width: 1px;">
<%= render '/experts/expert_show', expert: @dotation.expert %>
</td>
<td><%= raw @dotation.expert_info %></td>
<td>
<div style="margin-left: 5px;">
<%= raw @dotation.expert_info %>
</div>
</td>
</tr>
</tbody>
</table>
@ -28,117 +50,38 @@
</div>
<% end %>
<br />
<div class="row">
<div class="col-md-12">
<h3>Wielkość przedsiębiorstwa</h3>
</div>
</div>
<div class="row">
<div class="col-md-12">
<% @company_sizes.each do |company_size| %>
<% if @dotation.company_sizes.include?(company_size) %>
<i class="fas fa-power-off text-success"></i> <%= company_size.name %>
<% else %>
<i class="fas fa-power-off text-danger"></i> <%= company_size.name %>
<% end %>
&nbsp;&nbsp;
<% end %>
</div>
</div>
<hr />
<div class="row">
<div class="col-md-12">
<table class="table table-bordered">
<tbody>
<tr>
<td width="30%">
<b>Ogłoszenie aktualnego/najbliższego naboru</b>
</td>
<td><%= @dotation.ann_date_ret unless @dotation.announcement_date.blank? %></td>
</tr>
<tr>
<td>
<b>Rozpoczęcie aktualnego/najbliższego naboru</b>
</td>
<td><%= @dotation.start_date_ret unless @dotation.start_date.blank? %></td>
</tr>
<tr>
<td>
<b>Zakończenie aktualnego/najbliższego naboru</b>
</td>
<td><%= @dotation.end_date_ret unless @dotation.end_date.blank? %></td>
</tr>
<tr>
<td>
<b>Co można dofinansować?</b>
</td>
<td>
<%= raw "<h3 style='text-transform: uppercase;'><b>Ogłoszenie aktualnego/najbliższego naboru: </b><span style='font-weight: normal;'>#{@dotation.ann_date_ret}</span></h3>" unless @dotation.announcement_date.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Rozpoczęcie aktualnego/najbliższego naboru: </b><span style='font-weight: normal;'>#{@dotation.start_date_ret}</span></h3>" unless @dotation.start_date.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Zakończenie aktualnego/najbliższego naboru: </b><span style='font-weight: normal;'>#{@dotation.end_date_ret}</span></h3>" unless @dotation.end_date.blank? %>
<h3 style='text-transform: uppercase;'><b>Co można dofinansować? </b></h3>
<ul>
<% @dotation.expenses.each do |expense| %>
<li><%= expense.name %></li>
<% end %>
</ul>
</td>
</tr>
<% unless @dotation.localization.blank? %>
<tr>
<td>
<b>Miejsce realizacji projektu</b>
</td>
<td><%= @dotation.localization %></td>
</tr>
<h3 style='text-transform: uppercase;'><b>Miejsce realizacji projektu</b></h3>
<p><%= @dotation.localization %></p>
<% end %>
<% unless @dotation.min_amount.blank? %>
<tr>
<td>
<b>Minimalna wartość projektu (wydatków)</b>
</td>
<td><%= change_ammount(@dotation.min_amount) %> <%= @dotation.min_amount_curr.name %></td>
</tr>
<% end %>
<% unless @dotation.max_amount.blank? %>
<tr>
<td>
<b>Maksymalna wartość projektu (wydatków)</b>
</td>
<td><%= change_ammount(@dotation.max_amount) %> <%= @dotation.max_amount_curr.name %></td>
</tr>
<% end %>
<% unless @dotation.min_dot_ammount.blank? %>
<tr>
<td>
<b>Minimalna wartość dotacji</b>
</td>
<td><%= change_ammount(@dotation.min_dot_ammount) %> <%= @dotation.min_dot_amount_curr.name %></td>
</tr>
<% end %>
<% unless @dotation.max_dot_ammount.blank? %>
<tr>
<td>
<b>Maksymalna wartość dotacji</b>
</td>
<td><%= change_ammount(@dotation.max_dot_ammount) %> <%= @dotation.max_dot_amount_curr.name %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<hr />
<div class="row">
<div class="col-md-12">
<h3>Szczegółowy opis dotacji</h3>
</div>
</div>
<%= raw "<h3 style='text-transform: uppercase;'><b>Minimalna wartość projektu (wydatków): </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(@dotation.min_amount)} #{@dotation.min_amount_curr.name}</span></h3>" unless @dotation.min_amount.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Maksymalna wartość projektu (wydatków): </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(@dotation.max_amount)} #{@dotation.max_amount_curr.name}</span></h3>" unless @dotation.max_amount.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Minimalna wartość dotacji: </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(@dotation.min_dot_ammount)} #{@dotation.min_dot_amount_curr.name}</span></h3>" unless @dotation.min_dot_ammount.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Maksymalna wartość dotacji: </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(@dotation.max_dot_ammount)} #{@dotation.max_dot_amount_curr.name}</span></h3>" unless @dotation.max_dot_ammount.blank? %>
<h3 style='text-transform: uppercase;'><b>Szczegółowy opis dotacji</b></h3>
<div class="row">
<div class="col-md-12">
<%= raw @dotation.full_descr %>
</div>
</div>
<hr />
</div>
</div>
<div class="row">
<div class="col-md-12">
<h3>Pomoc w opracowaniu wniosku komu można zlecić opracowanie dokumentów do tego konkursu</h3>
<h3 style='text-transform: uppercase;'>Pomoc w opracowaniu wniosku komu można zlecić opracowanie dokumentów do tego konkursu</h3>
</div>
</div>
<div class="row">

View File

@ -1,6 +1,6 @@
<div class="row">
<div class="col-md-12">
<h3><%= dotation.formal_name %></h3>
<h3 class="text-right"><%= dotation.formal_name %></h3>
</div>
</div>
<div class="row">
@ -8,19 +8,39 @@
<br />
</div>
</div>
<div class="row">
<div class="col-md-12">
<h3><b>WIELKOŚĆ PRZEDSIĘBIORSTWA</b></h3>
</div>
</div>
<div class="row">
<div class="col-md-12">
<% company_sizes.each do |company_size| %>
<% if dotation.company_sizes.include?(company_size) %>
<%= wicked_pdf_image_tag 'yes.png' %> <%= company_size.name %>
<% else %>
<%= wicked_pdf_image_tag 'no.png' %> <%= company_size.name %>
<% end %>
&nbsp;&nbsp;
<% end %>
</div>
</div>
<br />
<% if !dotation.expert_id.blank? && !dotation.expert_info.blank? %>
<div class="row">
<div class="col-md-12">
<table class="table table-bordered">
<thead>
<tr><th colspan="2">Subiektywna opinia eksperta</th></tr>
</thead>
<h4><b>SUBIEKTYWNA OPINIA EKSPERTA</b></h4>
<table style="border: none;">
<tbody>
<tr>
<td>
<td style="border-style: none solid none none; border-color: #6c757d; border-width: 1px;">
<%= render '/experts/expert_show', expert: dotation.expert %>
</td>
<td><%= raw dotation.expert_info %></td>
<td style="margin-left: 5px; border-style: none none none solid;">
<div style="margin-left: 10px;">
<%= raw dotation.expert_info %>
</div>
</td>
</tr>
</tbody>
</table>
@ -30,112 +50,35 @@
<br />
<div class="row">
<div class="col-md-12">
<h3>Wielkość przedsiębiorstwa</h3>
</div>
</div>
<div class="row">
<div class="col-md-12">
<% @company_sizes.each do |company_size| %>
<% if dotation.company_sizes.include?(company_size) %>
<%= company_size.name %>&nbsp;&nbsp;
<% end %>
<% end %>
</div>
</div>
<hr />
<div class="row">
<div class="col-md-12">
<table class="table table-bordered">
<tbody>
<tr>
<td width="30%">
<b>Ogłoszenie aktualnego/najbliższego naboru</b>
</td>
<td><%= dotation.ann_date_ret unless dotation.announcement_date.blank? %></td>
</tr>
<tr>
<td>
<b>Rozpoczęcie aktualnego/najbliższego naboru</b>
</td>
<td><%= dotation.start_date_ret unless dotation.start_date.blank? %></td>
</tr>
<tr>
<td>
<b>Zakończenie aktualnego/najbliższego naboru</b>
</td>
<td><%= dotation.end_date_ret unless dotation.end_date.blank? %></td>
</tr>
<tr>
<td>
<b>Co można dofinansować?</b>
</td>
<td>
<%= raw "<h3 style='text-transform: uppercase;'><b>Ogłoszenie aktualnego/najbliższego naboru: </b><span style='font-weight: normal;'>#{dotation.ann_date_ret}</span></h3>" unless dotation.announcement_date.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Rozpoczęcie aktualnego/najbliższego naboru: </b><span style='font-weight: normal;'>#{dotation.start_date_ret}</span></h3>" unless dotation.start_date.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Zakończenie aktualnego/najbliższego naboru: </b><span style='font-weight: normal;'>#{dotation.end_date_ret}</span></h3>" unless dotation.end_date.blank? %>
<h3 style='text-transform: uppercase;'><b>Co można dofinansować? </b></h3>
<ul>
<% dotation.expenses.each do |expense| %>
<li><%= expense.name %></li>
<% end %>
</ul>
</td>
</tr>
<% unless @dotation.localization.blank? %>
<tr>
<td>
<b>Miejsce realizacji projektu</b>
</td>
<td><%= @dotation.localization %></td>
</tr>
<% unless dotation.localization.blank? %>
<h3 style='text-transform: uppercase;'><b>Miejsce realizacji projektu</b></h3>
<p><%= dotation.localization %></p>
<% end %>
<% unless @dotation.min_amount.blank? %>
<tr>
<td>
<b>Minimalna wartość projektu (wydatków)</b>
</td>
<td><%= change_ammount(@dotation.min_amount) %> <%= @dotation.min_amount_curr.name %></td>
</tr>
<% end %>
<% unless @dotation.max_amount.blank? %>
<tr>
<td>
<b>Maksymalna wartość projektu (wydatków)</b>
</td>
<td><%= change_ammount(@dotation.max_amount) %> <%= @dotation.max_amount_curr.name %></td>
</tr>
<% end %>
<% unless @dotation.min_dot_ammount.blank? %>
<tr>
<td>
<b>Minimalna wartość dotacji</b>
</td>
<td><%= change_ammount(@dotation.min_dot_ammount) %> <%= @dotation.min_dot_amount_curr.name %></td>
</tr>
<% end %>
<% unless @dotation.max_dot_ammount.blank? %>
<tr>
<td>
<b>Maksymalna wartość dotacji</b>
</td>
<td><%= change_ammount(@dotation.max_dot_ammount) %> <%= @dotation.max_dot_amount_curr.name %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<hr />
<%= raw "<h3 style='text-transform: uppercase;'><b>Minimalna wartość projektu (wydatków): </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(dotation.min_amount)} #{dotation.min_amount_curr.name}</span></h3>" unless dotation.min_amount.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Maksymalna wartość projektu (wydatków): </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(dotation.max_amount)} #{dotation.max_amount_curr.name}</span></h3>" unless dotation.max_amount.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Minimalna wartość dotacji: </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(dotation.min_dot_ammount)} #{dotation.min_dot_amount_curr.name}</span></h3>" unless dotation.min_dot_ammount.blank? %>
<%= raw "<h3 style='text-transform: uppercase;'><b>Maksymalna wartość dotacji: </b><span style='font-weight: normal;'>#{HomeHelper.change_ammount(dotation.max_dot_ammount)} #{dotation.max_dot_amount_curr.name}</span></h3>" unless dotation.max_dot_ammount.blank? %>
<h3 style='text-transform: uppercase;'><b>Szczegółowy opis dotacji</b></h3>
<div class="row">
<div class="col-md-12">
<h3>Szczegółowy opis dotacji</h3>
<%= raw dotation.replace_video %>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<%= raw dotation.full_descr %>
</div>
</div>
<hr />
<div class="row">
<div class="col-md-12">
<h3>Pomoc w opracowaniu wniosku komu można zlecić opracowanie dokumentów do tego konkursu</h3>
<h3 style='text-transform: uppercase;'>Pomoc w opracowaniu wniosku komu można zlecić opracowanie dokumentów do tego konkursu</h3>
</div>
</div>
<div class="row">

View File

@ -19,31 +19,21 @@
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h3 class="card-title">Dane kontaktowe</h3>
<h3 class="card-title">Podmiot administrujący</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-7" id="map_grantera">
<div class="col-md-7" id="map_deep_tech">
</div>
<div class="col-md-1"></div>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBB6-CyLLXNir-Mg6zYy6gcm-tzRB1Y198&callback=initMap&v=weekly&channel=2" async></script>
<div class="col-md-4">
<h2>Grantera sp. z o.o.</h2>
<h2>Deep Tech Institute</h2>
<p>
ul. Mikołaja Gomółki 2<br />
80-279 Gdańsk<br />
</p>
<br />
<p>
tel. 58 380 15 96<br />
tel. kom. 792 002 220<br />
info@grantera.pl<br />
</p>
<br />
<p>
KRS 0000529767,<br />
NIP 585-14-69-751<br />
Gdański Park Naukowo-Technologiczny<br />
ul. Trzy Lipy 3<br />
80-172 Gdańsk<br />
</p>
</div>
</div>
@ -62,27 +52,21 @@
</div>
</section>
<style>
/* Set the size of the div element that contains the map */
#map_grantera {
#map_deep_tech {
height: 400px;
/* The height is 400 pixels */
width: 100%;
/* The width is the width of the web page */
}
</style>
<script type="text/javascript">
// Initialize and add the map
function initMap() {
// The location of Uluru
const grantera = { lat: 54.385723142691006, lng: 18.579579069489338 };
// The map, centered at Uluru
const map = new google.maps.Map(document.getElementById("map_grantera"), {
54.35479765200101, 18.593526289757943
const deep_tech = { lat: 54.35479765200101, lng: 18.593526289757943 };
const map = new google.maps.Map(document.getElementById("map_deep_tech"), {
zoom: 16,
center: grantera,
center: deep_tech,
});
// The marker, positioned at Uluru
const marker = new google.maps.Marker({
position: grantera,
position: deep_tech,
map: map,
});
}

View File

@ -3,9 +3,9 @@
<div class="row" style="padding-top:30px;">
<div class="col-md-8 offset-md-2">
<div class="input-group">
<%= text_field_tag(:search, params[:search], class: 'form-control form-control-lg', placeholder: 'Wpisz wyszukiwaną frazę', id: 'search_input') %>
<%= text_field_tag(:search, params[:search], class: 'form-control form-control-lg', placeholder: 'Wyszukaj po frazie', id: 'search_input') %>
<div class="input-group-append">
<button type="submit" class="btn btn-lg btn-default">
<button type="submit" class="btn btn-lg btn-navy">
<i class="fa fa-search"></i>
</button>
</div>

View File

@ -1,23 +1,16 @@
<!doctype html>
<html>
<head>
<meta charset='utf-8' />
</head>
<body onload='number_pages'>
<div id="content">
<div style="margin-left:60px; margin-right:60px;">
<h2>Zestawienie dotacji</h2>
<% @dotations.each do |dotation| %>
<% dotations.each do |dotation| %>
<div>
<%= render 'dotation_card', dotation: dotation %>
<%= render '/home/dotation_card', dotation: dotation %>
<hr />
</div>
<% end %>
<% @dotations.each do |dotation| %>
<% dotations.each do |dotation| %>
<p style='page-break-after:always;'>
<h3 class="card-title" style="font-size: 1.9rem;"><strong><%= dotation.name %></strong></h3>
<%= render 'show', dotation: dotation %>
<h3 class="text-right" style="font-size: 1.9rem;"><strong><%= dotation.name %></strong></h3>
<%= render '/home/show', dotation: dotation, company_sizes: company_sizes %>
</div>
</p>
<% end %>
</div>
</body>
</html>

View File

@ -4,10 +4,10 @@
<div class="row mb-2">
<div class="col-sm-2"></div>
<div class="col-sm-4">
<%= link_to 'Powrót do strony wyszukiwania', '/', class: 'btn btn-info' %>
<%= link_to 'Powrót do strony wyszukiwania', '/', class: 'btn btn-outline-navy' %>
</div>
<div class="col-sm-4 ">
<%= link_to raw('<i class="fa fa-file-pdf"></i> Zapisz jako PDF'), "/dotacja/#{@dotation.safe_id}.pdf", class: 'btn btn-success float-right' %>
<%= link_to raw('<i class="fa fa-file-pdf"></i> Zapisz jako PDF'), "/dotacja/#{@dotation.safe_id}.pdf", class: 'btn btn-navy float-right' %>
</div>
<!-- /.col -->
<div class="col-sm-2"></div>

View File

@ -1,14 +1,4 @@
<!doctype html>
<html>
<head>
<meta charset='utf-8' />
<%= wicked_pdf_javascript_include_tag "number_pages" %>
</head>
<body onload='number_pages'>
<div id="content">
<h3 class="card-title" style="font-size: 1.9rem;"><strong><%= @dotation.name %></strong></h3>
<%= render 'show', dotation: @dotation %>
<div style="margin-left:60px; margin-right:60px;">
<h3 class="text-right" style="font-size: 1.9rem;"><strong><%= dotation.name %></strong></h3>
<%= render '/home/show', dotation: dotation, company_sizes: company_sizes %>
</div>
</body>
</html>

View File

@ -6,7 +6,7 @@
<title>Kalendarz Dotacji</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Prompt:300,400,400i,700&display=fallback">
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_link_tag 'font_awesomeall', 'tempusdominus-bootstrap-4.min', 'select2.min', 'adminlte.min', 'main' %>
<%= javascript_include_tag 'application', 'whcookies', 'data-turbolinks-track': 'reload' %>
@ -17,7 +17,7 @@
<nav class="main-header navbar navbar-expand-md navbar-light navbar-white">
<div class="container">
<a href="/" class="navbar-brand">
<%= image_tag "kd_logo.png", class: "brand-image elevation-3", alt: "Kalendarz dotacji", style: "opacity: .8" %>
<%= image_tag "kd_logo.png", class: "brand-image", alt: "Kalendarz dotacji", style: "opacity: .8" %>
</a>
<button class="navbar-toggler order-1" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@ -25,7 +25,7 @@
<div class="collapse navbar-collapse order-3" id="navbarCollapse">
<ul class="navbar-nav">
<li class="nav-item d-none d-sm-inline-block">
<a href="/" class="nav-link">Home</a>
<a href="/" class="nav-link">Znajdź dotację dla swojej firmy</a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="/kontakt" class="nav-link">Kontakt</a>

View File

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Prompt:300,400,400i,700&display=fallback">
<%= wicked_pdf_stylesheet_link_tag "pdf" %>
<%= wicked_pdf_javascript_include_tag "number_pages" %>
</head>
<body onload="number_pages">
<div id="content">
<%= yield %>
</div>
<div style='page-break-before:always;'>
<%= render 'shared/disclaimer' %>
</div>
</body>
</html>

View File

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<%= wicked_pdf_stylesheet_link_tag "pdf" %>
<%= wicked_pdf_javascript_include_tag "number_pages" %>
</head>
<body onload="number_pages">
<div class="img-container">
<%= wicked_pdf_image_tag 'raport_pdf_okladka_2.png', style: 'border: 0px;' -%>
<div class="img-text-bottom-right"><span><a href="www.kalendarzdotacji.pl">www.kalendarzdotacji.pl</a></span></div>
</div>
</body>
</html>

View File

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<%= wicked_pdf_stylesheet_link_tag "pdf" %>
<%= wicked_pdf_javascript_include_tag "number_pages" %>
</head>
<body onload="number_pages">
<div class="img-container">
<%= wicked_pdf_image_tag 'raport_pdf_okladka_1.png', style: 'border: 0px;' -%>
<div class="img-text-bottom-left"><strong><span style="font-size:100px;">RAPORT</span><br /><br /><span style="font-size:70px;">MOŻLIWOŚĆ<br />DOFINANSOWANIA</span></strong></div>
<div class="img-text-bottom-right"><span><a href="www.kalendarzdotacji.pl">www.kalendarzdotacji.pl</a></span></div>
</div>
</body>
</html>

View File

@ -10,12 +10,12 @@
</div>
</div>
</td>
<td><%= raw partner.description %></td>
<td><%= raw simple_format(partner.description) %></td>
<td>
<% if @dotation.blank? %>
<button type="button" class="btn btn-block btn-success">Zamów bezpłatną konsultację</button>
<% else %>
<%= link_to 'Zamów bezpłatną konsultację', "/home/order_meeting?d=#{@dotation.safe_id}", class: 'btn btn-block btn-success', remote: true %>
<%= link_to 'Zamów bezpłatną konsultację', "/home/order_meeting?d=#{@dotation.safe_id}", class: 'btn btn-block btn-navy', remote: true %>
<% end %>
</td>
</tr>

View File

@ -12,7 +12,7 @@
</div>
</div>
</td>
<td><%= raw partner.description %></td>
<td><%= raw simple_format(partner.description) %></td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,17 @@
<h4>Klauzula o wyłączeniu odpowiedzialności</h4>
<ol>
<li>Treści, które publikujemy w Serwisie, mają charakter wyłącznie informacyjny lub poglądowy. Nie stanowią żadnej formy doradztwa na rzecz Użytkowników Serwisu.</li>
<li>Staramy się, aby publikowane w Serwisie informacje dotyczyły możliwie największej liczby ogłoszonych w Polsce konkursów/programów/naborów wniosków organizowanych, w ramach których można ubiegać się o dofinansowanie ze środków publicznych, ale nie gwarantujemy, że w ramach w Serwisu można wyszukać informację o każdym konkursie/programie/naborze wniosków, który został ogłoszony.</li>
<li>Staramy się, aby publikowane w Serwisie informacje były aktualne, rzetelne i dokładne, ale nie gwarantujemy, że są one wyczerpujące i w pełni zgodne z obowiązującymi zasadami udzielania dofinansowania w ramach poszczególnych konkursów/programów/naborów wniosków. Treści publikowane w Serwisie mogą zawierać błędy lub nieścisłości i mogą być nieaktualne.</li>
<li>Celem Serwisu jest przedstawienie Użytkownikom najistotniejszych w naszej ocenie aspektów dotyczących dostępnych dotacji dla przedsiębiorców (lub przyszłych przedsiębiorców) i możliwości ubiegania się przez nich o dofinansowanie ze środków publicznych. Informacje te nie są jednak wystarczające do podjęcia ostatecznej decyzji o ubieganiu się o takie dofinansowanie. Użytkownicy Serwisu wykorzystują informacje dostępne w Serwisie na własne ryzyko i na własną odpowiedzialność. Złożenie wniosku o dotację/dofinansowanie w każdym wypadku wymaga dokładnego zapoznania się z pełną i aktualną dokumentacją konkursową udostępnianą bezpośrednio przez instytucję, która udziela wsparcia finansowego, i stosowania się do określonych w tej dokumentacji zasad.</li>
<li>Nie ponosimy odpowiedzialności za:
<ol type="a">
<li>treści i materiały zamieszczane na stronie,</li>
<li>skutki wykorzystania informacji, materiałów, komentarzy lub opinii dostępnych w Serwisie przez jego Użytkowników; w szczególności nie odpowiadamy za jakiekolwiek szkody majątkowe (w tym utracone korzyści lub nieuzyskanie finansowania), poniesione przez użytkowników Serwisu wskutek wykorzystania informacji dostępnych w Serwisie, nawet jeżeli informacje te były nieaktualne lub nierzetelne,</li>
<li>treści publikowane na innych stronach internetowych, do których mogą odsyłać informacje zawarte w naszym Serwisie,</li>
<li>działania osób trzecich, które oferują swoje usługi w ramach Serwisu,</li>
<li>skutki zakłóceń w dostępności lub funkcjonalnościach Serwisu.</li>
</ol>
</li>
<li>Wyłączenie odpowiedzialności, o którym mowa powyżej dotyczy podmiotu prowadzącego Serwis oraz autorów poszczególnych treści, opinii lub komentarzy zawartych w Serwisie.</li>
</ol>

View File

@ -0,0 +1,17 @@
<h4>Klauzula o wyłączeniu odpowiedzialności</h4>
<ol>
<li>Treści, które publikujemy w Serwisie, mają charakter wyłącznie informacyjny lub poglądowy. Nie stanowią żadnej formy doradztwa na rzecz Użytkowników Serwisu.</li>
<li>Staramy się, aby publikowane w Serwisie informacje dotyczyły możliwie największej liczby ogłoszonych w Polsce konkursów/programów/naborów wniosków organizowanych, w ramach których można ubiegać się o dofinansowanie ze środków publicznych, ale nie gwarantujemy, że w ramach w Serwisu można wyszukać informację o każdym konkursie/programie/naborze wniosków, który został ogłoszony.</li>
<li>Staramy się, aby publikowane w Serwisie informacje były aktualne, rzetelne i dokładne, ale nie gwarantujemy, że są one wyczerpujące i w pełni zgodne z obowiązującymi zasadami udzielania dofinansowania w ramach poszczególnych konkursów/programów/naborów wniosków. Treści publikowane w Serwisie mogą zawierać błędy lub nieścisłości i mogą być nieaktualne.</li>
<li>Celem Serwisu jest przedstawienie Użytkownikom najistotniejszych w naszej ocenie aspektów dotyczących dostępnych dotacji dla przedsiębiorców (lub przyszłych przedsiębiorców) i możliwości ubiegania się przez nich o dofinansowanie ze środków publicznych. Informacje te nie są jednak wystarczające do podjęcia ostatecznej decyzji o ubieganiu się o takie dofinansowanie. Użytkownicy Serwisu wykorzystują informacje dostępne w Serwisie na własne ryzyko i na własną odpowiedzialność. Złożenie wniosku o dotację/dofinansowanie w każdym wypadku wymaga dokładnego zapoznania się z pełną i aktualną dokumentacją konkursową udostępnianą bezpośrednio przez instytucję, która udziela wsparcia finansowego, i stosowania się do określonych w tej dokumentacji zasad.</li>
<li>Nie ponosimy odpowiedzialności za:
<ol type="a">
<li>treści i materiały zamieszczane na stronie,</li>
<li>skutki wykorzystania informacji, materiałów, komentarzy lub opinii dostępnych w Serwisie przez jego Użytkowników; w szczególności nie odpowiadamy za jakiekolwiek szkody majątkowe (w tym utracone korzyści lub nieuzyskanie finansowania), poniesione przez użytkowników Serwisu wskutek wykorzystania informacji dostępnych w Serwisie, nawet jeżeli informacje te były nieaktualne lub nierzetelne,</li>
<li>treści publikowane na innych stronach internetowych, do których mogą odsyłać informacje zawarte w naszym Serwisie,</li>
<li>działania osób trzecich, które oferują swoje usługi w ramach Serwisu,</li>
<li>skutki zakłóceń w dostępności lub funkcjonalnościach Serwisu.</li>
</ol>
</li>
<li>Wyłączenie odpowiedzialności, o którym mowa powyżej dotyczy podmiotu prowadzącego Serwis oraz autorów poszczególnych treści, opinii lub komentarzy zawartych w Serwisie.</li>
</ol>

View File

@ -0,0 +1 @@
<%= wicked_pdf_image_tag 'pdf_footer.png', style: 'border: 0px;' %>

View File

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html>
<body>
<%= wicked_pdf_image_tag 'pdf_header', alt: 'Header', height: '350px', style: 'border: 0px; margin-left: 0px; padding-left: 0px;' %>
</body>
</html>

View File

@ -15,8 +15,8 @@ WickedPdf.config = {
# or
# exe_path: Gem.bin_path('wkhtmltopdf-binary', 'wkhtmltopdf')
# exe_path: 'c:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'
exe_path: '/usr/bin/wkhtmltopdf'
exe_path: '/usr/bin/wkhtmltopdf',
# Layout file to be used for all PDFs
# (but can be overridden in `render :pdf` calls)
# layout: 'pdf.html',
layout: 'pdf.html.erb'
}