student_mvp 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.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +35 -0
  3. data/Rakefile +4 -0
  4. data/doc/Add_student_presenter.html +238 -0
  5. data/doc/App_logger.html +386 -0
  6. data/doc/Base_presenter.html +265 -0
  7. data/doc/Binary_tree.html +300 -0
  8. data/doc/Binary_tree_iterator.html +217 -0
  9. data/doc/Contact_sort_decorator.html +219 -0
  10. data/doc/DB_client.html +252 -0
  11. data/doc/Data_list.html +625 -0
  12. data/doc/Data_list_student_short.html +148 -0
  13. data/doc/Data_storage_strategy.html +178 -0
  14. data/doc/Data_table.html +264 -0
  15. data/doc/Deep_dup.html +152 -0
  16. data/doc/Edit_contacts_presenter.html +199 -0
  17. data/doc/Edit_git_presenter.html +192 -0
  18. data/doc/Edit_student_presenter.html +464 -0
  19. data/doc/Field_filter_decorator.html +219 -0
  20. data/doc/Filter.html +148 -0
  21. data/doc/Filter_decorator.html +209 -0
  22. data/doc/Full_name_filter_decorator.html +211 -0
  23. data/doc/Full_name_sort_decorator.html +217 -0
  24. data/doc/Gemfile.html +98 -0
  25. data/doc/Git_sort_decorator.html +220 -0
  26. data/doc/Has_not_field_filter_decorator.html +209 -0
  27. data/doc/JSON_storage_strategy.html +183 -0
  28. data/doc/Person.html +511 -0
  29. data/doc/README_md.html +147 -0
  30. data/doc/Rakefile.html +94 -0
  31. data/doc/Replace_student_presenter.html +204 -0
  32. data/doc/Sort_decorator.html +214 -0
  33. data/doc/Student.html +755 -0
  34. data/doc/StudentMvp/Error.html +105 -0
  35. data/doc/StudentMvp.html +111 -0
  36. data/doc/Student_list_presenter.html +667 -0
  37. data/doc/Student_short.html +398 -0
  38. data/doc/Students_list.html +341 -0
  39. data/doc/Students_list_DB.html +361 -0
  40. data/doc/Students_list_file.html +460 -0
  41. data/doc/Students_list_file_adapter.html +341 -0
  42. data/doc/Students_list_interface.html +298 -0
  43. data/doc/YAML_storage_strategy.html +183 -0
  44. data/doc/bin/setup.html +96 -0
  45. data/doc/created.rid +44 -0
  46. data/doc/css/fonts.css +167 -0
  47. data/doc/css/rdoc.css +662 -0
  48. data/doc/fonts/Lato-Light.ttf +0 -0
  49. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  50. data/doc/fonts/Lato-Regular.ttf +0 -0
  51. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  52. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  53. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  54. data/doc/images/add.png +0 -0
  55. data/doc/images/arrow_up.png +0 -0
  56. data/doc/images/brick.png +0 -0
  57. data/doc/images/brick_link.png +0 -0
  58. data/doc/images/bug.png +0 -0
  59. data/doc/images/bullet_black.png +0 -0
  60. data/doc/images/bullet_toggle_minus.png +0 -0
  61. data/doc/images/bullet_toggle_plus.png +0 -0
  62. data/doc/images/date.png +0 -0
  63. data/doc/images/delete.png +0 -0
  64. data/doc/images/find.png +0 -0
  65. data/doc/images/loadingAnimation.gif +0 -0
  66. data/doc/images/macFFBgHack.png +0 -0
  67. data/doc/images/package.png +0 -0
  68. data/doc/images/page_green.png +0 -0
  69. data/doc/images/page_white_text.png +0 -0
  70. data/doc/images/page_white_width.png +0 -0
  71. data/doc/images/plugin.png +0 -0
  72. data/doc/images/ruby.png +0 -0
  73. data/doc/images/tag_blue.png +0 -0
  74. data/doc/images/tag_green.png +0 -0
  75. data/doc/images/transparent.png +0 -0
  76. data/doc/images/wrench.png +0 -0
  77. data/doc/images/wrench_orange.png +0 -0
  78. data/doc/images/zoom.png +0 -0
  79. data/doc/index.html +174 -0
  80. data/doc/js/darkfish.js +114 -0
  81. data/doc/js/navigation.js +105 -0
  82. data/doc/js/navigation.js.gz +0 -0
  83. data/doc/js/search.js +110 -0
  84. data/doc/js/search_index.js +1 -0
  85. data/doc/js/search_index.js.gz +0 -0
  86. data/doc/js/searcher.js +229 -0
  87. data/doc/js/searcher.js.gz +0 -0
  88. data/doc/table_of_contents.html +1047 -0
  89. data/lib/data_access/DB_client/DB_client.rb +26 -0
  90. data/lib/deep_dup/deep_dup.rb +14 -0
  91. data/lib/logger/logger.rb +64 -0
  92. data/lib/models/binary_tree/binary_tree.rb +163 -0
  93. data/lib/models/binary_tree/binary_tree_iterator.rb +36 -0
  94. data/lib/models/data_list/data_list.rb +97 -0
  95. data/lib/models/data_list/data_list_student_short.rb +16 -0
  96. data/lib/models/data_storage_strategy/JSON_storage_strategy.rb +20 -0
  97. data/lib/models/data_storage_strategy/YAML_storage_strategy.rb +20 -0
  98. data/lib/models/data_storage_strategy/data_storage_strategy.rb +11 -0
  99. data/lib/models/data_table/data_table.rb +52 -0
  100. data/lib/models/filter/filter.rb +5 -0
  101. data/lib/models/filter/filter_decorator.rb +14 -0
  102. data/lib/models/filter/sort_decorator.rb +15 -0
  103. data/lib/models/filter/student_filters/contact_sort_decorator.rb +50 -0
  104. data/lib/models/filter/student_filters/field_filter_decorator.rb +34 -0
  105. data/lib/models/filter/student_filters/full_name_filter_decorator.rb +26 -0
  106. data/lib/models/filter/student_filters/full_name_sort_decorator.rb +32 -0
  107. data/lib/models/filter/student_filters/git_sort_decorator.rb +35 -0
  108. data/lib/models/filter/student_filters/has_not_field_filter_decorator.rb +24 -0
  109. data/lib/models/person/person.rb +72 -0
  110. data/lib/models/student/student.rb +204 -0
  111. data/lib/models/student_short/student_short.rb +98 -0
  112. data/lib/models/students_list/students_list.rb +32 -0
  113. data/lib/models/students_list/students_list_DB.rb +95 -0
  114. data/lib/models/students_list/students_list_file.rb +134 -0
  115. data/lib/models/students_list/students_list_file_adapter.rb +45 -0
  116. data/lib/models/students_list/students_list_interface.rb +25 -0
  117. data/lib/presenters/base_presenters/base_presenter.rb +26 -0
  118. data/lib/presenters/base_presenters/student_list_presenter.rb +273 -0
  119. data/lib/presenters/edit_student/add_student_presenter.rb +46 -0
  120. data/lib/presenters/edit_student/edit_contacts_presenter.rb +36 -0
  121. data/lib/presenters/edit_student/edit_git_presenter.rb +28 -0
  122. data/lib/presenters/edit_student/edit_student_presenter.rb +109 -0
  123. data/lib/presenters/edit_student/replace_student_presenter.rb +37 -0
  124. data/lib/student_mvp/version.rb +5 -0
  125. data/lib/student_mvp.rb +8 -0
  126. data/sig/student_mvp.rbs +4 -0
  127. metadata +253 -0
@@ -0,0 +1,667 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ <title>class Student_list_presenter - RDoc Documentation</title>
9
+
10
+ <meta name="keywords" content="ruby,class,Student_list_presenter">
11
+
12
+ <meta name="description" content="class Student_list_presenter: Student_list_presenter Презентер для управления списком студентов.">
13
+
14
+ <script type="text/javascript">
15
+ var rdoc_rel_prefix = "./";
16
+ var index_rel_prefix = "./";
17
+ </script>
18
+
19
+ <script src="./js/navigation.js" defer></script>
20
+ <script src="./js/search.js" defer></script>
21
+ <script src="./js/search_index.js" defer></script>
22
+ <script src="./js/searcher.js" defer></script>
23
+ <script src="./js/darkfish.js" defer></script>
24
+
25
+ <link href="./css/fonts.css" rel="stylesheet">
26
+ <link href="./css/rdoc.css" rel="stylesheet">
27
+
28
+
29
+ <body id="top" role="document" class="class">
30
+ <div id="navigation-toggle" role="button" tabindex="0" aria-label="Toggle sidebar" aria-expanded="true" aria-controls="navigation">
31
+ <span aria-hidden="true">&#9776;</span>
32
+ </div>
33
+
34
+
35
+ <nav id="navigation" role="navigation">
36
+ <div id="project-navigation">
37
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
38
+ <h2>
39
+ <a href="./index.html" rel="home">Home</a>
40
+ </h2>
41
+
42
+ <div id="table-of-contents-navigation">
43
+ <a href="./table_of_contents.html#pages">Pages</a>
44
+ <a href="./table_of_contents.html#classes">Classes</a>
45
+ <a href="./table_of_contents.html#methods">Methods</a>
46
+ </div>
47
+ </div>
48
+
49
+ <div id="search-section" role="search" class="project-section initially-hidden">
50
+ <form action="#" method="get" accept-charset="utf-8">
51
+ <div id="search-field-wrapper">
52
+ <input id="search-field" role="combobox" aria-label="Search"
53
+ aria-autocomplete="list" aria-controls="search-results"
54
+ type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
55
+ title="Type to search, Up and Down to navigate, Enter to load">
56
+ </div>
57
+
58
+ <ul id="search-results" aria-label="Search Results"
59
+ aria-busy="false" aria-expanded="false"
60
+ aria-atomic="false" class="initially-hidden"></ul>
61
+ </form>
62
+ </div>
63
+
64
+ </div>
65
+
66
+
67
+
68
+ <div id="parent-class-section" class="nav-section">
69
+ <h3>Ancestors</h3>
70
+ <ul><li><a href="Base_presenter.html">Base_presenter</a><ul><li>Object</li></ul></li></ul>
71
+ </div>
72
+
73
+
74
+
75
+
76
+ <div class="nav-section">
77
+ <h3>Class Methods</h3>
78
+ <ul class="link-list" role="directory">
79
+ <li class="calls-super" ><a href="#method-c-new">new</a></li>
80
+ </ul>
81
+ </div>
82
+
83
+
84
+
85
+ <div class="nav-section">
86
+ <h3>Instance Methods</h3>
87
+ <ul class="link-list" role="directory">
88
+ <li ><a href="#method-i-add_student">add_student</a></li>
89
+ <li ><a href="#method-i-apply_filters">apply_filters</a></li>
90
+ <li ><a href="#method-i-check_and_update_page">check_and_update_page</a></li>
91
+ <li ><a href="#method-i-delete_student">delete_student</a></li>
92
+ <li ><a href="#method-i-deselect">deselect</a></li>
93
+ <li ><a href="#method-i-get_selected">get_selected</a></li>
94
+ <li ><a href="#method-i-get_student">get_student</a></li>
95
+ <li ><a href="#method-i-refresh_data">refresh_data</a></li>
96
+ <li ><a href="#method-i-replace_student">replace_student</a></li>
97
+ <li ><a href="#method-i-reset_filters">reset_filters</a></li>
98
+ <li ><a href="#method-i-select">select</a></li>
99
+ <li ><a href="#method-i-set_sort_order">set_sort_order</a></li>
100
+ <li ><a href="#method-i-switch_page">switch_page</a></li>
101
+ </ul>
102
+ </div>
103
+
104
+
105
+
106
+ <footer id="validator-badges" role="contentinfo">
107
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
108
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.8.1.
109
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
110
+ </footer>
111
+
112
+ </nav>
113
+
114
+ <main role="main" aria-labelledby="class-Student_list_presenter">
115
+ <h1 id="class-Student_list_presenter" class="anchor-link class">
116
+ class Student_list_presenter
117
+ </h1>
118
+
119
+ <section class="description">
120
+
121
+ <h2 id="class-Student_list_presenter-label-Student_list_presenter"><a href="Student_list_presenter.html"><code>Student_list_presenter</code></a><span><a href="#class-Student_list_presenter-label-Student_list_presenter">&para;</a> <a href="#top">&uarr;</a></span></h2>
122
+
123
+ <p>Презентер для управления списком студентов. Отвечает за логику отображения, фильтрации и сортировки данных о студентах.</p>
124
+
125
+ </section>
126
+
127
+ <section id="5Buntitled-5D" class="documentation-section anchor-link">
128
+
129
+
130
+
131
+
132
+
133
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section anchor-link">
134
+ <header>
135
+ <h3>Public Class Methods</h3>
136
+ </header>
137
+
138
+ <div id="method-c-new" class="method-detail anchor-link ">
139
+ <div class="method-header">
140
+ <div class="method-heading">
141
+ <a href="#method-c-new" title="Link to this method">
142
+ <span class="method-name">new</span>
143
+ <span class="method-args">(view)</span>
144
+ </a>
145
+ </div>
146
+ </div>
147
+
148
+ <div class="method-controls">
149
+ <details class="method-source-toggle">
150
+ <summary>Source</summary>
151
+ </details>
152
+ </div>
153
+
154
+ <div class="method-description">
155
+ <div class="method-source-code" id="new-source">
156
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 27</span>
157
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">view</span>)
158
+ <span class="ruby-keyword">super</span>(<span class="ruby-identifier">view</span>)
159
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-string">&quot;Инициализация Student_list_presenter&quot;</span>)
160
+ <span class="ruby-keyword">begin</span>
161
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-string">&quot;Инициализация Students_list&quot;</span>)
162
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span> = <span class="ruby-constant">Students_list</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Students_list_DB</span>.<span class="ruby-identifier">new</span>)
163
+ <span class="ruby-comment"># self.entities_list = Students_list.new(Students_list_file_adapter.new(Students_list_file.new(&#39;./students.json&#39;, JSON_storage_strategy.new)))</span>
164
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-string">&quot;Инициализация Data_list_student_short&quot;</span>)
165
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span> = <span class="ruby-constant">Data_list_student_short</span>.<span class="ruby-identifier">new</span>([])
166
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">filters</span> = <span class="ruby-constant">Filter</span>.<span class="ruby-identifier">new</span>
167
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">sort_order</span> = {
168
+ <span class="ruby-value">order:</span> <span class="ruby-value">:asc</span>,
169
+ <span class="ruby-value">col_index:</span> <span class="ruby-value">0</span>
170
+ }
171
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
172
+ <span class="ruby-identifier">error_msg</span> = <span class="ruby-node">&quot;Ошибка при получении доступа к файлу: #{e.message}&quot;</span>
173
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">error_msg</span>)
174
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">show_error</span>(<span class="ruby-identifier">error_msg</span>)
175
+ <span class="ruby-keyword">end</span>
176
+ <span class="ruby-keyword">end</span></pre>
177
+ </div>
178
+ <p>Инициализация презентера списка студентов. Настраивает список студентов, фильтры и порядок сортировки.</p>
179
+
180
+ <p>@param view [Base_view_interface] Представление, отображающее список студентов.</p>
181
+ <div class="method-calls-super">
182
+ Calls superclass method
183
+ <a href="Base_presenter.html#method-c-new"><code>Base_presenter::new</code></a>
184
+ </div>
185
+ </div>
186
+
187
+
188
+ </div>
189
+
190
+ </section>
191
+
192
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section anchor-link">
193
+ <header>
194
+ <h3>Public Instance Methods</h3>
195
+ </header>
196
+
197
+ <div id="method-i-add_student" class="method-detail anchor-link ">
198
+ <div class="method-header">
199
+ <div class="method-heading">
200
+ <a href="#method-i-add_student" title="Link to this method">
201
+ <span class="method-name">add_student</span>
202
+ <span class="method-args">(student)</span>
203
+ </a>
204
+ </div>
205
+ </div>
206
+
207
+ <div class="method-controls">
208
+ <details class="method-source-toggle">
209
+ <summary>Source</summary>
210
+ </details>
211
+ </div>
212
+
213
+ <div class="method-description">
214
+ <div class="method-source-code" id="add_student-source">
215
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 72</span>
216
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">add_student</span>(<span class="ruby-identifier">student</span>)
217
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Добавление студента в хранилище&quot;</span>
218
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Данные студента: #{student.to_line_s}&quot;</span>
219
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span>.<span class="ruby-identifier">add_student</span>(<span class="ruby-identifier">student</span>)
220
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Студент добавлен в хранилище&quot;</span>
221
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">refresh_data</span>
222
+ <span class="ruby-keyword">end</span></pre>
223
+ </div>
224
+ <p>Добавление нового студента.</p>
225
+
226
+ <p>@param student [Student] Объект студента для добавления.</p>
227
+ </div>
228
+
229
+
230
+ </div>
231
+
232
+ <div id="method-i-apply_filters" class="method-detail anchor-link ">
233
+ <div class="method-header">
234
+ <div class="method-heading">
235
+ <a href="#method-i-apply_filters" title="Link to this method">
236
+ <span class="method-name">apply_filters</span>
237
+ <span class="method-args">()</span>
238
+ </a>
239
+ </div>
240
+ </div>
241
+
242
+ <div class="method-controls">
243
+ <details class="method-source-toggle">
244
+ <summary>Source</summary>
245
+ </details>
246
+ </div>
247
+
248
+ <div class="method-description">
249
+ <div class="method-source-code" id="apply_filters-source">
250
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 175</span>
251
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">apply_filters</span>
252
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Установка фильтров&quot;</span>
253
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_full_name_filter</span>
254
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_git_filter</span>
255
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_email_filter</span>
256
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_phone_number_filter</span>
257
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_telegram_filter</span>
258
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_sort</span>
259
+ <span class="ruby-keyword">end</span></pre>
260
+ </div>
261
+ <p>Применение фильтров.</p>
262
+ </div>
263
+
264
+
265
+ </div>
266
+
267
+ <div id="method-i-check_and_update_page" class="method-detail anchor-link ">
268
+ <div class="method-header">
269
+ <div class="method-heading">
270
+ <a href="#method-i-check_and_update_page" title="Link to this method">
271
+ <span class="method-name">check_and_update_page</span>
272
+ <span class="method-args">()</span>
273
+ </a>
274
+ </div>
275
+ </div>
276
+
277
+ <div class="method-controls">
278
+ <details class="method-source-toggle">
279
+ <summary>Source</summary>
280
+ </details>
281
+ </div>
282
+
283
+ <div class="method-description">
284
+ <div class="method-source-code" id="check_and_update_page-source">
285
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 155</span>
286
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">check_and_update_page</span>()
287
+ <span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">current_page</span> <span class="ruby-operator">&gt;</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">total_pages</span>
288
+ <span class="ruby-identifier">switch_page</span>(<span class="ruby-value">-1</span>)
289
+ <span class="ruby-keyword">end</span>
290
+ <span class="ruby-keyword">end</span></pre>
291
+ </div>
292
+ <p>Проверка и, если нужно, смена страницы в таблице. Используется после удаления студента.</p>
293
+ </div>
294
+
295
+
296
+ </div>
297
+
298
+ <div id="method-i-delete_student" class="method-detail anchor-link ">
299
+ <div class="method-header">
300
+ <div class="method-heading">
301
+ <a href="#method-i-delete_student" title="Link to this method">
302
+ <span class="method-name">delete_student</span>
303
+ <span class="method-args">()</span>
304
+ </a>
305
+ </div>
306
+ </div>
307
+
308
+ <div class="method-controls">
309
+ <details class="method-source-toggle">
310
+ <summary>Source</summary>
311
+ </details>
312
+ </div>
313
+
314
+ <div class="method-description">
315
+ <div class="method-source-code" id="delete_student-source">
316
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 136</span>
317
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">delete_student</span>
318
+ <span class="ruby-identifier">ids</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">get_selected</span>
319
+ <span class="ruby-keyword">begin</span>
320
+ <span class="ruby-identifier">ids</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
321
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Удаление студента с id: #{id}&quot;</span>
322
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span>.<span class="ruby-identifier">delete_student</span>(<span class="ruby-identifier">id</span>)
323
+ <span class="ruby-keyword">end</span>
324
+ <span class="ruby-keyword">rescue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
325
+ <span class="ruby-identifier">error_msg</span> = <span class="ruby-node">&quot;Ошибка при удалении: #{e.message}&quot;</span>
326
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span> <span class="ruby-identifier">error_msg</span>
327
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">show_error</span>(<span class="ruby-identifier">error_msg</span>)
328
+ <span class="ruby-keyword">ensure</span>
329
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">refresh_data</span>
330
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">check_and_update_page</span>
331
+ <span class="ruby-keyword">end</span>
332
+ <span class="ruby-keyword">end</span></pre>
333
+ </div>
334
+ <p>Удаление выбранных студентов в таблице студентов.</p>
335
+ </div>
336
+
337
+
338
+ </div>
339
+
340
+ <div id="method-i-deselect" class="method-detail anchor-link ">
341
+ <div class="method-header">
342
+ <div class="method-heading">
343
+ <a href="#method-i-deselect" title="Link to this method">
344
+ <span class="method-name">deselect</span>
345
+ <span class="method-args">(number)</span>
346
+ </a>
347
+ </div>
348
+ </div>
349
+
350
+ <div class="method-controls">
351
+ <details class="method-source-toggle">
352
+ <summary>Source</summary>
353
+ </details>
354
+ </div>
355
+
356
+ <div class="method-description">
357
+ <div class="method-source-code" id="deselect-source">
358
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 96</span>
359
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">deselect</span>(<span class="ruby-identifier">number</span>)
360
+ <span class="ruby-keyword">begin</span>
361
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">deselect</span>(<span class="ruby-identifier">number</span>)
362
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Выделение со строки: #{number} убрано&quot;</span>
363
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">update_button_states</span>
364
+ <span class="ruby-keyword">rescue</span>
365
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span> <span class="ruby-node">&quot;Ошибка при удалении выделения строки: #{number}&quot;</span>
366
+ <span class="ruby-keyword">end</span>
367
+ <span class="ruby-keyword">end</span></pre>
368
+ </div>
369
+ <p>Удаление выделения строки таблицы.</p>
370
+
371
+ <p>@param number [Integer] Индекс строки для удаления выбора.</p>
372
+ </div>
373
+
374
+
375
+ </div>
376
+
377
+ <div id="method-i-get_selected" class="method-detail anchor-link ">
378
+ <div class="method-header">
379
+ <div class="method-heading">
380
+ <a href="#method-i-get_selected" title="Link to this method">
381
+ <span class="method-name">get_selected</span>
382
+ <span class="method-args">()</span>
383
+ </a>
384
+ </div>
385
+ </div>
386
+
387
+ <div class="method-controls">
388
+ <details class="method-source-toggle">
389
+ <summary>Source</summary>
390
+ </details>
391
+ </div>
392
+
393
+ <div class="method-description">
394
+ <div class="method-source-code" id="get_selected-source">
395
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 109</span>
396
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_selected</span>
397
+ <span class="ruby-identifier">selected</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">get_selected</span>
398
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Выделенные студенты: #{selected}&quot;</span>
399
+ <span class="ruby-identifier">selected</span>
400
+ <span class="ruby-keyword">end</span></pre>
401
+ </div>
402
+ <p>Получение списка ID выбранных студентов.</p>
403
+
404
+ <p>@return [Array&lt;Integer&gt;] Список ID выбранных студентов.</p>
405
+ </div>
406
+
407
+
408
+ </div>
409
+
410
+ <div id="method-i-get_student" class="method-detail anchor-link ">
411
+ <div class="method-header">
412
+ <div class="method-heading">
413
+ <a href="#method-i-get_student" title="Link to this method">
414
+ <span class="method-name">get_student</span>
415
+ <span class="method-args">(id)</span>
416
+ </a>
417
+ </div>
418
+ </div>
419
+
420
+ <div class="method-controls">
421
+ <details class="method-source-toggle">
422
+ <summary>Source</summary>
423
+ </details>
424
+ </div>
425
+
426
+ <div class="method-description">
427
+ <div class="method-source-code" id="get_student-source">
428
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 118</span>
429
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_student</span>(<span class="ruby-identifier">id</span>)
430
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Получение студента по id: #{id}&quot;</span>
431
+ <span class="ruby-identifier">student</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span>.<span class="ruby-identifier">get_student_by_id</span>(<span class="ruby-identifier">id</span>)
432
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Студент: #{student.to_line_s}&quot;</span>
433
+ <span class="ruby-identifier">student</span>
434
+ <span class="ruby-keyword">end</span></pre>
435
+ </div>
436
+ <p>Получение объекта студента по ID.</p>
437
+
438
+ <p>@return [Student] Объект студента.</p>
439
+ </div>
440
+
441
+
442
+ </div>
443
+
444
+ <div id="method-i-refresh_data" class="method-detail anchor-link ">
445
+ <div class="method-header">
446
+ <div class="method-heading">
447
+ <a href="#method-i-refresh_data" title="Link to this method">
448
+ <span class="method-name">refresh_data</span>
449
+ <span class="method-args">()</span>
450
+ </a>
451
+ </div>
452
+ </div>
453
+
454
+ <div class="method-controls">
455
+ <details class="method-source-toggle">
456
+ <summary>Source</summary>
457
+ </details>
458
+ </div>
459
+
460
+ <div class="method-description">
461
+ <div class="method-source-code" id="refresh_data-source">
462
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 50</span>
463
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">refresh_data</span>
464
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Обновление таблицы студентов&quot;</span>
465
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">clear_selected</span>
466
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">reset_filters</span>
467
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">apply_filters</span>
468
+ <span class="ruby-keyword">begin</span>
469
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Поиск студентов в хранилище&quot;</span>
470
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span>.<span class="ruby-identifier">get_k_n_student_short_list</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">current_page</span>, <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">rows_per_page</span>, <span class="ruby-keyword">self</span>.<span class="ruby-identifier">filters</span>, <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>)
471
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">count</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span>.<span class="ruby-identifier">get_student_short_count</span>
472
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">update_view</span>({ <span class="ruby-value">columns:</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">get_names</span>, <span class="ruby-value">total_count:</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">count</span>, <span class="ruby-value">table_data:</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">retrieve_data</span> })
473
+ <span class="ruby-keyword">rescue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
474
+ <span class="ruby-identifier">error_msg</span> = <span class="ruby-node">&quot;Ошибка при получении данных: #{e.message}&quot;</span>
475
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span> <span class="ruby-identifier">error_msg</span>
476
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">show_error</span>(<span class="ruby-identifier">error_msg</span>)
477
+ <span class="ruby-keyword">end</span>
478
+
479
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Таблица студентов обновлена&quot;</span>
480
+ <span class="ruby-keyword">end</span></pre>
481
+ </div>
482
+ <p>Обновление данных в таблице студентов. Выполняет сброс фильтров, применяет новые фильтры и обновляет представление.</p>
483
+ </div>
484
+
485
+
486
+ </div>
487
+
488
+ <div id="method-i-replace_student" class="method-detail anchor-link ">
489
+ <div class="method-header">
490
+ <div class="method-heading">
491
+ <a href="#method-i-replace_student" title="Link to this method">
492
+ <span class="method-name">replace_student</span>
493
+ <span class="method-args">(student)</span>
494
+ </a>
495
+ </div>
496
+ </div>
497
+
498
+ <div class="method-controls">
499
+ <details class="method-source-toggle">
500
+ <summary>Source</summary>
501
+ </details>
502
+ </div>
503
+
504
+ <div class="method-description">
505
+ <div class="method-source-code" id="replace_student-source">
506
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 128</span>
507
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">replace_student</span>(<span class="ruby-identifier">student</span>)
508
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Замена студента с id: #{student.id}&quot;</span>
509
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Замена студента: #{student.to_line_s}&quot;</span>
510
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">entities_list</span>.<span class="ruby-identifier">replace_student</span>(<span class="ruby-identifier">student</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">student</span>)
511
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">refresh_data</span>
512
+ <span class="ruby-keyword">end</span></pre>
513
+ </div>
514
+ <p>Изменение студента.</p>
515
+
516
+ <p>@param student [Student] Объект студента для изменения.</p>
517
+ </div>
518
+
519
+
520
+ </div>
521
+
522
+ <div id="method-i-reset_filters" class="method-detail anchor-link ">
523
+ <div class="method-header">
524
+ <div class="method-heading">
525
+ <a href="#method-i-reset_filters" title="Link to this method">
526
+ <span class="method-name">reset_filters</span>
527
+ <span class="method-args">()</span>
528
+ </a>
529
+ </div>
530
+ </div>
531
+
532
+ <div class="method-controls">
533
+ <details class="method-source-toggle">
534
+ <summary>Source</summary>
535
+ </details>
536
+ </div>
537
+
538
+ <div class="method-description">
539
+ <div class="method-source-code" id="reset_filters-source">
540
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 186</span>
541
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reset_filters</span>
542
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Сброс фильтров&quot;</span>
543
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">filters</span> = <span class="ruby-constant">Filter</span>.<span class="ruby-identifier">new</span>
544
+ <span class="ruby-keyword">end</span></pre>
545
+ </div>
546
+ <p>Сброс фильтров</p>
547
+ </div>
548
+
549
+
550
+ </div>
551
+
552
+ <div id="method-i-select" class="method-detail anchor-link ">
553
+ <div class="method-header">
554
+ <div class="method-heading">
555
+ <a href="#method-i-select" title="Link to this method">
556
+ <span class="method-name">select</span>
557
+ <span class="method-args">(number)</span>
558
+ </a>
559
+ </div>
560
+ </div>
561
+
562
+ <div class="method-controls">
563
+ <details class="method-source-toggle">
564
+ <summary>Source</summary>
565
+ </details>
566
+ </div>
567
+
568
+ <div class="method-description">
569
+ <div class="method-source-code" id="select-source">
570
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 83</span>
571
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">select</span>(<span class="ruby-identifier">number</span>)
572
+ <span class="ruby-keyword">begin</span>
573
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">data_list</span>.<span class="ruby-identifier">select</span>(<span class="ruby-identifier">number</span>)
574
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Выделена строка: #{number}&quot;</span>
575
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">update_button_states</span>
576
+ <span class="ruby-keyword">rescue</span>
577
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">error</span> <span class="ruby-node">&quot;Ошибка при выделении строки: #{number}&quot;</span>
578
+ <span class="ruby-keyword">end</span>
579
+ <span class="ruby-keyword">end</span></pre>
580
+ </div>
581
+ <p>Выбор строки таблицы.</p>
582
+
583
+ <p>@param number [Integer] Индекс строки для выбора.</p>
584
+ </div>
585
+
586
+
587
+ </div>
588
+
589
+ <div id="method-i-set_sort_order" class="method-detail anchor-link ">
590
+ <div class="method-header">
591
+ <div class="method-heading">
592
+ <a href="#method-i-set_sort_order" title="Link to this method">
593
+ <span class="method-name">set_sort_order</span>
594
+ <span class="method-args">(column_index)</span>
595
+ </a>
596
+ </div>
597
+ </div>
598
+
599
+ <div class="method-controls">
600
+ <details class="method-source-toggle">
601
+ <summary>Source</summary>
602
+ </details>
603
+ </div>
604
+
605
+ <div class="method-description">
606
+ <div class="method-source-code" id="set_sort_order-source">
607
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 194</span>
608
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_sort_order</span>(<span class="ruby-identifier">column_index</span>)
609
+ <span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">sort_order</span>[<span class="ruby-value">:col_index</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">column_index</span>
610
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">sort_order</span>[<span class="ruby-value">:order</span>] = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">sort_order</span>[<span class="ruby-value">:order</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:asc</span> <span class="ruby-operator">?</span> <span class="ruby-value">:desc</span> <span class="ruby-operator">:</span> <span class="ruby-value">:asc</span>
611
+ <span class="ruby-keyword">else</span>
612
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">sort_order</span>[<span class="ruby-value">:col_index</span>] = <span class="ruby-identifier">column_index</span>
613
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">sort_order</span>[<span class="ruby-value">:order</span>] = <span class="ruby-value">:asc</span>
614
+ <span class="ruby-keyword">end</span>
615
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">refresh_data</span>
616
+ <span class="ruby-keyword">end</span></pre>
617
+ </div>
618
+ <p>Установка порядка сортировки и сортировка данных в таблице.</p>
619
+
620
+ <p>@param column_index [Integer] Индекс столбца, по которому выполняется сортировка.</p>
621
+ </div>
622
+
623
+
624
+ </div>
625
+
626
+ <div id="method-i-switch_page" class="method-detail anchor-link ">
627
+ <div class="method-header">
628
+ <div class="method-heading">
629
+ <a href="#method-i-switch_page" title="Link to this method">
630
+ <span class="method-name">switch_page</span>
631
+ <span class="method-args">(direction)</span>
632
+ </a>
633
+ </div>
634
+ </div>
635
+
636
+ <div class="method-controls">
637
+ <details class="method-source-toggle">
638
+ <summary>Source</summary>
639
+ </details>
640
+ </div>
641
+
642
+ <div class="method-description">
643
+ <div class="method-source-code" id="switch_page-source">
644
+ <pre><span class="ruby-comment"># File lib/presenters/base_presenters/student_list_presenter.rb, line 164</span>
645
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">switch_page</span>(<span class="ruby-identifier">direction</span>)
646
+ <span class="ruby-identifier">new_page</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">current_page</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">direction</span>
647
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">new_page</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">new_page</span> <span class="ruby-operator">&gt;</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">total_pages</span>
648
+ <span class="ruby-keyword">return</span>
649
+ <span class="ruby-keyword">end</span>
650
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Переключение страницы на: #{new_page}&quot;</span>
651
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">current_page</span> = <span class="ruby-identifier">new_page</span>
652
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">refresh_data</span>
653
+ <span class="ruby-keyword">end</span></pre>
654
+ </div>
655
+ <p>Изменение текущей страницы в таблице.</p>
656
+
657
+ <p>@param direction [Integer] Направление для изменения страницы.</p>
658
+ </div>
659
+
660
+
661
+ </div>
662
+
663
+ </section>
664
+
665
+ </section>
666
+ </main>
667
+