parent
3aee775190
commit
16b81a879f
@ -1,21 +1,54 @@
|
|||||||
require_relative 'data_table'
|
require_relative './data_table'
|
||||||
|
|
||||||
class DataListStudentShort < DataList
|
class DataListStudentShort < DataList
|
||||||
|
def initialize(items)
|
||||||
|
super(items.select { |item| item.is_a?(StudentShort) })
|
||||||
|
end
|
||||||
|
|
||||||
def get_names
|
def get_names
|
||||||
['№', 'Фамилия и инициалы', 'Телефон', 'Telegram', 'Email']
|
column_names
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_data
|
def get_data
|
||||||
data = @items.each_with_index.map do |student, index|
|
data = prepare_table_data
|
||||||
|
DataTable.new(data)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def column_names
|
||||||
|
['№', 'Фамилия и инициалы', 'Телефон', 'Telegram', 'Email']
|
||||||
|
end
|
||||||
|
|
||||||
|
def prepare_table_data
|
||||||
|
@items.each_with_index.map do |item, index|
|
||||||
|
prepare_row(item, index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def prepare_row(item, index)
|
||||||
[
|
[
|
||||||
index + 1, # id
|
index + 1, # id
|
||||||
student.surname_initials, # Фамилия и инициалы
|
item.surname_initials, # Фамилия и инициалы
|
||||||
student.phone || '-', # Телефон (или прочерк)
|
item.phone || '-', # Телефон (или прочерк)
|
||||||
student.telegram || '-', # Telegram (или прочерк)
|
item.telegram || '-', # Telegram (или прочерк)
|
||||||
student.email || '-' # Email (или прочерк)
|
item.email || '-' # Email (или прочерк)
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
DataTable.new(data)
|
def extract_surname_initials(item)
|
||||||
|
item.respond_to?(:surname_initials) ? item.surname_initials : 'N/A'
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_phone(item)
|
||||||
|
item.respond_to?(:phone) ? item.phone : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_telegram(item)
|
||||||
|
item.respond_to?(:telegram) ? item.telegram : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_email(item)
|
||||||
|
item.respond_to?(:email) ? item.email : nil
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Reference in new issue