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.
- checksums.yaml +7 -0
- data/README.md +35 -0
- data/Rakefile +4 -0
- data/doc/Add_student_presenter.html +238 -0
- data/doc/App_logger.html +386 -0
- data/doc/Base_presenter.html +265 -0
- data/doc/Binary_tree.html +300 -0
- data/doc/Binary_tree_iterator.html +217 -0
- data/doc/Contact_sort_decorator.html +219 -0
- data/doc/DB_client.html +252 -0
- data/doc/Data_list.html +625 -0
- data/doc/Data_list_student_short.html +148 -0
- data/doc/Data_storage_strategy.html +178 -0
- data/doc/Data_table.html +264 -0
- data/doc/Deep_dup.html +152 -0
- data/doc/Edit_contacts_presenter.html +199 -0
- data/doc/Edit_git_presenter.html +192 -0
- data/doc/Edit_student_presenter.html +464 -0
- data/doc/Field_filter_decorator.html +219 -0
- data/doc/Filter.html +148 -0
- data/doc/Filter_decorator.html +209 -0
- data/doc/Full_name_filter_decorator.html +211 -0
- data/doc/Full_name_sort_decorator.html +217 -0
- data/doc/Gemfile.html +98 -0
- data/doc/Git_sort_decorator.html +220 -0
- data/doc/Has_not_field_filter_decorator.html +209 -0
- data/doc/JSON_storage_strategy.html +183 -0
- data/doc/Person.html +511 -0
- data/doc/README_md.html +147 -0
- data/doc/Rakefile.html +94 -0
- data/doc/Replace_student_presenter.html +204 -0
- data/doc/Sort_decorator.html +214 -0
- data/doc/Student.html +755 -0
- data/doc/StudentMvp/Error.html +105 -0
- data/doc/StudentMvp.html +111 -0
- data/doc/Student_list_presenter.html +667 -0
- data/doc/Student_short.html +398 -0
- data/doc/Students_list.html +341 -0
- data/doc/Students_list_DB.html +361 -0
- data/doc/Students_list_file.html +460 -0
- data/doc/Students_list_file_adapter.html +341 -0
- data/doc/Students_list_interface.html +298 -0
- data/doc/YAML_storage_strategy.html +183 -0
- data/doc/bin/setup.html +96 -0
- data/doc/created.rid +44 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +662 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +174 -0
- data/doc/js/darkfish.js +114 -0
- data/doc/js/navigation.js +105 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +110 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +229 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +1047 -0
- data/lib/data_access/DB_client/DB_client.rb +26 -0
- data/lib/deep_dup/deep_dup.rb +14 -0
- data/lib/logger/logger.rb +64 -0
- data/lib/models/binary_tree/binary_tree.rb +163 -0
- data/lib/models/binary_tree/binary_tree_iterator.rb +36 -0
- data/lib/models/data_list/data_list.rb +97 -0
- data/lib/models/data_list/data_list_student_short.rb +16 -0
- data/lib/models/data_storage_strategy/JSON_storage_strategy.rb +20 -0
- data/lib/models/data_storage_strategy/YAML_storage_strategy.rb +20 -0
- data/lib/models/data_storage_strategy/data_storage_strategy.rb +11 -0
- data/lib/models/data_table/data_table.rb +52 -0
- data/lib/models/filter/filter.rb +5 -0
- data/lib/models/filter/filter_decorator.rb +14 -0
- data/lib/models/filter/sort_decorator.rb +15 -0
- data/lib/models/filter/student_filters/contact_sort_decorator.rb +50 -0
- data/lib/models/filter/student_filters/field_filter_decorator.rb +34 -0
- data/lib/models/filter/student_filters/full_name_filter_decorator.rb +26 -0
- data/lib/models/filter/student_filters/full_name_sort_decorator.rb +32 -0
- data/lib/models/filter/student_filters/git_sort_decorator.rb +35 -0
- data/lib/models/filter/student_filters/has_not_field_filter_decorator.rb +24 -0
- data/lib/models/person/person.rb +72 -0
- data/lib/models/student/student.rb +204 -0
- data/lib/models/student_short/student_short.rb +98 -0
- data/lib/models/students_list/students_list.rb +32 -0
- data/lib/models/students_list/students_list_DB.rb +95 -0
- data/lib/models/students_list/students_list_file.rb +134 -0
- data/lib/models/students_list/students_list_file_adapter.rb +45 -0
- data/lib/models/students_list/students_list_interface.rb +25 -0
- data/lib/presenters/base_presenters/base_presenter.rb +26 -0
- data/lib/presenters/base_presenters/student_list_presenter.rb +273 -0
- data/lib/presenters/edit_student/add_student_presenter.rb +46 -0
- data/lib/presenters/edit_student/edit_contacts_presenter.rb +36 -0
- data/lib/presenters/edit_student/edit_git_presenter.rb +28 -0
- data/lib/presenters/edit_student/edit_student_presenter.rb +109 -0
- data/lib/presenters/edit_student/replace_student_presenter.rb +37 -0
- data/lib/student_mvp/version.rb +5 -0
- data/lib/student_mvp.rb +8 -0
- data/sig/student_mvp.rbs +4 -0
- metadata +253 -0
@@ -0,0 +1,464 @@
|
|
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 Edit_student_presenter - RDoc Documentation</title>
|
9
|
+
|
10
|
+
<meta name="keywords" content="ruby,class,Edit_student_presenter">
|
11
|
+
|
12
|
+
<meta name="description" content="class Edit_student_presenter: Edit_student_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">☰</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>Object</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 ><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-get_student">get_student</a></li>
|
89
|
+
<li ><a href="#method-i-new_student">new_student</a></li>
|
90
|
+
<li ><a href="#method-i-operation">operation</a></li>
|
91
|
+
<li ><a href="#method-i-populate_fields">populate_fields</a></li>
|
92
|
+
<li ><a href="#method-i-valid_data-3F">valid_data?</a></li>
|
93
|
+
</ul>
|
94
|
+
</div>
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
<footer id="validator-badges" role="contentinfo">
|
99
|
+
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
100
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.8.1.
|
101
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
102
|
+
</footer>
|
103
|
+
|
104
|
+
</nav>
|
105
|
+
|
106
|
+
<main role="main" aria-labelledby="class-Edit_student_presenter">
|
107
|
+
<h1 id="class-Edit_student_presenter" class="anchor-link class">
|
108
|
+
class Edit_student_presenter
|
109
|
+
</h1>
|
110
|
+
|
111
|
+
<section class="description">
|
112
|
+
|
113
|
+
<h2 id="class-Edit_student_presenter-label-Edit_student_presenter"><a href="Edit_student_presenter.html"><code>Edit_student_presenter</code></a><span><a href="#class-Edit_student_presenter-label-Edit_student_presenter">¶</a> <a href="#top">↑</a></span></h2>
|
114
|
+
|
115
|
+
<p>Базовый класс для управления данными студентов. Предоставляет общие методы для редактирования информации о студентах.</p>
|
116
|
+
|
117
|
+
</section>
|
118
|
+
|
119
|
+
<section id="5Buntitled-5D" class="documentation-section anchor-link">
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
<section class="attribute-method-details" class="method-section">
|
124
|
+
<header>
|
125
|
+
<h3>Attributes</h3>
|
126
|
+
</header>
|
127
|
+
|
128
|
+
<div id="attribute-i-logger" class="method-detail anchor-link">
|
129
|
+
<div class="method-heading attribute-method-heading">
|
130
|
+
<a href="#attribute-i-logger" title="Link to this attribute">
|
131
|
+
<span class="method-name">logger</span>
|
132
|
+
<span class="attribute-access-type">[RW]</span>
|
133
|
+
</a>
|
134
|
+
</div>
|
135
|
+
|
136
|
+
<div class="method-description">
|
137
|
+
<p>@!attribute [rw] view</p>
|
138
|
+
|
139
|
+
<pre>@return [Modal_interface] Объект представления.</pre>
|
140
|
+
|
141
|
+
<p>@!attribute [rw] <a href="Edit_student_presenter.html#attribute-i-parent_presenter"><code>parent_presenter</code></a></p>
|
142
|
+
|
143
|
+
<pre>@return [Parent_presenter] Родительский презентер.</pre>
|
144
|
+
|
145
|
+
<p>@!attribute [rw] student</p>
|
146
|
+
|
147
|
+
<pre>@return [Student, nil] Объект студента.</pre>
|
148
|
+
|
149
|
+
<p>@!attribute [rw] logger</p>
|
150
|
+
|
151
|
+
<pre>@return [App_logger] Логгер для записи событий.</pre>
|
152
|
+
</div>
|
153
|
+
</div>
|
154
|
+
<div id="attribute-i-parent_presenter" class="method-detail anchor-link">
|
155
|
+
<div class="method-heading attribute-method-heading">
|
156
|
+
<a href="#attribute-i-parent_presenter" title="Link to this attribute">
|
157
|
+
<span class="method-name">parent_presenter</span>
|
158
|
+
<span class="attribute-access-type">[RW]</span>
|
159
|
+
</a>
|
160
|
+
</div>
|
161
|
+
|
162
|
+
<div class="method-description">
|
163
|
+
<p>@!attribute [rw] view</p>
|
164
|
+
|
165
|
+
<pre>@return [Modal_interface] Объект представления.</pre>
|
166
|
+
|
167
|
+
<p>@!attribute [rw] <a href="Edit_student_presenter.html#attribute-i-parent_presenter"><code>parent_presenter</code></a></p>
|
168
|
+
|
169
|
+
<pre>@return [Parent_presenter] Родительский презентер.</pre>
|
170
|
+
|
171
|
+
<p>@!attribute [rw] student</p>
|
172
|
+
|
173
|
+
<pre>@return [Student, nil] Объект студента.</pre>
|
174
|
+
|
175
|
+
<p>@!attribute [rw] logger</p>
|
176
|
+
|
177
|
+
<pre>@return [App_logger] Логгер для записи событий.</pre>
|
178
|
+
</div>
|
179
|
+
</div>
|
180
|
+
<div id="attribute-i-student" class="method-detail anchor-link">
|
181
|
+
<div class="method-heading attribute-method-heading">
|
182
|
+
<a href="#attribute-i-student" title="Link to this attribute">
|
183
|
+
<span class="method-name">student</span>
|
184
|
+
<span class="attribute-access-type">[RW]</span>
|
185
|
+
</a>
|
186
|
+
</div>
|
187
|
+
|
188
|
+
<div class="method-description">
|
189
|
+
<p>@!attribute [rw] view</p>
|
190
|
+
|
191
|
+
<pre>@return [Modal_interface] Объект представления.</pre>
|
192
|
+
|
193
|
+
<p>@!attribute [rw] <a href="Edit_student_presenter.html#attribute-i-parent_presenter"><code>parent_presenter</code></a></p>
|
194
|
+
|
195
|
+
<pre>@return [Parent_presenter] Родительский презентер.</pre>
|
196
|
+
|
197
|
+
<p>@!attribute [rw] student</p>
|
198
|
+
|
199
|
+
<pre>@return [Student, nil] Объект студента.</pre>
|
200
|
+
|
201
|
+
<p>@!attribute [rw] logger</p>
|
202
|
+
|
203
|
+
<pre>@return [App_logger] Логгер для записи событий.</pre>
|
204
|
+
</div>
|
205
|
+
</div>
|
206
|
+
<div id="attribute-i-view" class="method-detail anchor-link">
|
207
|
+
<div class="method-heading attribute-method-heading">
|
208
|
+
<a href="#attribute-i-view" title="Link to this attribute">
|
209
|
+
<span class="method-name">view</span>
|
210
|
+
<span class="attribute-access-type">[RW]</span>
|
211
|
+
</a>
|
212
|
+
</div>
|
213
|
+
|
214
|
+
<div class="method-description">
|
215
|
+
<p>@!attribute [rw] view</p>
|
216
|
+
|
217
|
+
<pre>@return [Modal_interface] Объект представления.</pre>
|
218
|
+
|
219
|
+
<p>@!attribute [rw] <a href="Edit_student_presenter.html#attribute-i-parent_presenter"><code>parent_presenter</code></a></p>
|
220
|
+
|
221
|
+
<pre>@return [Parent_presenter] Родительский презентер.</pre>
|
222
|
+
|
223
|
+
<p>@!attribute [rw] student</p>
|
224
|
+
|
225
|
+
<pre>@return [Student, nil] Объект студента.</pre>
|
226
|
+
|
227
|
+
<p>@!attribute [rw] logger</p>
|
228
|
+
|
229
|
+
<pre>@return [App_logger] Логгер для записи событий.</pre>
|
230
|
+
</div>
|
231
|
+
</div>
|
232
|
+
</section>
|
233
|
+
|
234
|
+
|
235
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section anchor-link">
|
236
|
+
<header>
|
237
|
+
<h3>Public Class Methods</h3>
|
238
|
+
</header>
|
239
|
+
|
240
|
+
<div id="method-c-new" class="method-detail anchor-link ">
|
241
|
+
<div class="method-header">
|
242
|
+
<div class="method-heading">
|
243
|
+
<a href="#method-c-new" title="Link to this method">
|
244
|
+
<span class="method-name">new</span>
|
245
|
+
<span class="method-args">(view, parent_presenter)</span>
|
246
|
+
</a>
|
247
|
+
</div>
|
248
|
+
</div>
|
249
|
+
|
250
|
+
<div class="method-controls">
|
251
|
+
<details class="method-source-toggle">
|
252
|
+
<summary>Source</summary>
|
253
|
+
</details>
|
254
|
+
</div>
|
255
|
+
|
256
|
+
<div class="method-description">
|
257
|
+
<div class="method-source-code" id="new-source">
|
258
|
+
<pre><span class="ruby-comment"># File lib/presenters/edit_student/edit_student_presenter.rb, line 12</span>
|
259
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">view</span>, <span class="ruby-identifier">parent_presenter</span>)
|
260
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span> = <span class="ruby-identifier">view</span>
|
261
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent_presenter</span> = <span class="ruby-identifier">parent_presenter</span>
|
262
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span> = <span class="ruby-constant">App_logger</span>.<span class="ruby-identifier">instance</span>
|
263
|
+
<span class="ruby-keyword">end</span></pre>
|
264
|
+
</div>
|
265
|
+
<p>Инициализация презентера для управления данными студентов.</p>
|
266
|
+
|
267
|
+
<p>@param view [Modal_interface] Представление для взаимодействия с пользователем. @param <a href="Edit_student_presenter.html#attribute-i-parent_presenter"><code>parent_presenter</code></a> [Student_list_presenter] Родительский презентер для управления общим контекстом.</p>
|
268
|
+
</div>
|
269
|
+
|
270
|
+
|
271
|
+
</div>
|
272
|
+
|
273
|
+
</section>
|
274
|
+
|
275
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section anchor-link">
|
276
|
+
<header>
|
277
|
+
<h3>Public Instance Methods</h3>
|
278
|
+
</header>
|
279
|
+
|
280
|
+
<div id="method-i-get_student" class="method-detail anchor-link ">
|
281
|
+
<div class="method-header">
|
282
|
+
<div class="method-heading">
|
283
|
+
<a href="#method-i-get_student" title="Link to this method">
|
284
|
+
<span class="method-name">get_student</span>
|
285
|
+
<span class="method-args">()</span>
|
286
|
+
</a>
|
287
|
+
</div>
|
288
|
+
</div>
|
289
|
+
|
290
|
+
<div class="method-controls">
|
291
|
+
<details class="method-source-toggle">
|
292
|
+
<summary>Source</summary>
|
293
|
+
</details>
|
294
|
+
</div>
|
295
|
+
|
296
|
+
<div class="method-description">
|
297
|
+
<div class="method-source-code" id="get_student-source">
|
298
|
+
<pre><span class="ruby-comment"># File lib/presenters/edit_student/edit_student_presenter.rb, line 52</span>
|
299
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_student</span>
|
300
|
+
<span class="ruby-identifier">id</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent_presenter</span>.<span class="ruby-identifier">get_selected</span>[<span class="ruby-value">0</span>]
|
301
|
+
<span class="ruby-keyword">begin</span>
|
302
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">student</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent_presenter</span>.<span class="ruby-identifier">get_student</span>(<span class="ruby-identifier">id</span>)
|
303
|
+
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
|
304
|
+
<span class="ruby-identifier">error_msg</span> = <span class="ruby-node">"Ошибка при загрузке данных о студенте: #{e.message}"</span>
|
305
|
+
<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>
|
306
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">show_error_message</span>(<span class="ruby-identifier">error_msg</span>)
|
307
|
+
<span class="ruby-keyword">end</span>
|
308
|
+
<span class="ruby-keyword">end</span></pre>
|
309
|
+
</div>
|
310
|
+
<p>Получение данных студента из родительского презентера. Загружает информацию о выбранном студенте.</p>
|
311
|
+
</div>
|
312
|
+
|
313
|
+
|
314
|
+
</div>
|
315
|
+
|
316
|
+
<div id="method-i-new_student" class="method-detail anchor-link ">
|
317
|
+
<div class="method-header">
|
318
|
+
<div class="method-heading">
|
319
|
+
<a href="#method-i-new_student" title="Link to this method">
|
320
|
+
<span class="method-name">new_student</span>
|
321
|
+
<span class="method-args">(student_data)</span>
|
322
|
+
</a>
|
323
|
+
</div>
|
324
|
+
</div>
|
325
|
+
|
326
|
+
<div class="method-controls">
|
327
|
+
<details class="method-source-toggle">
|
328
|
+
<summary>Source</summary>
|
329
|
+
</details>
|
330
|
+
</div>
|
331
|
+
|
332
|
+
<div class="method-description">
|
333
|
+
<div class="method-source-code" id="new_student-source">
|
334
|
+
<pre><span class="ruby-comment"># File lib/presenters/edit_student/edit_student_presenter.rb, line 37</span>
|
335
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">new_student</span>(<span class="ruby-identifier">student_data</span>)
|
336
|
+
<span class="ruby-identifier">data</span> = <span class="ruby-identifier">student_data</span>.<span class="ruby-identifier">transform_values</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
337
|
+
<span class="ruby-identifier">stripped</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span>
|
338
|
+
<span class="ruby-identifier">stripped</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">stripped</span>
|
339
|
+
<span class="ruby-keyword">end</span>
|
340
|
+
|
341
|
+
<span class="ruby-identifier">attributes</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">get_attributes</span>
|
342
|
+
<span class="ruby-identifier">data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
|
343
|
+
<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_sym</span>] = <span class="ruby-identifier">value</span>
|
344
|
+
<span class="ruby-keyword">end</span>
|
345
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">student</span> = <span class="ruby-constant">Student</span>.<span class="ruby-identifier">new_from_hash</span>(<span class="ruby-identifier">attributes</span>)
|
346
|
+
<span class="ruby-keyword">end</span></pre>
|
347
|
+
</div>
|
348
|
+
<p>Создание нового объекта студента из предоставленных данных.</p>
|
349
|
+
|
350
|
+
<p>@param student_data [Hash] Данные студента.</p>
|
351
|
+
</div>
|
352
|
+
|
353
|
+
|
354
|
+
</div>
|
355
|
+
|
356
|
+
<div id="method-i-operation" class="method-detail anchor-link ">
|
357
|
+
<div class="method-header">
|
358
|
+
<div class="method-heading">
|
359
|
+
<a href="#method-i-operation" title="Link to this method">
|
360
|
+
<span class="method-name">operation</span>
|
361
|
+
<span class="method-args">(student_data)</span>
|
362
|
+
</a>
|
363
|
+
</div>
|
364
|
+
</div>
|
365
|
+
|
366
|
+
<div class="method-controls">
|
367
|
+
<details class="method-source-toggle">
|
368
|
+
<summary>Source</summary>
|
369
|
+
</details>
|
370
|
+
</div>
|
371
|
+
|
372
|
+
<div class="method-description">
|
373
|
+
<div class="method-source-code" id="operation-source">
|
374
|
+
<pre><span class="ruby-comment"># File lib/presenters/edit_student/edit_student_presenter.rb, line 21</span>
|
375
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">operation</span>(<span class="ruby-identifier">student_data</span>)
|
376
|
+
<span class="ruby-keyword">begin</span>
|
377
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">"Создание объекта студента: #{student_data.to_s}"</span>
|
378
|
+
<span class="ruby-identifier">new_student</span>(<span class="ruby-identifier">student_data</span>)
|
379
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent_presenter</span>.<span class="ruby-identifier">replace_student</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">student</span>)
|
380
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">close</span>
|
381
|
+
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
|
382
|
+
<span class="ruby-identifier">error_msg</span> = <span class="ruby-node">"Ошибка при изменении студента: #{e.message}"</span>
|
383
|
+
<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>
|
384
|
+
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">view</span>.<span class="ruby-identifier">show_error_message</span>(<span class="ruby-identifier">error_msg</span>)
|
385
|
+
<span class="ruby-keyword">end</span>
|
386
|
+
<span class="ruby-keyword">end</span></pre>
|
387
|
+
</div>
|
388
|
+
<p>Основная операция редактирования студента.</p>
|
389
|
+
|
390
|
+
<p>@param student_data [Hash] Данные студента.</p>
|
391
|
+
</div>
|
392
|
+
|
393
|
+
|
394
|
+
</div>
|
395
|
+
|
396
|
+
<div id="method-i-populate_fields" class="method-detail anchor-link ">
|
397
|
+
<div class="method-header">
|
398
|
+
<div class="method-heading">
|
399
|
+
<a href="#method-i-populate_fields" title="Link to this method">
|
400
|
+
<span class="method-name">populate_fields</span>
|
401
|
+
<span class="method-args">()</span>
|
402
|
+
</a>
|
403
|
+
</div>
|
404
|
+
</div>
|
405
|
+
|
406
|
+
<div class="method-controls">
|
407
|
+
<details class="method-source-toggle">
|
408
|
+
<summary>Source</summary>
|
409
|
+
</details>
|
410
|
+
</div>
|
411
|
+
|
412
|
+
<div class="method-description">
|
413
|
+
<div class="method-source-code" id="populate_fields-source">
|
414
|
+
<pre><span class="ruby-comment"># File lib/presenters/edit_student/edit_student_presenter.rb, line 66</span>
|
415
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">populate_fields</span>
|
416
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">NotImplementedError</span>
|
417
|
+
<span class="ruby-keyword">end</span></pre>
|
418
|
+
</div>
|
419
|
+
<p>Заполнение полей интерфейса данными студента.</p>
|
420
|
+
|
421
|
+
<p>@raise [NotImplementedError] Метод должен быть реализован в подклассе.</p>
|
422
|
+
</div>
|
423
|
+
|
424
|
+
|
425
|
+
</div>
|
426
|
+
|
427
|
+
<div id="method-i-valid_data-3F" class="method-detail anchor-link ">
|
428
|
+
<div class="method-header">
|
429
|
+
<div class="method-heading">
|
430
|
+
<a href="#method-i-valid_data-3F" title="Link to this method">
|
431
|
+
<span class="method-name">valid_data?</span>
|
432
|
+
<span class="method-args">(student_data)</span>
|
433
|
+
</a>
|
434
|
+
</div>
|
435
|
+
</div>
|
436
|
+
|
437
|
+
<div class="method-controls">
|
438
|
+
<details class="method-source-toggle">
|
439
|
+
<summary>Source</summary>
|
440
|
+
</details>
|
441
|
+
</div>
|
442
|
+
|
443
|
+
<div class="method-description">
|
444
|
+
<div class="method-source-code" id="valid_data-3F-source">
|
445
|
+
<pre><span class="ruby-comment"># File lib/presenters/edit_student/edit_student_presenter.rb, line 74</span>
|
446
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">valid_data?</span>(<span class="ruby-identifier">student_data</span>)
|
447
|
+
<span class="ruby-identifier">data</span> = <span class="ruby-identifier">student_data</span>.<span class="ruby-identifier">transform_values</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span> }
|
448
|
+
<span class="ruby-constant">Student</span>.<span class="ruby-identifier">valid_name?</span>(<span class="ruby-identifier">data</span>[<span class="ruby-string">"first_name"</span>]) <span class="ruby-operator">&&</span> <span class="ruby-constant">Student</span>.<span class="ruby-identifier">valid_name?</span>(<span class="ruby-identifier">data</span>[<span class="ruby-string">"name"</span>]) <span class="ruby-operator">&&</span>
|
449
|
+
<span class="ruby-constant">Student</span>.<span class="ruby-identifier">valid_name?</span>(<span class="ruby-identifier">data</span>[<span class="ruby-string">"patronymic"</span>]) <span class="ruby-operator">&&</span> <span class="ruby-constant">Student</span>.<span class="ruby-identifier">valid_birthdate?</span>(<span class="ruby-identifier">data</span>[<span class="ruby-string">"birthdate"</span>])
|
450
|
+
<span class="ruby-keyword">end</span></pre>
|
451
|
+
</div>
|
452
|
+
<p>Проверка валидности данных студента.</p>
|
453
|
+
|
454
|
+
<p>@param student_data [Hash] Данные студента. @return [Boolean] Возвращает true, если данные валидны.</p>
|
455
|
+
</div>
|
456
|
+
|
457
|
+
|
458
|
+
</div>
|
459
|
+
|
460
|
+
</section>
|
461
|
+
|
462
|
+
</section>
|
463
|
+
</main>
|
464
|
+
|