mvcStudentXD 1.0.1 → 1.1.1
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 +4 -4
- data/Gemfile +5 -1
- data/lib/{student_list_adapter.rb → adapters/student_list_adapter.rb} +1 -1
- data/lib/{Data_list_student_short.rb → containers/Data_list_student_short.rb} +2 -2
- data/lib/{Converter_json.rb → converters/Converter_json.rb} +1 -1
- data/lib/{Converter_txt.rb → converters/Converter_txt.rb} +1 -1
- data/lib/{Converter_yaml.rb → converters/Converter_yaml.rb} +1 -1
- data/lib/database/students_db.rb +5 -8
- data/lib/{Student.rb → model/Student.rb} +1 -1
- data/lib/{Student_short.rb → model/Student_short.rb} +1 -2
- data/lib/mvcStudentXD/version.rb +1 -1
- data/lib/student_edit_form_controller.rb +14 -7
- data/lib/student_input_form.rb +3 -4
- data/lib/student_input_form_controller.rb +14 -5
- data/lib/student_list_controller.rb +20 -11
- data/mvcStudentXD.gemspec +38 -0
- metadata +14 -16
- data/lib/main.rb +0 -23
- data/lib/main_window.rb +0 -28
- data/lib/tab_students.rb +0 -152
- /data/lib/{Data_list.rb → containers/Data_list.rb} +0 -0
- /data/lib/{Data_table.rb → containers/Data_table.rb} +0 -0
- /data/lib/{Converter.rb → converters/Converter.rb} +0 -0
- /data/lib/{StudentBase.rb → model/StudentBase.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5edf4f3f16bbfe82ed1302ffd8ec980a7cc0531faac61609e3cd2ae2b8abbeeb
|
4
|
+
data.tar.gz: d621edb76de6e5c4b7b3f27798e428fa8ba571f25a6e90408d27a8eef24923c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c59b1615e8e6f6255f071690609df5ccb14ab45b18c42a75fc656a2fac4df5314de05bb1e2fd0eb4efc998a3973e554cb680610125b675801f46d4ff1abd3f0a
|
7
|
+
data.tar.gz: 710895761936a9a5c215a39931872661ca8ddfb9537565ba8ef63736f8d3548b1a5691539d528b1789def5abb93157b806b114e08b51dbee1fa375a56de390ba
|
data/Gemfile
CHANGED
data/lib/database/students_db.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# #encoding: UTF-8
|
3
3
|
require 'mysql2'
|
4
|
-
require_relative '../Data_list_student_short'
|
5
|
-
require_relative '../Data_list'
|
6
|
-
require_relative '../Student'
|
7
|
-
require_relative '../Student_short'
|
4
|
+
require_relative '../containers/Data_list_student_short'
|
5
|
+
require_relative '../containers/Data_list'
|
6
|
+
require_relative '../model/Student'
|
7
|
+
require_relative '../model/Student_short'
|
8
8
|
class StudentDB
|
9
9
|
|
10
10
|
attr_accessor :db_connection
|
@@ -76,7 +76,4 @@ class StudentDB
|
|
76
76
|
result.first.values.first
|
77
77
|
end
|
78
78
|
|
79
|
-
end
|
80
|
-
|
81
|
-
students_db = StudentDB.new
|
82
|
-
students_db.insert_data
|
79
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative 'StudentBase'
|
1
|
+
require_relative '../model/StudentBase'
|
2
2
|
class StudentShort < StudentBase
|
3
3
|
|
4
4
|
public_class_method :new
|
@@ -11,7 +11,6 @@ class StudentShort < StudentBase
|
|
11
11
|
attr_reader :fio, :contact, :git, :id
|
12
12
|
|
13
13
|
def self.from_student_class(student)
|
14
|
-
puts("In studentShort: #{student.to_s}")
|
15
14
|
StudentShort.new(student.id, student.get_info)
|
16
15
|
end
|
17
16
|
|
data/lib/mvcStudentXD/version.rb
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
require_relative '../../mvcStudentXD/lib/util/LoggerHolder'
|
3
3
|
class StudentEditFormController
|
4
4
|
def initialize(parent_controller, existing_student_id)
|
5
5
|
@parent_controller = parent_controller
|
6
6
|
@existing_student_id = existing_student_id
|
7
|
+
LoggerHolder.instance.debug('StudentEditFormController: initialized')
|
7
8
|
end
|
8
9
|
|
9
10
|
def set_view(view)
|
10
11
|
@view = view
|
11
12
|
end
|
12
13
|
|
14
|
+
def refresh
|
15
|
+
@parent_controller.refresh_data(1,20)
|
16
|
+
end
|
17
|
+
|
13
18
|
def on_view_created
|
14
19
|
begin
|
15
20
|
@student_list = StudentListAdv.new(StudentsListDBAdapter.new(StudentListDB.instance))
|
16
|
-
rescue Mysql2::Error::ConnectionError
|
17
|
-
on_db_conn_error
|
21
|
+
rescue Mysql2::Error::ConnectionError=>e
|
22
|
+
on_db_conn_error(e)
|
18
23
|
end
|
19
24
|
@existing_student = @student_list.get_student(@existing_student_id)
|
25
|
+
|
20
26
|
@view.make_readonly(:git, :telegram, :email, :phone)
|
21
|
-
print("IM IN ONVIEW EDIT")
|
22
27
|
populate_fields(@existing_student)
|
23
28
|
end
|
24
29
|
|
@@ -36,11 +41,11 @@ class StudentEditFormController
|
|
36
41
|
def process_fields(fields)
|
37
42
|
begin
|
38
43
|
new_student = Student.from_hash(fields)
|
39
|
-
print("IM IN PROCESS EDIT")
|
40
44
|
@student_list.replace_student(@existing_student_id, new_student)
|
41
|
-
|
45
|
+
LoggerHolder.instance.debug('StudentEditFormController: replacing student in DB')
|
42
46
|
@view.close
|
43
47
|
rescue ArgumentError => e
|
48
|
+
LoggerHolder.instance.debug("StudentEditFormController: wrong fields: #{e.message}")
|
44
49
|
api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
|
45
50
|
api.call(0, e.message, 'Error', 0)
|
46
51
|
end
|
@@ -48,7 +53,9 @@ class StudentEditFormController
|
|
48
53
|
|
49
54
|
private
|
50
55
|
|
51
|
-
def on_db_conn_error
|
56
|
+
def on_db_conn_error(error)
|
57
|
+
LoggerHolder.instance.debug('StudentEditFormController: DB connection error:')
|
58
|
+
LoggerHolder.instance.error(error.message)
|
52
59
|
api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
|
53
60
|
api.call(0, "No connection to DB", "Error", 0)
|
54
61
|
@view.close
|
data/lib/student_input_form.rb
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
require 'glimmer-dsl-libui'
|
4
4
|
require_relative 'student_input_form_controller'
|
5
|
-
require_relative 'StudentBase'
|
5
|
+
require_relative 'model/StudentBase'
|
6
6
|
require 'win32api'
|
7
7
|
|
8
8
|
class StudentInputForm
|
9
9
|
include Glimmer
|
10
10
|
|
11
|
-
def initialize(controller,
|
11
|
+
def initialize(controller,existing_student = nil)
|
12
12
|
@existing_student = existing_student.to_hash unless existing_student.nil?
|
13
13
|
@controller = controller
|
14
14
|
@entries = {}
|
@@ -44,9 +44,8 @@ class StudentInputForm
|
|
44
44
|
on_clicked {
|
45
45
|
values = @entries.transform_values { |v| v.text.force_encoding("utf-8").strip }
|
46
46
|
values.transform_values! { |v| v.empty? ? nil : v}
|
47
|
-
print
|
48
|
-
print values
|
49
47
|
@controller.process_fields(values)
|
48
|
+
@controller.refresh
|
50
49
|
}
|
51
50
|
}
|
52
51
|
}
|
@@ -1,21 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'win32api'
|
4
|
-
|
4
|
+
require_relative '../../mvcStudentXD/lib/util/LoggerHolder'
|
5
5
|
class StudentInputFormController
|
6
6
|
def initialize(parent_controller)
|
7
7
|
@parent_controller = parent_controller
|
8
|
+
LoggerHolder.instance.debug('StudentInputFormController: initialized')
|
8
9
|
end
|
9
10
|
|
10
11
|
def set_view(view)
|
11
12
|
@view = view
|
12
13
|
end
|
13
14
|
|
15
|
+
|
16
|
+
def refresh
|
17
|
+
@parent_controller.refresh_data(1,20)
|
18
|
+
end
|
19
|
+
|
14
20
|
def on_view_created
|
15
21
|
begin
|
16
22
|
@student_list = StudentListAdv.new(StudentsListDBAdapter.new(StudentListDB.instance))
|
17
|
-
rescue Mysql2::Error::ConnectionError
|
18
|
-
on_db_conn_error
|
23
|
+
rescue Mysql2::Error::ConnectionError=>e
|
24
|
+
on_db_conn_error(e)
|
19
25
|
end
|
20
26
|
end
|
21
27
|
|
@@ -30,16 +36,19 @@ class StudentInputFormController
|
|
30
36
|
student = Student.new(last_name, first_name, parental_name, **fields)
|
31
37
|
|
32
38
|
@student_list.add_student(student)
|
33
|
-
|
39
|
+
LoggerHolder.instance.debug('StudentInputFormController: adding student to DB')
|
34
40
|
@view.close
|
35
41
|
rescue ArgumentError => e
|
36
42
|
api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
|
43
|
+
LoggerHolder.instance.debug("StudentInputFormController: wrong fields: #{e.message}")
|
37
44
|
api.call(0, e.message, 'Error', 0)
|
38
45
|
end
|
39
46
|
end
|
40
47
|
|
41
48
|
|
42
|
-
def on_db_conn_error
|
49
|
+
def on_db_conn_error(error)
|
50
|
+
LoggerHolder.instance.debug('StudentInputFormController: DB connection error:')
|
51
|
+
LoggerHolder.instance.error(error.message)
|
43
52
|
api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
|
44
53
|
api.call(0, "No connection to DB", "Error", 0)
|
45
54
|
@view.close
|
@@ -2,41 +2,47 @@
|
|
2
2
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
require_relative 'student_list_adv'
|
5
|
-
require_relative 'student_list_adapter'
|
5
|
+
require_relative 'adapters/student_list_adapter'
|
6
6
|
require_relative 'database/student_list_db'
|
7
|
-
require_relative 'Converter_json'
|
8
|
-
require_relative 'Converter'
|
7
|
+
require_relative 'converters/Converter_json'
|
8
|
+
require_relative 'converters/Converter'
|
9
9
|
require_relative 'Student_list'
|
10
10
|
require_relative 'student_edit_form_controller'
|
11
11
|
require 'win32api'
|
12
12
|
require 'mysql2'
|
13
|
+
require_relative '../../mvcStudentXD/lib/util/LoggerHolder'
|
13
14
|
class StudentListController
|
14
15
|
def initialize(view)
|
16
|
+
LoggerHolder.instance.debug('StudentListController: init start')
|
15
17
|
@view = view
|
16
18
|
@data_list = DataListStudentShort.new
|
17
19
|
@data_list.add_listener(@view)
|
20
|
+
LoggerHolder.instance.debug('StudentListController: init done')
|
18
21
|
end
|
19
22
|
|
20
23
|
def on_view_created
|
21
24
|
begin
|
22
25
|
@student_list = StudentListAdv.new(StudentsListDBAdapter.new(StudentListDB.instance))
|
23
|
-
|
24
|
-
|
26
|
+
LoggerHolder.instance.debug('StudentListController: created student repository')
|
27
|
+
rescue Mysql2::Error::ConnectionError=>e
|
28
|
+
on_db_conn_error(e)
|
25
29
|
end
|
26
30
|
end
|
27
31
|
|
28
32
|
def delete_selected(current_page, per_page, selected_row)
|
29
33
|
begin
|
34
|
+
LoggerHolder.instance.debug('StudentListController: deleting selected student')
|
30
35
|
student_num = (current_page - 1) * per_page + selected_row
|
31
36
|
@data_list.select_element(student_num)
|
32
37
|
student_id = @data_list.selected_id
|
33
38
|
@student_list.remove_student(student_id)
|
34
|
-
rescue
|
35
|
-
on_db_conn_error
|
39
|
+
rescue => e
|
40
|
+
on_db_conn_error(e)
|
36
41
|
end
|
37
42
|
end
|
38
43
|
|
39
44
|
def show_modal_add
|
45
|
+
LoggerHolder.instance.debug('StudentListController: showing modal (add)')
|
40
46
|
controller = StudentInputFormController.new(self)
|
41
47
|
view = StudentInputForm.new(controller)
|
42
48
|
controller.set_view(view)
|
@@ -44,6 +50,7 @@ class StudentListController
|
|
44
50
|
end
|
45
51
|
|
46
52
|
def show_modal_edit(current_page, per_page, selected_row)
|
53
|
+
LoggerHolder.instance.debug('StudentListController: showing modal (edit)')
|
47
54
|
student_num = (current_page - 1) * per_page + selected_row
|
48
55
|
@data_list.select_element(student_num)
|
49
56
|
student_id = @data_list.selected_id
|
@@ -57,16 +64,18 @@ class StudentListController
|
|
57
64
|
begin
|
58
65
|
@data_list = @student_list.get_students_pag(page, per_page, @data_list)
|
59
66
|
@view.update_student_count(@student_list.count)
|
60
|
-
rescue
|
61
|
-
on_db_conn_error
|
67
|
+
rescue => e
|
68
|
+
on_db_conn_error(e)
|
62
69
|
end
|
63
70
|
end
|
64
71
|
|
65
72
|
private
|
66
|
-
def on_db_conn_error
|
73
|
+
def on_db_conn_error(error)
|
74
|
+
LoggerHolder.instance.error('TabStudentsController: DB connection error:')
|
75
|
+
LoggerHolder.instance.error(error.message)
|
67
76
|
api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
|
68
77
|
api.call(0, "No connection to DB", "Error", 0)
|
78
|
+
# TODO: Возможность переключения на JSON помимо exit
|
69
79
|
exit(false)
|
70
80
|
end
|
71
|
-
|
72
81
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/mvcStudentXD/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "mvcStudentXD"
|
7
|
+
spec.version = MvcStudentXD::VERSION
|
8
|
+
spec.authors = ["papaSquid"]
|
9
|
+
spec.email = ["mrxameleonx@mail.ru"]
|
10
|
+
spec.license = "MIT"
|
11
|
+
spec.summary = "Gem with Student MC"
|
12
|
+
spec.description = "models and controllers"
|
13
|
+
spec.homepage = "https://github.com/KiTTeNqz/mvcStudentXD"
|
14
|
+
spec.required_ruby_version = ">= 2.6.0"
|
15
|
+
|
16
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
17
|
+
|
18
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
+
spec.metadata["source_code_uri"] = "https://github.com/KiTTeNqz/mvcStudentXD"
|
20
|
+
spec.metadata["changelog_uri"] = "https://github.com/KiTTeNqz/mvcStudentXD/blob/master/CHANGELOG.md"
|
21
|
+
|
22
|
+
# Specify which files should be added to the gem when it is released.
|
23
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
24
|
+
spec.files = Dir.chdir(__dir__) do
|
25
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
26
|
+
(File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
# Uncomment to register a new dependency of your gem
|
34
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
35
|
+
|
36
|
+
# For more information and examples about making a new gem, check out our
|
37
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
38
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mvcStudentXD
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- papaSquid
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: models and controllers
|
14
14
|
email:
|
@@ -23,32 +23,30 @@ files:
|
|
23
23
|
- Gemfile
|
24
24
|
- README.md
|
25
25
|
- Rakefile
|
26
|
-
- lib/Converter.rb
|
27
|
-
- lib/Converter_json.rb
|
28
|
-
- lib/Converter_txt.rb
|
29
|
-
- lib/Converter_yaml.rb
|
30
|
-
- lib/Data_list.rb
|
31
|
-
- lib/Data_list_student_short.rb
|
32
|
-
- lib/Data_table.rb
|
33
|
-
- lib/Student.rb
|
34
|
-
- lib/StudentBase.rb
|
35
26
|
- lib/Student_list.rb
|
36
|
-
- lib/
|
27
|
+
- lib/adapters/student_list_adapter.rb
|
28
|
+
- lib/containers/Data_list.rb
|
29
|
+
- lib/containers/Data_list_student_short.rb
|
30
|
+
- lib/containers/Data_table.rb
|
31
|
+
- lib/converters/Converter.rb
|
32
|
+
- lib/converters/Converter_json.rb
|
33
|
+
- lib/converters/Converter_txt.rb
|
34
|
+
- lib/converters/Converter_yaml.rb
|
37
35
|
- lib/database/scripts/create_table.sql
|
38
36
|
- lib/database/scripts/insert_data.sql
|
39
37
|
- lib/database/student_list_db.rb
|
40
38
|
- lib/database/students_db.rb
|
41
|
-
- lib/
|
42
|
-
- lib/
|
39
|
+
- lib/model/Student.rb
|
40
|
+
- lib/model/StudentBase.rb
|
41
|
+
- lib/model/Student_short.rb
|
43
42
|
- lib/mvcStudentXD.rb
|
44
43
|
- lib/mvcStudentXD/version.rb
|
45
44
|
- lib/student_edit_form_controller.rb
|
46
45
|
- lib/student_input_form.rb
|
47
46
|
- lib/student_input_form_controller.rb
|
48
|
-
- lib/student_list_adapter.rb
|
49
47
|
- lib/student_list_adv.rb
|
50
48
|
- lib/student_list_controller.rb
|
51
|
-
-
|
49
|
+
- mvcStudentXD.gemspec
|
52
50
|
- sig/mvcStudentXD.rbs
|
53
51
|
homepage: https://github.com/KiTTeNqz/mvcStudentXD
|
54
52
|
licenses:
|
data/lib/main.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require_relative 'Student'
|
2
|
-
require_relative 'Student_short'
|
3
|
-
require_relative 'Data_list'
|
4
|
-
require_relative 'Data_list_student_short'
|
5
|
-
require_relative 'Student_list'
|
6
|
-
require_relative 'Converter_yaml'
|
7
|
-
require_relative 'Converter_txt'
|
8
|
-
require_relative 'Converter_json'
|
9
|
-
require_relative 'database/student_list_db'
|
10
|
-
require_relative 'student_list_adv.rb'
|
11
|
-
require_relative 'student_list_adapter.rb'
|
12
|
-
require 'mysql2'
|
13
|
-
|
14
|
-
db = StudentListDB.instance
|
15
|
-
puts db.get_student(2)
|
16
|
-
puts db.count
|
17
|
-
|
18
|
-
studentsList = StudentListAdv.new(StudentsListDBAdapter.new(StudentListDB.instance))
|
19
|
-
json = StudentList.new(ConverterJSON.new)
|
20
|
-
studentsList2 = StudentListAdv.new(StudentsListConverterAdapter.new(json, 'C:/Users/Дмитрий/RubymineProjects/RubyLabs/Lab2/studentsRead.json'))
|
21
|
-
puts studentsList.get_student(3)
|
22
|
-
|
23
|
-
puts studentsList2.get_student(2)
|
data/lib/main_window.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'glimmer-dsl-libui'
|
4
|
-
require_relative 'tab_students'
|
5
|
-
|
6
|
-
class MainWindow
|
7
|
-
include Glimmer
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@view_tab_students = TabStudents.new
|
11
|
-
end
|
12
|
-
|
13
|
-
def create
|
14
|
-
window('Универ', 600, 300) {
|
15
|
-
tab {
|
16
|
-
tab_item('Студенты') {
|
17
|
-
@view_tab_students.create
|
18
|
-
}
|
19
|
-
|
20
|
-
tab_item('Вкладка 2') { }
|
21
|
-
tab_item('Вкладка 3') { }
|
22
|
-
}
|
23
|
-
}
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
main_window = MainWindow.new.create
|
28
|
-
main_window.show
|
data/lib/tab_students.rb
DELETED
@@ -1,152 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# frozen_string_literal: true
|
4
|
-
require 'glimmer-dsl-libui'
|
5
|
-
require_relative 'student_list_controller'
|
6
|
-
require_relative 'student_input_form'
|
7
|
-
|
8
|
-
class TabStudents
|
9
|
-
include Glimmer
|
10
|
-
STUDENTS_PER_PAGE = 20
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@controller = StudentListController.new(self)
|
14
|
-
@current_page = 1
|
15
|
-
@total_count = 0
|
16
|
-
end
|
17
|
-
|
18
|
-
def on_create
|
19
|
-
@controller.on_view_created
|
20
|
-
@controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Метод наблюдателя datalist
|
24
|
-
def on_datalist_changed(new_table)
|
25
|
-
arr = new_table.to_2d_array
|
26
|
-
@table.model_array = arr
|
27
|
-
end
|
28
|
-
|
29
|
-
def update_student_count(new_cnt)
|
30
|
-
@total_count = new_cnt
|
31
|
-
@page_label.text = "#{@current_page} / #{(@total_count / STUDENTS_PER_PAGE.to_f).ceil}"
|
32
|
-
end
|
33
|
-
|
34
|
-
def create
|
35
|
-
root = horizontal_box {
|
36
|
-
# Секция 1
|
37
|
-
vertical_box {
|
38
|
-
stretchy false
|
39
|
-
|
40
|
-
form {
|
41
|
-
stretchy false
|
42
|
-
|
43
|
-
@filter_last_name_initials = entry {
|
44
|
-
label 'ФИО'
|
45
|
-
}
|
46
|
-
|
47
|
-
@filters = {}
|
48
|
-
fields = [[:git, 'Github'], [:email, 'Почта'], [:phone, 'Телефон'], [:telegram, 'Телеграм']]
|
49
|
-
|
50
|
-
fields.each do |field|
|
51
|
-
@filters[field[0]] = {}
|
52
|
-
|
53
|
-
@filters[field[0]][:combobox] = combobox {
|
54
|
-
label "#{field[1]}?"
|
55
|
-
items ['Не важно', 'Есть', 'Нет']
|
56
|
-
selected 0
|
57
|
-
|
58
|
-
on_selected do
|
59
|
-
if @filters[field[0]][:combobox].selected == 1
|
60
|
-
@filters[field[0]][:entry].read_only = false
|
61
|
-
else
|
62
|
-
@filters[field[0]][:entry].text = ''
|
63
|
-
@filters[field[0]][:entry].read_only = true
|
64
|
-
end
|
65
|
-
end
|
66
|
-
}
|
67
|
-
|
68
|
-
@filters[field[0]][:entry] = entry {
|
69
|
-
label field[1]
|
70
|
-
read_only true
|
71
|
-
}
|
72
|
-
end
|
73
|
-
}
|
74
|
-
}
|
75
|
-
|
76
|
-
# Секция 2
|
77
|
-
vertical_box {
|
78
|
-
@table = refined_table(
|
79
|
-
table_editable: false,
|
80
|
-
filter: lambda do |row_hash, query|
|
81
|
-
utf8_query = query.force_encoding("utf-8")
|
82
|
-
row_hash['Фамилия И. О'].include?(utf8_query)
|
83
|
-
end,
|
84
|
-
table_columns: {
|
85
|
-
'#' => :text,
|
86
|
-
'Фамилия И. О' => :text,
|
87
|
-
'Гит' => :text,
|
88
|
-
'Контакт' => :text,
|
89
|
-
},
|
90
|
-
per_page: STUDENTS_PER_PAGE
|
91
|
-
)
|
92
|
-
|
93
|
-
@pages = horizontal_box {
|
94
|
-
stretchy false
|
95
|
-
|
96
|
-
button("<") { stretchy true }
|
97
|
-
button("<") {
|
98
|
-
stretchy true
|
99
|
-
|
100
|
-
on_clicked do
|
101
|
-
@current_page = [@current_page - 1, 1].max
|
102
|
-
@controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
|
103
|
-
end
|
104
|
-
|
105
|
-
}
|
106
|
-
@page_label = label("...") { stretchy false }
|
107
|
-
button(">") { stretchy true }
|
108
|
-
button(">") {
|
109
|
-
stretchy true
|
110
|
-
|
111
|
-
on_clicked do
|
112
|
-
@current_page = [@current_page + 1, (@total_count / STUDENTS_PER_PAGE.to_f).ceil].min
|
113
|
-
@controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
|
114
|
-
end
|
115
|
-
}
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
# Секция 3
|
120
|
-
vertical_box {
|
121
|
-
stretchy true
|
122
|
-
|
123
|
-
button('Добавить') {
|
124
|
-
stretchy false
|
125
|
-
|
126
|
-
on_clicked {
|
127
|
-
@controller.show_modal_add
|
128
|
-
}
|
129
|
-
}
|
130
|
-
button('Изменить') {
|
131
|
-
stretchy false
|
132
|
-
|
133
|
-
on_clicked {
|
134
|
-
@controller.show_modal_edit(@current_page, STUDENTS_PER_PAGE, @table.selection) unless @table.selection.nil?
|
135
|
-
}
|
136
|
-
}
|
137
|
-
button('Удалить') {
|
138
|
-
stretchy false
|
139
|
-
|
140
|
-
on_clicked {
|
141
|
-
@controller.delete_selected(@current_page, STUDENTS_PER_PAGE, @table.selection) unless @table.selection.nil?
|
142
|
-
@controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
|
143
|
-
}
|
144
|
-
}
|
145
|
-
button('Обновить') { stretchy false }
|
146
|
-
}
|
147
|
-
}
|
148
|
-
on_create
|
149
|
-
root
|
150
|
-
end
|
151
|
-
|
152
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|