student_ctrl 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 12e4983fbc30c2f3918251185cb288197e745f2f7828db489a70a31a30b692a5
|
4
|
+
data.tar.gz: c992c2cf02e96d406937f7ab9c41e2877a789d634332cfa6a2205210c9bebecf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 54c119a04e17ecd5605b0d97ee19544b79c769bff49ac3d1ead41f40d82bef99bbe4a8cad37c4bd5698f7148042f8d0c02e5d989d6766ad5e61458c487264c04
|
7
|
+
data.tar.gz: 95730087425eff6e3af30346161eabd95e02f018fa37308b53ccf20dcd5d962fd61b8501cae53594abeeb15a570aa599aaeb4491b252fb421baa0f68239e09c7
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require_relative "window.rb"
|
2
|
+
require_relative 'Basic_list'
|
3
|
+
require_relative 'Student_list_DB'
|
4
|
+
|
5
|
+
class StudentListController
|
6
|
+
private
|
7
|
+
attr_accessor :view, :list, :data_list_student_short
|
8
|
+
|
9
|
+
public
|
10
|
+
def initialize(view)
|
11
|
+
self.view = view
|
12
|
+
self.list = Basic_list.new
|
13
|
+
self.list.format = Student_list_DB.new
|
14
|
+
self.load_list
|
15
|
+
self.data_list_student_short = self.list.get_k_n_student_short_list(k:0, n:self.table_row_count)
|
16
|
+
self.data_list_student_short.view = self.view
|
17
|
+
end
|
18
|
+
|
19
|
+
def cur_page
|
20
|
+
if @cur_page.nil? or @cur_page <= 1 or @cur_page > self.page_count then @cur_page = 1 end
|
21
|
+
|
22
|
+
@cur_page
|
23
|
+
end
|
24
|
+
|
25
|
+
def del_selected
|
26
|
+
id_array = self.data_list_student_short.get_selected
|
27
|
+
id_array.each do |id|
|
28
|
+
self.list.delete_byID(id: id)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def unselect
|
33
|
+
self.data_list_student_short.unselect
|
34
|
+
end
|
35
|
+
|
36
|
+
def select(id)
|
37
|
+
self.data_list_student_short.select(id)
|
38
|
+
end
|
39
|
+
|
40
|
+
def page_count
|
41
|
+
if not self.list.nil? then
|
42
|
+
(self.list.get_student_short_count.to_f / self.table_row_count).ceil
|
43
|
+
else
|
44
|
+
1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def next_page
|
49
|
+
self.cur_page += 1
|
50
|
+
end
|
51
|
+
|
52
|
+
def prev_page
|
53
|
+
self.cur_page -= 1
|
54
|
+
end
|
55
|
+
|
56
|
+
def refresh_data(reload: false)
|
57
|
+
if (reload) then
|
58
|
+
self.load_list()
|
59
|
+
end
|
60
|
+
|
61
|
+
self.list.get_k_n_student_short_list(k:self.cur_page - 1, n:self.table_row_count, data_list: data_list_student_short)
|
62
|
+
|
63
|
+
self.data_list_student_short.notify
|
64
|
+
end
|
65
|
+
|
66
|
+
def sort
|
67
|
+
self.list.sort_si
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def table_row_count; 10 end
|
74
|
+
|
75
|
+
def last_page?(page)
|
76
|
+
page >= self.page_count
|
77
|
+
end
|
78
|
+
|
79
|
+
def first_page?(page)
|
80
|
+
page <= 1
|
81
|
+
end
|
82
|
+
|
83
|
+
def cur_page=(value)
|
84
|
+
if last_page?(value) then
|
85
|
+
@cur_page = self.page_count
|
86
|
+
elsif first_page?(value) then
|
87
|
+
@cur_page = 1
|
88
|
+
else
|
89
|
+
@cur_page = value
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def load_list
|
94
|
+
self.list.read_list
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require_relative "main_window"
|
2
|
+
require_relative "student_list_controller"
|
3
|
+
|
4
|
+
class Student_List_View
|
5
|
+
def set_table_params(column_names, whole_entities_count)
|
6
|
+
self.window.table.setTableSize(whole_entities_count, 4)
|
7
|
+
self.window.set_table_headers(column_names)
|
8
|
+
end
|
9
|
+
|
10
|
+
def set_table_data(data_table)
|
11
|
+
table = self.window.table
|
12
|
+
|
13
|
+
self.erase_table
|
14
|
+
|
15
|
+
(0...data_table.get_rows_number).each do |x|
|
16
|
+
if data_table.get_element(row:x, col:0).nil? then break end
|
17
|
+
|
18
|
+
(0...data_table.get_cols_number).each do |y|
|
19
|
+
value = data_table.get_element(row:x, col:y)
|
20
|
+
puts value
|
21
|
+
table.setItemText(x, y, value.to_s)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
|
28
|
+
app = FXApp.new
|
29
|
+
|
30
|
+
self.window = MainWindow.new(app)
|
31
|
+
|
32
|
+
self.set_table_handlers
|
33
|
+
self.set_lcr_handlers
|
34
|
+
self.set_tab_book_handler
|
35
|
+
|
36
|
+
app.create
|
37
|
+
|
38
|
+
self.controller = StudentListController.new(self)
|
39
|
+
|
40
|
+
self.window.del_button.connect(SEL_COMMAND) do
|
41
|
+
self.controller.del_selected
|
42
|
+
self.refresh
|
43
|
+
end
|
44
|
+
|
45
|
+
self.refresh
|
46
|
+
|
47
|
+
app.run
|
48
|
+
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def set_table_handlers
|
53
|
+
table = self.window.table
|
54
|
+
chg_button = self.window.chg_button
|
55
|
+
del_button = self.window.del_button
|
56
|
+
|
57
|
+
cells_selected_handler = Proc.new do
|
58
|
+
all_cols_selected = table.selEndColumn - table.selStartColumn + 1 == table.numColumns
|
59
|
+
num_selected_rows = table.selEndRow - table.selStartRow + 1
|
60
|
+
|
61
|
+
self.controller.unselect
|
62
|
+
|
63
|
+
(table.selStartRow..table.selEndRow).each do |row|
|
64
|
+
self.controller.select(row)
|
65
|
+
end
|
66
|
+
|
67
|
+
if num_selected_rows == 1 and all_cols_selected
|
68
|
+
chg_button.enable
|
69
|
+
del_button.enable
|
70
|
+
elsif num_selected_rows > 1 and all_cols_selected
|
71
|
+
chg_button.disable
|
72
|
+
del_button.enable
|
73
|
+
else
|
74
|
+
chg_button.disable
|
75
|
+
del_button.disable
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
table.connect(SEL_SELECTED, &cells_selected_handler)
|
80
|
+
table.connect(SEL_CHANGED, &cells_selected_handler)
|
81
|
+
|
82
|
+
table.columnHeader.connect(SEL_COMMAND) do |_, _, index|
|
83
|
+
if(index == 1)
|
84
|
+
puts("Сортировка")
|
85
|
+
self.sort
|
86
|
+
else
|
87
|
+
puts("Сортировочки пока нет...")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
attr_accessor :window
|
93
|
+
|
94
|
+
private
|
95
|
+
attr_accessor :controller
|
96
|
+
|
97
|
+
def set_tab_book_handler
|
98
|
+
window.tabBook.connect(SEL_COMMAND) do |sender, selector, data|
|
99
|
+
if(sender.current == 0) then
|
100
|
+
self.refresh(reload: true)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def sort
|
106
|
+
self.controller.sort
|
107
|
+
self.refresh
|
108
|
+
end
|
109
|
+
|
110
|
+
def set_lcr_handlers
|
111
|
+
self.window.go_left_button.connect(SEL_COMMAND) do
|
112
|
+
self.controller.prev_page
|
113
|
+
self.refresh
|
114
|
+
end
|
115
|
+
|
116
|
+
self.window.go_right_button.connect(SEL_COMMAND) do
|
117
|
+
self.controller.next_page
|
118
|
+
self.refresh
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
def erase_table
|
124
|
+
for i in 0...self.window.table.numRows
|
125
|
+
for j in 0...self.window.table.numColumns
|
126
|
+
self.window.table.setItemText(i, j, "")
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def refresh(reload: false)
|
132
|
+
self.controller.refresh_data(reload: reload)
|
133
|
+
|
134
|
+
self.window.page_count_label.text = self.controller.page_count.to_s
|
135
|
+
self.window.cur_page_label.text = self.controller.cur_page.to_s
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
end
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: student_ctrl
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Aleksandr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-05-27 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: This gem contains models and controllers for students app. You need to
|
14
|
+
make your own views.
|
15
|
+
email: aleksandr.ivanishev@bk.ru
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- C:/Users/Asus/Documents/GitHub/PP/laba2/laba2.1/student_list_controller.rb
|
21
|
+
- C:/Users/Asus/Documents/GitHub/PP/laba2/laba2.1/window.rb
|
22
|
+
homepage: ''
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata:
|
26
|
+
source_code_uri: https://github.com/shurasikk/PP
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '3.0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubygems_version: 3.3.7
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: Models and controllers for students app
|
46
|
+
test_files: []
|