Module: Prawn::Extras::Grid

Includes:
Box, Text
Defined in:
lib/prawn/extras/grid.rb

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

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, options = {})
  options = build_grid_options(columns, rows, options)
  padding(options.delete(:padding)) do
    leading = options.delete(:leading)
    define_grid(options)
    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