Module: Prawn::Extras::Grid
Overview
Não deve ser usado para dados tabulares, para isso deve-se usar o Prawn Table.
O método gerar grid gera um grid com o número de linhas e colunas passados nos parâmetros. O tamanho será 100% do bounding_box que ele se encontra, exceto quando houver um padding, nesse caso o tamanho será o do box menos o padding.
Para gerar um grid de, por exemplo, 4 colunas e 3 linhas, chame:
gerar_grid(4, 3, opcoes_que_sao_opcionais_e_podem_ser_omitidas) do
campo_grid(linha, coluna, titulo, texto)
end
Para gerar cada célula individualmente, use o método campo_grid ou os métodos derivados desse. O parâmetro linha é a linha do grid aonde o campo vai ficar, e o parâmetro colunas pode ser tanto um número quando um array com 2 elementos. Se for um número, a coluna vai ser a do número, mas se for um array, como por exemplo [0, 2], significa que a célula vai ocupar as colunas 0, 1 e 2 da linha selecionada. Isso é equivalente ao colspan do HTML.
Ilustração de um grid de 4 colunas, 3 linhas com um padding de, por exemplo, 10pt (para exemplificar, digamos que 10pt = 1 linha de comentário):
Bounding Box: |————————————————————————| | Grid: | | |—————|—————|—————|—————| | | | Cell 1 | Cell 2 | … | Index: [0, 3] | | | |—————|—————|—————|—————| | | | Index: [1, 0] | Index: [1, 1] | Index: [1, 2] | Index: [1, 3] | | | |—————|—————|—————|—————| | | | Index: [2, 0] | Index: [2, 1] | Index: [2, 2] | Index: [2, 3] | | | |—————|—————|—————|—————| | | | |————————————————————————|
Exemplos: gerar células no grid acima:
campo_grid(0, 1) ==> Corresponde à Célula 2
campo_grid(1, [0, 3]) ==> Corresponde a toda a segunda linha
Na hora de gerar o grid, algumas opções podem ser passadas:
Padding: Adiciona um padding no grid inteiro em relação ao bonding_box que
contém o grid.
Leading: Usa o leading escolhido no grid. O leading é resetado para o valor
anterior quando o grid terminar de ser definido.
Gutter: O espaço entre as células, em pts. Funciona como o cellspacing da tag
<table> do HTML.
Instance Method Summary collapse
- #define_grid_block(columns, rows, options = {}) ⇒ Object
- #grid_cell(row, columns) ⇒ Object
- #text_grid_cell(row, columns, label_or_text, text = nil) ⇒ Object
Methods included from Box
#box, #box_below, #box_below_previous, #box_beside, #box_beside_previous, #last_created_box, #padding, #percent_h, #percent_w, #position_below, #position_beside, #remaining_height
Methods included from Text
#bold_font, #horizontal_line, #italic_font, #regular_font, #save_color, #switch_font, #t, #titled_text, #vertical_line
Instance Method Details
#define_grid_block(columns, rows, options = {}) ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/prawn/extras/grid.rb', line 58 def define_grid_block(columns, rows, = {}) = (columns, rows, ) padding(.delete(:padding)) do leading = .delete(:leading) define_grid() save_leading(leading) { yield } end end |
#grid_cell(row, columns) ⇒ Object
67 68 69 70 |
# File 'lib/prawn/extras/grid.rb', line 67 def grid_cell(row, columns) columns = [columns] * 2 unless columns.is_a? Array grid([row, columns[0]], [row, columns[1]]).bounding_box { yield } end |
#text_grid_cell(row, columns, label_or_text, text = nil) ⇒ Object
72 73 74 75 76 77 |
# File 'lib/prawn/extras/grid.rb', line 72 def text_grid_cell(row, columns, label_or_text, text = nil) grid_cell(row, columns) do titled_text(label_or_text, text) if text text_box(label_or_text) unless text end end |