1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
require 'rubygems'
require 'prawn'
require 'prawn/table'
module CarlosGoce
module Layout
class Simple
def create(file, data, year)
tables = []
Prawn::Document.generate(file) do
data[:months].each do |k, month|
days = month[:formatted_days]
cells = days.to_a.each_slice(7).to_a
a = []
%w(L M X J V S D).each {|d| a << "<strong>#{d}</strong>" }
# cells.unshift ['L', 'M', 'X', 'J', 'V', 'S', 'D']
cells.unshift a
cells.unshift [{content: "<color rgb='FF0000'><strong>#{month[:name].upcase}</strong></color>", colspan: 7,
inline_format: true}]
tables << make_table(cells,
cell_style: {width: 15, height: 12, align: :center, size: 7, border_width: 0, padding: 0, valign: :center})
end
table(tables.each_slice(3).to_a, cell_style: {align: :center, padding: [5, 5, 5, 5], border_width: 0,
valign: :center, margin: [0, 0, 15, 0]})
end
end
end
class Columns
attr_reader :columns, :num_cols
def initialize(cols)
@columns = cols
@num_cols = cols.length
end
def header
[[""] + @columns]
end
def create(file, data, year)
Prawn::Document.generate(file, :page_layout => :landscape, :page_size => "A4") do |pdf|
data[:months].each do |k, month|
pdf.font_size = 16
pdf.text "#{month[:name].capitalize} #{year}"
rows = []
offset = 6 - month[:formatted_days].select { |d| d == "" }.length
month[:days].each_index do |i|
row = []
bg = (i - offset) % 7 == 0 ? "ffcccc" : "ffffff"
row << pdf.make_cell(:content => "#{month[:days][i]} #{month[:days_names][i]}", :background_color => bg)
@num_cols.times { row << pdf.make_cell(:content => "", :background_color => bg) }
rows << row
end
pdf.font_size = 10
style = {align: :left, padding: 2, border_width: 1, valign: :center, margin: [0, 0, 15, 0]}
t = pdf.make_table(header + rows, cell_style: style, :width => 760, :column_widths => { 0 => 100 }, :header => true)
t.row(0).style(:background_color => "cccccc", :font_style => :bold)
t.draw()
pdf.start_new_page if k < 12
end
end
end
end
end
end
|