Sha256: 1673906eb65bc32dea36a2f885eca1ed5a4b78d6710c460c35044b39fbfaab31
Contents?: true
Size: 1.59 KB
Versions: 1
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true require './lib/repositories/containers/data_table' class DataList # Это "абстрактный" класс private_class_method :new attr_writer :objects # Конструктор, принимает массив любых объектов def initialize(objects) self.objects = objects @listeners = [] end def add_listener(listener) @listeners << listener end def remove_listener(listener) @listeners.delete(listener) end def notify @listeners.each { |lst| lst.on_datalist_changed(data_table) } end # Выбрать элемент по номеру def select_element(number) self.selected_num = number < objects.size ? number : nil end def selected_id objects[selected_num].id end # Получить DataTable со всеми элементами. def data_table result = [] counter = 0 objects.each do |obj| row = [] row << counter row.push(*table_fields(obj)) result << row counter += 1 end DataTable.new(result) end # Добавить элементы в конец списка def replace_objects(objects) self.objects = objects.dup notify end protected # Список значений полей для DataTable. Переопределить в наследниках def table_fields(_obj) [] end # Имена атрибутов объектов по порядку. Переопределить в наследниках def column_names [] end private attr_reader :objects attr_accessor :selected_num end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
papaSquidLib-0.1.0 | lib/repositories/containers/data_list.rb |