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 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