Class: ViewController

Inherits:
Object
  • Object
show all
Defined in:
lib/model_gem_source/controllers/view_controller.rb,
lib/model_gem_source/controllers/view_controller.rb

Overview

StudentsListViewDelegate

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ ViewController

Returns a new instance of ViewController.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/model_gem_source/controllers/view_controller.rb', line 13

def initialize(model)
    self.model = model

    self.selected_page = 0

    self.data_list = DataListStudentShort.new(list: [], data_constructor: DefaultDataConstructPattern.new())
    self.model.get_students(0, 10, self.data_list)

    self.view = MainView.new(self)
    self.data_list.add_observer(self.view.filter_tab)

    update_table()
    
    self.view.window_view.open
end

Instance Attribute Details

#selected_pageObject

Returns the value of attribute selected_page.



11
12
13
# File 'lib/model_gem_source/controllers/view_controller.rb', line 11

def selected_page
  @selected_page
end

Instance Method Details

#last_pageObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/model_gem_source/controllers/view_controller.rb', line 51

def last_page
    if self.selected_page != 0
        self.selected_page -= 1
    end

    puts self.selected_page

    
    update_table()
end

#next_pageObject



41
42
43
44
45
46
47
48
49
# File 'lib/model_gem_source/controllers/view_controller.rb', line 41

def next_page
    if self.selected_page != self.pages_count - 1
        self.selected_page += 1
    end

    puts self.selected_page

    update_table()
end

#open_student_creation_windowObject



70
71
72
73
74
75
76
77
78
79
# File 'lib/model_gem_source/controllers/view_controller.rb', line 70

def open_student_creation_window()
    controller = CreateStudentController.new()
    controller.onCreate = lambda { |student|
        puts student
        model.add_student(student)
        update_table()
    }

    controller.ui.present
end

#open_student_editing_window(id) ⇒ Object



81
82
83
84
85
86
87
88
89
90
# File 'lib/model_gem_source/controllers/view_controller.rb', line 81

def open_student_editing_window(id)
    student = model.get_student(id)
    controller = EditStudentController.new(student)
    controller.onCreate = lambda { |student|
        model.replace_student(controller.edit_user_id, student)
        update_table()
    }

    controller.ui.present
end

#pages_countObject



33
34
35
# File 'lib/model_gem_source/controllers/view_controller.rb', line 33

def pages_count
    (model.count / 10.0).ceil
end

#remove_student(id) ⇒ Object



92
93
94
95
# File 'lib/model_gem_source/controllers/view_controller.rb', line 92

def remove_student(id)
    model.remove_student(id)
    update_table()
end

#table_columnsObject



37
38
39
# File 'lib/model_gem_source/controllers/view_controller.rb', line 37

def table_columns
    self.data_list.get_names
end

#update_tableObject



62
63
64
65
66
67
68
# File 'lib/model_gem_source/controllers/view_controller.rb', line 62

def update_table
    model.get_students(self.selected_page * 10, (self.selected_page + 1) * 10, self.data_list)
    self.view.filter_tab.next_page_button.enabled = self.selected_page != self.pages_count - 1
    self.view.filter_tab.last_page_button.enabled = self.selected_page != 0

    self.view.filter_tab.table_title.text = (self.selected_page + 1).to_s + " из " + self.pages_count.to_s
end