Class: Data_list

Inherits:
Object
  • Object
show all
Includes:
Deep_dup
Defined in:
lib/models/data_list/data_list.rb

Direct Known Subclasses

Data_list_student_short

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Deep_dup

#deep_dup

Constructor Details

#initialize(elements) ⇒ Data_list

constructor



9
10
11
12
13
14
# File 'lib/models/data_list/data_list.rb', line 9

def initialize(elements)
    self.data = elements
    self.selected = []
    self.index = 1
    self.observers = []
end

Instance Attribute Details

#countObject

Returns the value of attribute count.



6
7
8
# File 'lib/models/data_list/data_list.rb', line 6

def count
  @count
end

#data=(data) ⇒ Object

data setter



65
66
67
68
69
70
71
# File 'lib/models/data_list/data_list.rb', line 65

def data=(data)
    @data = {}
    data.each do |element|
        @data[index] = deep_dup(element)
        self.index += 1
    end
end

#indexObject

Returns the value of attribute index.



6
7
8
# File 'lib/models/data_list/data_list.rb', line 6

def index
  @index
end

Instance Method Details

#add_observer(observer) ⇒ Object



80
81
82
# File 'lib/models/data_list/data_list.rb', line 80

def add_observer(observer)
    self.observers << observer
end

#clear_selectedObject

clear selected



37
38
39
# File 'lib/models/data_list/data_list.rb', line 37

def clear_selected
    self.selected = []
end

#deselect(number) ⇒ Object

deselect



32
33
34
# File 'lib/models/data_list/data_list.rb', line 32

def deselect(number)
    self.selected.delete(number) if self.selected.include?(number)
end

#get_dataObject

get_data



55
56
57
58
59
60
61
62
# File 'lib/models/data_list/data_list.rb', line 55

def get_data()
    result = []
    self.data.each do |key, value|
        row = build_row(key, value)
        result.append(row)
    end
    result
end

#get_namesObject

get names (abstract)

Raises:

  • (NotImplementedError)


50
51
52
# File 'lib/models/data_list/data_list.rb', line 50

def get_names
    raise NotImplementedError, "Not implemented"
end

#get_selectedObject

get selected ids



23
24
25
26
27
28
29
# File 'lib/models/data_list/data_list.rb', line 23

def get_selected
    ids = []
    self.selected.each do |key|
        ids << self.data[key].id
    end
    ids
end

#notifyObject



73
74
75
76
77
78
# File 'lib/models/data_list/data_list.rb', line 73

def notify
    observers.each do |observer|
        observer.set_table_params(self.get_names, self.count)
        observer.set_table_data(self.retrieve_data)
    end
end

#retrieve_dataObject

pattern-method



42
43
44
45
46
47
# File 'lib/models/data_list/data_list.rb', line 42

def retrieve_data()
    result = []
    result << self.get_names
    result.concat(self.get_data)
    Data_table.new(result)
end

#select(number) ⇒ Object

select element id by number

Raises:

  • (IndexError)


17
18
19
20
# File 'lib/models/data_list/data_list.rb', line 17

def select(number)
    raise IndexError, "Index out of bounds" unless self.valid_index?(number)
    self.selected << number unless self.selected.include?(number)
end