module LatoView # Cella usata per la generazione di tabelle. module Table # Cella Table class Cell < Cell # Array contenente l'intestazione della tabella # * *struttura*: ['Voce 1', 'Voce 2', ... ] # * *default*: nil attr_accessor :head # Array contenente le righe da stampare della tabella # * *struttura*: [['val 1', 'val 2'], ['val 1', 'val 2']] # * *default*: nil attr_accessor :rows def initialize(head: nil, rows: nil) # eseguo brevi controlli sull'input raise 'Table Concept: head must be an array' if head and !head.is_a? Array # assegno i valori alle variabili di istanza @head = head @rows = rows if rows && check_rows(rows) end def show open + head + rows + close end # Funzione che stampa l'apertura di una tabella def open "" end # Funzione che genera l'intestazione della tabella def head render 'head.html' end # Funzione che stampa tutte le righe della tabella def rows render 'rows.html' end # Funzione che stampa una riga della tabella # * *Parametri* : # - position: posizione della riga da stampare nell'array di righe # definito durante l'inizializzazione # - row: array che rappresenta la riga da stampare def row(position: 0, row: nil) if position && !@rows.nil? && !@rows[position].nil? @current_row = @rows[position] end @current_row = row if row render 'row.html' end # Funzione che stampa la chiusura di una tabella def close '
' end # Funzione che, se il primo parametro e' il risultato di una query, # lo trasforma in un array di array da usare per inizializzare una tabella def self.generate_rows_from_activerecords(activerecords, attributes) rows = [] activerecords.each do |activerecord| row = [] attributes.each do |attribute| row.push(activerecord.send(attribute)) end rows.push(row) end rows end # Funzione che controlla che i widgets passati alla actionbar siano corretti private def check_rows(rows) # evito il controllo se sono in production return true if Rails.env.production? raise 'Table Concept: links must be an array' unless rows.is_a? Array rows.each do |row| raise 'Table Concept: rows content must be an array' unless row.is_a? Array end end end # Fine cella end end