mvcStudentXD 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05bfbb2529d8c939220be36718ce9cbb3c90ff7056babd6bff767525894754dc
4
- data.tar.gz: 2cd7ca8f883728d63d2f7c49ff24e6582cfdae96c3f7635be8e74ecfead31e54
3
+ metadata.gz: 5edf4f3f16bbfe82ed1302ffd8ec980a7cc0531faac61609e3cd2ae2b8abbeeb
4
+ data.tar.gz: d621edb76de6e5c4b7b3f27798e428fa8ba571f25a6e90408d27a8eef24923c4
5
5
  SHA512:
6
- metadata.gz: 9b762d1821aba2a08e7afba5bac14ae0094ccff1a767faaefab8ca2fc47dd2a4106440e1776f56f8f69edf237f2fd0d82f909000d45119a355a7b1352ce982eb
7
- data.tar.gz: 52b6e6fa83cee5074086b0aef86a87df14ff08eb6b333c870430b66b012428afeb350ef4fe0acb54ea44c0fb3f9e742605fee34227ab6870afa4519734ffe567
6
+ metadata.gz: c59b1615e8e6f6255f071690609df5ccb14ab45b18c42a75fc656a2fac4df5314de05bb1e2fd0eb4efc998a3973e554cb680610125b675801f46d4ff1abd3f0a
7
+ data.tar.gz: 710895761936a9a5c215a39931872661ca8ddfb9537565ba8ef63736f8d3548b1a5691539d528b1789def5abb93157b806b114e08b51dbee1fa375a56de390ba
data/Gemfile CHANGED
@@ -15,4 +15,8 @@ gem "mysql2"
15
15
 
16
16
  gem "glimmer-dsl-libui", '~> 0.7.4'
17
17
 
18
- gem 'win32api'
18
+ gem 'win32api'
19
+
20
+ gem 'sinatra', '~> 3.0', '>= 3.0.6'
21
+
22
+ gem 'thin', '~> 1.8', '>= 1.8.2'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'Student_list'
2
+ require_relative '../Student_list'
3
3
  class StudentsListAdapter
4
4
  private_class_method :new
5
5
  def get_student(id)
@@ -1,5 +1,5 @@
1
- require_relative 'Student_short'
2
- require_relative 'Data_table'
1
+ require_relative '../model/Student_short'
2
+ require_relative '../containers/Data_table'
3
3
  require_relative 'Data_list'
4
4
  class DataListStudentShort < DataList
5
5
 
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require_relative 'Converter'
2
+ require_relative '../converters/Converter'
3
3
  class ConverterJSON < Converter
4
4
  public_class_method :new
5
5
 
@@ -1,4 +1,4 @@
1
- require_relative 'Converter'
1
+ require_relative '../verter'
2
2
  class ConverterTxt < Converter
3
3
  public_class_method :new
4
4
 
@@ -1,5 +1,5 @@
1
1
  require 'yaml'
2
- require_relative 'Converter'
2
+ require_relative '../verter'
3
3
  class ConverterYAML < Converter
4
4
  public_class_method :new
5
5
 
@@ -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,5 +1,5 @@
1
1
  require 'json'
2
- require_relative 'StudentBase'
2
+ require_relative '../model/StudentBase'
3
3
  class Student < StudentBase
4
4
 
5
5
  public_class_method :new
@@ -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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MvcStudentXD
4
- VERSION = "1.0.1"
4
+ VERSION = "1.1.1"
5
5
  end
@@ -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
@@ -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, existing_student = nil)
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
- rescue Mysql2::Error::ConnectionError
24
- on_db_conn_error
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.0.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-05 00:00:00.000000000 Z
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/Student_short.rb
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/main.rb
42
- - lib/main_window.rb
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
- - lib/tab_students.rb
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