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
Binary file
|
Binary file
|
Binary file
|
data/doc/images/zoom.png
ADDED
Binary file
|
data/doc/index.html
ADDED
@@ -0,0 +1,174 @@
|
|
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>RDoc Documentation</title>
|
9
|
+
|
10
|
+
<meta name="keywords" content="ruby,documentation,RDoc Documentation">
|
11
|
+
|
12
|
+
|
13
|
+
<meta name="description" content="RDoc Documentation: Delete this and the text below, and describe your gem Welcome to your new gem! In this directory, you'll find the files you need to be able to packag">
|
14
|
+
|
15
|
+
<script type="text/javascript">
|
16
|
+
var rdoc_rel_prefix = "./";
|
17
|
+
var index_rel_prefix = "./";
|
18
|
+
</script>
|
19
|
+
|
20
|
+
<script src="./js/navigation.js" defer></script>
|
21
|
+
<script src="./js/search.js" defer></script>
|
22
|
+
<script src="./js/search_index.js" defer></script>
|
23
|
+
<script src="./js/searcher.js" defer></script>
|
24
|
+
<script src="./js/darkfish.js" defer></script>
|
25
|
+
|
26
|
+
<link href="./css/fonts.css" rel="stylesheet">
|
27
|
+
<link href="./css/rdoc.css" rel="stylesheet">
|
28
|
+
|
29
|
+
|
30
|
+
<body id="top" role="document" class="file">
|
31
|
+
<div id="navigation-toggle" role="button" tabindex="0" aria-label="Toggle sidebar" aria-expanded="true" aria-controls="navigation">
|
32
|
+
<span aria-hidden="true">☰</span>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
|
36
|
+
<nav id="navigation" role="navigation">
|
37
|
+
<div id="project-navigation">
|
38
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
39
|
+
<h2>
|
40
|
+
<a href="./index.html" rel="home">Home</a>
|
41
|
+
</h2>
|
42
|
+
|
43
|
+
<div id="table-of-contents-navigation">
|
44
|
+
<a href="./table_of_contents.html#pages">Pages</a>
|
45
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
46
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
51
|
+
<form action="#" method="get" accept-charset="utf-8">
|
52
|
+
<div id="search-field-wrapper">
|
53
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
54
|
+
aria-autocomplete="list" aria-controls="search-results"
|
55
|
+
type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
|
56
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<ul id="search-results" aria-label="Search Results"
|
60
|
+
aria-busy="false" aria-expanded="false"
|
61
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
62
|
+
</form>
|
63
|
+
</div>
|
64
|
+
|
65
|
+
</div>
|
66
|
+
|
67
|
+
|
68
|
+
<div id="fileindex-section" class="nav-section">
|
69
|
+
<h3>Pages</h3>
|
70
|
+
|
71
|
+
<ul class="link-list">
|
72
|
+
<li><a href="./Gemfile.html">Gemfile</a>
|
73
|
+
<li><a href="./README_md.html">README</a>
|
74
|
+
<li><a href="./Rakefile.html">Rakefile</a>
|
75
|
+
<li><a href="./bin/setup.html">setup</a>
|
76
|
+
</ul>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div id="classindex-section" class="nav-section">
|
80
|
+
<h3>Class and Module Index</h3>
|
81
|
+
|
82
|
+
<ul class="link-list">
|
83
|
+
<li><code><a href="./Add_student_presenter.html">Add_student_presenter</a></code>
|
84
|
+
<li><code><a href="./App_logger.html">App_logger</a></code>
|
85
|
+
<li><code><a href="./Base_presenter.html">Base_presenter</a></code>
|
86
|
+
<li><details><summary><code><a href="./Binary_tree.html">Binary_tree</a></code></summary>
|
87
|
+
<ul class="link-list">
|
88
|
+
<li><code><a href="./Binary_tree/Node.html">Node</a></code>
|
89
|
+
</ul></details>
|
90
|
+
<li><code><a href="./Binary_tree_iterator.html">Binary_tree_iterator</a></code>
|
91
|
+
<li><code><a href="./Contact_sort_decorator.html">Contact_sort_decorator</a></code>
|
92
|
+
<li><code><a href="./DB_client.html">DB_client</a></code>
|
93
|
+
<li><code><a href="./Data_list.html">Data_list</a></code>
|
94
|
+
<li><code><a href="./Data_list_student_short.html">Data_list_student_short</a></code>
|
95
|
+
<li><code><a href="./Data_storage_strategy.html">Data_storage_strategy</a></code>
|
96
|
+
<li><code><a href="./Data_table.html">Data_table</a></code>
|
97
|
+
<li><code><a href="./Deep_dup.html">Deep_dup</a></code>
|
98
|
+
<li><code><a href="./Edit_contacts_presenter.html">Edit_contacts_presenter</a></code>
|
99
|
+
<li><code><a href="./Edit_git_presenter.html">Edit_git_presenter</a></code>
|
100
|
+
<li><code><a href="./Edit_student_presenter.html">Edit_student_presenter</a></code>
|
101
|
+
<li><code><a href="./Field_filter_decorator.html">Field_filter_decorator</a></code>
|
102
|
+
<li><code><a href="./Filter.html">Filter</a></code>
|
103
|
+
<li><code><a href="./Filter_decorator.html">Filter_decorator</a></code>
|
104
|
+
<li><code><a href="./Full_name_filter_decorator.html">Full_name_filter_decorator</a></code>
|
105
|
+
<li><code><a href="./Full_name_sort_decorator.html">Full_name_sort_decorator</a></code>
|
106
|
+
<li><code><a href="./Git_sort_decorator.html">Git_sort_decorator</a></code>
|
107
|
+
<li><code><a href="./Has_not_field_filter_decorator.html">Has_not_field_filter_decorator</a></code>
|
108
|
+
<li><code><a href="./JSON_storage_strategy.html">JSON_storage_strategy</a></code>
|
109
|
+
<li><code><a href="./Person.html">Person</a></code>
|
110
|
+
<li><code><a href="./Replace_student_presenter.html">Replace_student_presenter</a></code>
|
111
|
+
<li><code><a href="./Sort_decorator.html">Sort_decorator</a></code>
|
112
|
+
<li><code><a href="./Student.html">Student</a></code>
|
113
|
+
<li><details><summary><code><a href="./StudentMvp.html">StudentMvp</a></code></summary>
|
114
|
+
<ul class="link-list">
|
115
|
+
<li><code><a href="./StudentMvp/Error.html">Error</a></code>
|
116
|
+
</ul></details>
|
117
|
+
<li><code><a href="./Student_list_presenter.html">Student_list_presenter</a></code>
|
118
|
+
<li><code><a href="./Student_short.html">Student_short</a></code>
|
119
|
+
<li><code><a href="./Students_list.html">Students_list</a></code>
|
120
|
+
<li><code><a href="./Students_list_DB.html">Students_list_DB</a></code>
|
121
|
+
<li><code><a href="./Students_list_file.html">Students_list_file</a></code>
|
122
|
+
<li><code><a href="./Students_list_file_adapter.html">Students_list_file_adapter</a></code>
|
123
|
+
<li><code><a href="./Students_list_interface.html">Students_list_interface</a></code>
|
124
|
+
<li><code><a href="./YAML_storage_strategy.html">YAML_storage_strategy</a></code>
|
125
|
+
</div>
|
126
|
+
|
127
|
+
|
128
|
+
<footer id="validator-badges" role="contentinfo">
|
129
|
+
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
130
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.8.1.
|
131
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
132
|
+
</footer>
|
133
|
+
|
134
|
+
</nav>
|
135
|
+
|
136
|
+
<main role="main">
|
137
|
+
|
138
|
+
|
139
|
+
<h1 id="label-StudentMvp"><a href="StudentMvp.html"><code>StudentMvp</code></a><span><a href="#label-StudentMvp">¶</a> <a href="#top">↑</a></span></h1>
|
140
|
+
|
141
|
+
<p>TODO: Delete this and the text below, and describe your gem</p>
|
142
|
+
|
143
|
+
<p>Welcome to your new gem! In this directory, you’ll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file <code>lib/student_mvp</code>. To experiment with that code, run <code>bin/console</code> for an interactive prompt.</p>
|
144
|
+
|
145
|
+
<h2 id="label-Installation">Installation<span><a href="#label-Installation">¶</a> <a href="#top">↑</a></span></h2>
|
146
|
+
|
147
|
+
<p>TODO: Replace <code>UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG</code> with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don’t plan to release to RubyGems.org.</p>
|
148
|
+
|
149
|
+
<p>Install the gem and add to the application’s <a href="Gemfile.html">Gemfile</a> by executing:</p>
|
150
|
+
|
151
|
+
<pre class="ruby"><span class="ruby-identifier">bundle</span> <span class="ruby-identifier">add</span> <span class="ruby-constant">UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG</span>
|
152
|
+
</pre>
|
153
|
+
|
154
|
+
<p>If bundler is not being used to manage dependencies, install the gem by executing:</p>
|
155
|
+
|
156
|
+
<pre class="ruby"><span class="ruby-identifier">gem</span> <span class="ruby-identifier">install</span> <span class="ruby-constant">UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG</span>
|
157
|
+
</pre>
|
158
|
+
|
159
|
+
<h2 id="label-Usage">Usage<span><a href="#label-Usage">¶</a> <a href="#top">↑</a></span></h2>
|
160
|
+
|
161
|
+
<p>TODO: Write usage instructions here</p>
|
162
|
+
|
163
|
+
<h2 id="label-Development">Development<span><a href="#label-Development">¶</a> <a href="#top">↑</a></span></h2>
|
164
|
+
|
165
|
+
<p>After checking out the repo, run <code>bin/setup</code> to install dependencies. You can also run <code>bin/console</code> for an interactive prompt that will allow you to experiment.</p>
|
166
|
+
|
167
|
+
<p>To install this gem onto your local machine, run <code>bundle exec rake install</code>. To release a new version, update the version number in <code>version.rb</code>, and then run <code>bundle exec rake release</code>, which will create a git tag for the version, push git commits and the created tag, and push the <code>.gem</code> file to <a href="https://rubygems.org">rubygems.org</a>.</p>
|
168
|
+
|
169
|
+
<h2 id="label-Contributing">Contributing<span><a href="#label-Contributing">¶</a> <a href="#top">↑</a></span></h2>
|
170
|
+
|
171
|
+
<p>Bug reports and pull requests are welcome on GitHub at <a href="https://github.com/[USERNAME]/student_mvp">github.com/[USERNAME]/student_mvp</a>.</p>
|
172
|
+
|
173
|
+
</main>
|
174
|
+
|
data/doc/js/darkfish.js
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* Darkfish Page Functions
|
4
|
+
* $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $
|
5
|
+
*
|
6
|
+
* Author: Michael Granger <mgranger@laika.com>
|
7
|
+
*
|
8
|
+
*/
|
9
|
+
|
10
|
+
/* Provide console simulation for firebug-less environments */
|
11
|
+
/*
|
12
|
+
if (!("console" in window) || !("firebug" in console)) {
|
13
|
+
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
14
|
+
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
15
|
+
|
16
|
+
window.console = {};
|
17
|
+
for (var i = 0; i < names.length; ++i)
|
18
|
+
window.console[names[i]] = function() {};
|
19
|
+
};
|
20
|
+
*/
|
21
|
+
|
22
|
+
|
23
|
+
function showSource( e ) {
|
24
|
+
var target = e.target;
|
25
|
+
while (!target.classList.contains('method-detail')) {
|
26
|
+
target = target.parentNode;
|
27
|
+
}
|
28
|
+
if (typeof target !== "undefined" && target !== null) {
|
29
|
+
target = target.querySelector('.method-source-code');
|
30
|
+
}
|
31
|
+
if (typeof target !== "undefined" && target !== null) {
|
32
|
+
target.classList.toggle('active-menu')
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
36
|
+
function hookSourceViews() {
|
37
|
+
document.querySelectorAll('.method-source-toggle').forEach(function (codeObject) {
|
38
|
+
codeObject.addEventListener('click', showSource);
|
39
|
+
});
|
40
|
+
};
|
41
|
+
|
42
|
+
function hookSearch() {
|
43
|
+
var input = document.querySelector('#search-field');
|
44
|
+
var result = document.querySelector('#search-results');
|
45
|
+
result.classList.remove("initially-hidden");
|
46
|
+
|
47
|
+
var search_section = document.querySelector('#search-section');
|
48
|
+
search_section.classList.remove("initially-hidden");
|
49
|
+
|
50
|
+
var search = new Search(search_data, input, result);
|
51
|
+
|
52
|
+
search.renderItem = function(result) {
|
53
|
+
var li = document.createElement('li');
|
54
|
+
var html = '';
|
55
|
+
|
56
|
+
// TODO add relative path to <script> per-page
|
57
|
+
html += '<p class="search-match"><a href="' + index_rel_prefix + this.escapeHTML(result.path) + '">' + this.hlt(result.title);
|
58
|
+
if (result.params)
|
59
|
+
html += '<span class="params">' + result.params + '</span>';
|
60
|
+
html += '</a>';
|
61
|
+
|
62
|
+
|
63
|
+
if (result.namespace)
|
64
|
+
html += '<p class="search-namespace">' + this.hlt(result.namespace);
|
65
|
+
|
66
|
+
if (result.snippet)
|
67
|
+
html += '<div class="search-snippet">' + result.snippet + '</div>';
|
68
|
+
|
69
|
+
li.innerHTML = html;
|
70
|
+
|
71
|
+
return li;
|
72
|
+
}
|
73
|
+
|
74
|
+
search.select = function(result) {
|
75
|
+
window.location.href = result.firstChild.firstChild.href;
|
76
|
+
}
|
77
|
+
|
78
|
+
search.scrollIntoView = search.scrollInWindow;
|
79
|
+
};
|
80
|
+
|
81
|
+
function hookFocus() {
|
82
|
+
document.addEventListener("keydown", (event) => {
|
83
|
+
if (document.activeElement.tagName === 'INPUT') {
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
if (event.key === "/") {
|
87
|
+
event.preventDefault();
|
88
|
+
document.querySelector('#search-field').focus();
|
89
|
+
}
|
90
|
+
});
|
91
|
+
}
|
92
|
+
|
93
|
+
function hookSidebar() {
|
94
|
+
var navigation = document.querySelector('#navigation');
|
95
|
+
var navigationToggle = document.querySelector('#navigation-toggle');
|
96
|
+
|
97
|
+
navigationToggle.addEventListener('click', function() {
|
98
|
+
navigation.hidden = !navigation.hidden;
|
99
|
+
navigationToggle.ariaExpanded = navigationToggle.ariaExpanded !== 'true';
|
100
|
+
});
|
101
|
+
|
102
|
+
var isSmallViewport = window.matchMedia("(max-width: 1024px)").matches;
|
103
|
+
if (isSmallViewport) {
|
104
|
+
navigation.hidden = true;
|
105
|
+
navigationToggle.ariaExpanded = false;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
document.addEventListener('DOMContentLoaded', function() {
|
110
|
+
hookSourceViews();
|
111
|
+
hookSearch();
|
112
|
+
hookFocus();
|
113
|
+
hookSidebar();
|
114
|
+
});
|
@@ -0,0 +1,105 @@
|
|
1
|
+
/*
|
2
|
+
* Navigation allows movement using the arrow keys through the search results.
|
3
|
+
*
|
4
|
+
* When using this library you will need to set scrollIntoView to the
|
5
|
+
* appropriate function for your layout. Use scrollInWindow if the container
|
6
|
+
* is not scrollable and scrollInElement if the container is a separate
|
7
|
+
* scrolling region.
|
8
|
+
*/
|
9
|
+
Navigation = new function() {
|
10
|
+
this.initNavigation = function() {
|
11
|
+
var _this = this;
|
12
|
+
|
13
|
+
document.addEventListener('keydown', function(e) {
|
14
|
+
_this.onkeydown(e);
|
15
|
+
});
|
16
|
+
|
17
|
+
this.navigationActive = true;
|
18
|
+
}
|
19
|
+
|
20
|
+
this.setNavigationActive = function(state) {
|
21
|
+
this.navigationActive = state;
|
22
|
+
}
|
23
|
+
|
24
|
+
this.onkeydown = function(e) {
|
25
|
+
if (!this.navigationActive) return;
|
26
|
+
switch(e.key) {
|
27
|
+
case 'ArrowLeft':
|
28
|
+
if (this.moveLeft()) e.preventDefault();
|
29
|
+
break;
|
30
|
+
case 'ArrowUp':
|
31
|
+
if (e.key == 'ArrowUp' || e.ctrlKey) {
|
32
|
+
if (this.moveUp()) e.preventDefault();
|
33
|
+
}
|
34
|
+
break;
|
35
|
+
case 'ArrowRight':
|
36
|
+
if (this.moveRight()) e.preventDefault();
|
37
|
+
break;
|
38
|
+
case 'ArrowDown':
|
39
|
+
if (e.key == 'ArrowDown' || e.ctrlKey) {
|
40
|
+
if (this.moveDown()) e.preventDefault();
|
41
|
+
}
|
42
|
+
break;
|
43
|
+
case 'Enter':
|
44
|
+
if (this.current) e.preventDefault();
|
45
|
+
this.select(this.current);
|
46
|
+
break;
|
47
|
+
}
|
48
|
+
if (e.ctrlKey && e.shiftKey) this.select(this.current);
|
49
|
+
}
|
50
|
+
|
51
|
+
this.moveRight = function() {
|
52
|
+
}
|
53
|
+
|
54
|
+
this.moveLeft = function() {
|
55
|
+
}
|
56
|
+
|
57
|
+
this.move = function(isDown) {
|
58
|
+
}
|
59
|
+
|
60
|
+
this.moveUp = function() {
|
61
|
+
return this.move(false);
|
62
|
+
}
|
63
|
+
|
64
|
+
this.moveDown = function() {
|
65
|
+
return this.move(true);
|
66
|
+
}
|
67
|
+
|
68
|
+
/*
|
69
|
+
* Scrolls to the given element in the scrollable element view.
|
70
|
+
*/
|
71
|
+
this.scrollInElement = function(element, view) {
|
72
|
+
var offset, viewHeight, viewScroll, height;
|
73
|
+
offset = element.offsetTop;
|
74
|
+
height = element.offsetHeight;
|
75
|
+
viewHeight = view.offsetHeight;
|
76
|
+
viewScroll = view.scrollTop;
|
77
|
+
|
78
|
+
if (offset - viewScroll + height > viewHeight) {
|
79
|
+
view.scrollTop = offset - viewHeight + height;
|
80
|
+
}
|
81
|
+
if (offset < viewScroll) {
|
82
|
+
view.scrollTop = offset;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
/*
|
87
|
+
* Scrolls to the given element in the window. The second argument is
|
88
|
+
* ignored
|
89
|
+
*/
|
90
|
+
this.scrollInWindow = function(element, ignored) {
|
91
|
+
var offset, viewHeight, viewScroll, height;
|
92
|
+
offset = element.offsetTop;
|
93
|
+
height = element.offsetHeight;
|
94
|
+
viewHeight = window.innerHeight;
|
95
|
+
viewScroll = window.scrollY;
|
96
|
+
|
97
|
+
if (offset - viewScroll + height > viewHeight) {
|
98
|
+
window.scrollTo(window.scrollX, offset - viewHeight + height);
|
99
|
+
}
|
100
|
+
if (offset < viewScroll) {
|
101
|
+
window.scrollTo(window.scrollX, offset);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
Binary file
|
data/doc/js/search.js
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
Search = function(data, input, result) {
|
2
|
+
this.data = data;
|
3
|
+
this.input = input;
|
4
|
+
this.result = result;
|
5
|
+
|
6
|
+
this.current = null;
|
7
|
+
this.view = this.result.parentNode;
|
8
|
+
this.searcher = new Searcher(data.index);
|
9
|
+
this.init();
|
10
|
+
}
|
11
|
+
|
12
|
+
Search.prototype = Object.assign({}, Navigation, new function() {
|
13
|
+
var suid = 1;
|
14
|
+
|
15
|
+
this.init = function() {
|
16
|
+
var _this = this;
|
17
|
+
var observer = function(e) {
|
18
|
+
switch(e.key) {
|
19
|
+
case 'ArrowUp':
|
20
|
+
case 'ArrowDown':
|
21
|
+
return;
|
22
|
+
}
|
23
|
+
_this.search(_this.input.value);
|
24
|
+
};
|
25
|
+
this.input.addEventListener('keyup', observer);
|
26
|
+
this.input.addEventListener('click', observer); // mac's clear field
|
27
|
+
|
28
|
+
this.searcher.ready(function(results, isLast) {
|
29
|
+
_this.addResults(results, isLast);
|
30
|
+
})
|
31
|
+
|
32
|
+
this.initNavigation();
|
33
|
+
this.setNavigationActive(false);
|
34
|
+
}
|
35
|
+
|
36
|
+
this.search = function(value, selectFirstMatch) {
|
37
|
+
value = value.trim().toLowerCase();
|
38
|
+
if (value) {
|
39
|
+
this.setNavigationActive(true);
|
40
|
+
} else {
|
41
|
+
this.setNavigationActive(false);
|
42
|
+
}
|
43
|
+
|
44
|
+
if (value == '') {
|
45
|
+
this.lastQuery = value;
|
46
|
+
this.result.innerHTML = '';
|
47
|
+
this.result.setAttribute('aria-expanded', 'false');
|
48
|
+
this.setNavigationActive(false);
|
49
|
+
} else if (value != this.lastQuery) {
|
50
|
+
this.lastQuery = value;
|
51
|
+
this.result.setAttribute('aria-busy', 'true');
|
52
|
+
this.result.setAttribute('aria-expanded', 'true');
|
53
|
+
this.firstRun = true;
|
54
|
+
this.searcher.find(value);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
this.addResults = function(results, isLast) {
|
59
|
+
var target = this.result;
|
60
|
+
if (this.firstRun && (results.length > 0 || isLast)) {
|
61
|
+
this.current = null;
|
62
|
+
this.result.innerHTML = '';
|
63
|
+
}
|
64
|
+
|
65
|
+
for (var i=0, l = results.length; i < l; i++) {
|
66
|
+
var item = this.renderItem.call(this, results[i]);
|
67
|
+
item.setAttribute('id', 'search-result-' + target.childElementCount);
|
68
|
+
target.appendChild(item);
|
69
|
+
};
|
70
|
+
|
71
|
+
if (this.firstRun && results.length > 0) {
|
72
|
+
this.firstRun = false;
|
73
|
+
this.current = target.firstChild;
|
74
|
+
this.current.classList.add('search-selected');
|
75
|
+
}
|
76
|
+
//TODO: ECMAScript
|
77
|
+
//if (jQuery.browser.msie) this.$element[0].className += '';
|
78
|
+
|
79
|
+
if (isLast) this.result.setAttribute('aria-busy', 'false');
|
80
|
+
}
|
81
|
+
|
82
|
+
this.move = function(isDown) {
|
83
|
+
if (!this.current) return;
|
84
|
+
var next = isDown ? this.current.nextElementSibling : this.current.previousElementSibling;
|
85
|
+
if (next) {
|
86
|
+
this.current.classList.remove('search-selected');
|
87
|
+
next.classList.add('search-selected');
|
88
|
+
this.input.setAttribute('aria-activedescendant', next.getAttribute('id'));
|
89
|
+
this.scrollIntoView(next, this.view);
|
90
|
+
this.current = next;
|
91
|
+
this.input.value = next.firstChild.firstChild.text;
|
92
|
+
this.input.select();
|
93
|
+
}
|
94
|
+
return true;
|
95
|
+
}
|
96
|
+
|
97
|
+
this.hlt = function(html) {
|
98
|
+
return this.escapeHTML(html).
|
99
|
+
replace(/\u0001/g, '<em>').
|
100
|
+
replace(/\u0002/g, '</em>');
|
101
|
+
}
|
102
|
+
|
103
|
+
this.escapeHTML = function(html) {
|
104
|
+
return html.replace(/[&<>"`']/g, function(c) {
|
105
|
+
return '&#' + c.charCodeAt(0) + ';';
|
106
|
+
});
|
107
|
+
}
|
108
|
+
|
109
|
+
});
|
110
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
var search_data = {"index":{"searchIndex":["add_student_presenter","app_logger","base_presenter","binary_tree","node","binary_tree_iterator","contact_sort_decorator","db_client","data_list","data_list_student_short","data_storage_strategy","data_table","deep_dup","edit_contacts_presenter","edit_git_presenter","edit_student_presenter","field_filter_decorator","filter","filter_decorator","full_name_filter_decorator","full_name_sort_decorator","git_sort_decorator","has_not_field_filter_decorator","json_storage_strategy","person","replace_student_presenter","sort_decorator","student","studentmvp","error","student_list_presenter","student_short","students_list","students_list_db","students_list_file","students_list_file_adapter","students_list_interface","yaml_storage_strategy","<=>()","add()","add_observer()","add_student()","add_student()","add_student()","add_student()","add_student()","add_student()","apply()","apply()","apply()","apply()","apply()","apply()","apply()","apply()","apply()","apply_filters()","build_row()","check_and_update_page()","clear_selected()","close()","col_count()","data=()","debug()","deep_dup()","delete_student()","delete_student()","delete_student()","delete_student()","delete_student()","delete_student()","deselect()","deselect()","each()","each()","error()","fatal()","find()","get()","get_any_contact()","get_any_contact()","get_any_contact()","get_data()","get_full_name()","get_info()","get_k_n_student_short_list()","get_k_n_student_short_list()","get_k_n_student_short_list()","get_k_n_student_short_list()","get_k_n_student_short_list()","get_names()","get_names()","get_selected()","get_selected()","get_student()","get_student()","get_student_by_id()","get_student_by_id()","get_student_by_id()","get_student_by_id()","get_student_by_id()","get_student_short_count()","get_student_short_count()","get_student_short_count()","get_student_short_count()","get_student_short_count()","git=()","info()","instance()","instance()","key()","log()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new_from_hash()","new_from_string()","new_from_string()","new_from_student_obj()","new_student()","notify()","operation()","operation()","parse_string()","populate_fields()","populate_fields()","populate_fields()","populate_fields()","populate_fields()","query()","read()","read()","read()","read()","refresh_data()","replace_student()","replace_student()","replace_student()","replace_student()","replace_student()","replace_student()","reset_filters()","retrieve_data()","row_count()","select()","select()","set_contacts()","set_sort_order()","sort_by_full_name!()","switch_page()","to_h()","to_line_s()","to_s()","valid_birthdate?()","valid_data?()","valid_data?()","valid_data?()","valid_data?()","valid_data?()","valid_email?()","valid_git?()","valid_index?()","valid_name?()","valid_name?()","valid_phone_number?()","valid_telegram?()","validate?()","validate?()","validate?()","validate_contacts?()","validate_contacts?()","validate_git?()","warn()","write()","write()","write()","write()","gemfile","readme","rakefile","setup"],"longSearchIndex":["add_student_presenter","app_logger","base_presenter","binary_tree","binary_tree::node","binary_tree_iterator","contact_sort_decorator","db_client","data_list","data_list_student_short","data_storage_strategy","data_table","deep_dup","edit_contacts_presenter","edit_git_presenter","edit_student_presenter","field_filter_decorator","filter","filter_decorator","full_name_filter_decorator","full_name_sort_decorator","git_sort_decorator","has_not_field_filter_decorator","json_storage_strategy","person","replace_student_presenter","sort_decorator","student","studentmvp","studentmvp::error","student_list_presenter","student_short","students_list","students_list_db","students_list_file","students_list_file_adapter","students_list_interface","yaml_storage_strategy","student#<=>()","binary_tree#add()","data_list#add_observer()","student_list_presenter#add_student()","students_list#add_student()","students_list_db#add_student()","students_list_file#add_student()","students_list_file_adapter#add_student()","students_list_interface#add_student()","contact_sort_decorator#apply()","field_filter_decorator#apply()","filter#apply()","filter_decorator#apply()","full_name_filter_decorator#apply()","full_name_sort_decorator#apply()","git_sort_decorator#apply()","has_not_field_filter_decorator#apply()","sort_decorator#apply()","student_list_presenter#apply_filters()","data_list#build_row()","student_list_presenter#check_and_update_page()","data_list#clear_selected()","db_client#close()","data_table#col_count()","data_list#data=()","app_logger#debug()","deep_dup#deep_dup()","student_list_presenter#delete_student()","students_list#delete_student()","students_list_db#delete_student()","students_list_file#delete_student()","students_list_file_adapter#delete_student()","students_list_interface#delete_student()","data_list#deselect()","student_list_presenter#deselect()","binary_tree#each()","binary_tree_iterator#each()","app_logger#error()","app_logger#fatal()","binary_tree#find()","data_table#get()","person#get_any_contact()","student#get_any_contact()","student_short#get_any_contact()","data_list#get_data()","student#get_full_name()","student#get_info()","students_list#get_k_n_student_short_list()","students_list_db#get_k_n_student_short_list()","students_list_file#get_k_n_student_short_list()","students_list_file_adapter#get_k_n_student_short_list()","students_list_interface#get_k_n_student_short_list()","data_list#get_names()","data_list_student_short#get_names()","data_list#get_selected()","student_list_presenter#get_selected()","edit_student_presenter#get_student()","student_list_presenter#get_student()","students_list#get_student_by_id()","students_list_db#get_student_by_id()","students_list_file#get_student_by_id()","students_list_file_adapter#get_student_by_id()","students_list_interface#get_student_by_id()","students_list#get_student_short_count()","students_list_db#get_student_short_count()","students_list_file#get_student_short_count()","students_list_file_adapter#get_student_short_count()","students_list_interface#get_student_short_count()","person#git=()","app_logger#info()","app_logger::instance()","db_client::instance()","student#key()","app_logger#log()","app_logger::new()","base_presenter::new()","binary_tree::new()","binary_tree::node::new()","binary_tree_iterator::new()","contact_sort_decorator::new()","db_client::new()","data_list::new()","data_table::new()","edit_student_presenter::new()","field_filter_decorator::new()","filter_decorator::new()","full_name_filter_decorator::new()","full_name_sort_decorator::new()","git_sort_decorator::new()","has_not_field_filter_decorator::new()","sort_decorator::new()","student::new()","student_list_presenter::new()","student_short::new()","students_list::new()","students_list_file::new()","students_list_file_adapter::new()","student::new_from_hash()","student::new_from_string()","student_short::new_from_string()","student_short::new_from_student_obj()","edit_student_presenter#new_student()","data_list#notify()","add_student_presenter#operation()","edit_student_presenter#operation()","person::parse_string()","add_student_presenter#populate_fields()","edit_contacts_presenter#populate_fields()","edit_git_presenter#populate_fields()","edit_student_presenter#populate_fields()","replace_student_presenter#populate_fields()","db_client#query()","data_storage_strategy#read()","json_storage_strategy#read()","students_list_file#read()","yaml_storage_strategy#read()","student_list_presenter#refresh_data()","student_list_presenter#replace_student()","students_list#replace_student()","students_list_db#replace_student()","students_list_file#replace_student()","students_list_file_adapter#replace_student()","students_list_interface#replace_student()","student_list_presenter#reset_filters()","data_list#retrieve_data()","data_table#row_count()","data_list#select()","student_list_presenter#select()","person#set_contacts()","student_list_presenter#set_sort_order()","students_list_file#sort_by_full_name!()","student_list_presenter#switch_page()","student#to_h()","student#to_line_s()","student#to_s()","student::valid_birthdate?()","add_student_presenter#valid_data?()","edit_contacts_presenter#valid_data?()","edit_git_presenter#valid_data?()","edit_student_presenter#valid_data?()","replace_student_presenter#valid_data?()","person::valid_email?()","person::valid_git?()","data_list#valid_index?()","person::valid_name?()","student_short::valid_name?()","person::valid_phone_number?()","person::valid_telegram?()","person#validate?()","student#validate?()","student_short#validate?()","student#validate_contacts?()","student_short#validate_contacts?()","person#validate_git?()","app_logger#warn()","data_storage_strategy#write()","json_storage_strategy#write()","students_list_file#write()","yaml_storage_strategy#write()","","","",""],"info":[["Add_student_presenter","","Add_student_presenter.html","","<p>Add_student_presenter\n<p>Презентер для добавления нового студента.\n"],["App_logger","","App_logger.html","",""],["Base_presenter","","Base_presenter.html","","<p>Base_presenter\n<p>Базовый класс для презентеров. Управляет основными атрибутами и логикой взаимодействия …\n"],["Binary_tree","","Binary_tree.html","",""],["Binary_tree::Node","","Binary_tree/Node.html","",""],["Binary_tree_iterator","","Binary_tree_iterator.html","",""],["Contact_sort_decorator","","Contact_sort_decorator.html","",""],["DB_client","","DB_client.html","",""],["Data_list","","Data_list.html","",""],["Data_list_student_short","","Data_list_student_short.html","",""],["Data_storage_strategy","","Data_storage_strategy.html","",""],["Data_table","","Data_table.html","",""],["Deep_dup","","Deep_dup.html","",""],["Edit_contacts_presenter","","Edit_contacts_presenter.html","","<p>Edit_contacts_presenter\n<p>Презентер для редактирования контактной информации студента.\n"],["Edit_git_presenter","","Edit_git_presenter.html","","<p>Edit_git_presenter\n<p>Презентер для редактирования информации о GitHub аккаунте студента.\n"],["Edit_student_presenter","","Edit_student_presenter.html","","<p>Edit_student_presenter\n<p>Базовый класс для управления данными студентов. Предоставляет общие методы для …\n"],["Field_filter_decorator","","Field_filter_decorator.html","",""],["Filter","","Filter.html","",""],["Filter_decorator","","Filter_decorator.html","",""],["Full_name_filter_decorator","","Full_name_filter_decorator.html","",""],["Full_name_sort_decorator","","Full_name_sort_decorator.html","",""],["Git_sort_decorator","","Git_sort_decorator.html","",""],["Has_not_field_filter_decorator","","Has_not_field_filter_decorator.html","",""],["JSON_storage_strategy","","JSON_storage_strategy.html","",""],["Person","","Person.html","",""],["Replace_student_presenter","","Replace_student_presenter.html","","<p>Replace_student_presenter\n<p>Презентер для замены информации о студенте.\n"],["Sort_decorator","","Sort_decorator.html","",""],["Student","","Student.html","",""],["StudentMvp","","StudentMvp.html","",""],["StudentMvp::Error","","StudentMvp/Error.html","",""],["Student_list_presenter","","Student_list_presenter.html","","<p>Student_list_presenter\n<p>Презентер для управления списком студентов. Отвечает за логику отображения, фильтрации …\n"],["Student_short","","Student_short.html","",""],["Students_list","","Students_list.html","",""],["Students_list_DB","","Students_list_DB.html","",""],["Students_list_file","","Students_list_file.html","",""],["Students_list_file_adapter","","Students_list_file_adapter.html","",""],["Students_list_interface","","Students_list_interface.html","",""],["YAML_storage_strategy","","YAML_storage_strategy.html","",""],["<=>","Student","Student.html#method-i-3C-3D-3E","(other)",""],["add","Binary_tree","Binary_tree.html#method-i-add","(value)",""],["add_observer","Data_list","Data_list.html#method-i-add_observer","(observer)",""],["add_student","Student_list_presenter","Student_list_presenter.html#method-i-add_student","(student)","<p>Добавление нового студента.\n<p>@param student [Student] Объект студента для добавления.\n"],["add_student","Students_list","Students_list.html#method-i-add_student","(student)",""],["add_student","Students_list_DB","Students_list_DB.html#method-i-add_student","(student)",""],["add_student","Students_list_file","Students_list_file.html#method-i-add_student","(student)","<p>add student\n"],["add_student","Students_list_file_adapter","Students_list_file_adapter.html#method-i-add_student","(student)","<p>add student\n"],["add_student","Students_list_interface","Students_list_interface.html#method-i-add_student","(student)",""],["apply","Contact_sort_decorator","Contact_sort_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Field_filter_decorator","Field_filter_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Filter","Filter.html#method-i-apply","(filtering_obj)",""],["apply","Filter_decorator","Filter_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Full_name_filter_decorator","Full_name_filter_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Full_name_sort_decorator","Full_name_sort_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Git_sort_decorator","Git_sort_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Has_not_field_filter_decorator","Has_not_field_filter_decorator.html#method-i-apply","(filtering_obj)",""],["apply","Sort_decorator","Sort_decorator.html#method-i-apply","(filtering_obj)",""],["apply_filters","Student_list_presenter","Student_list_presenter.html#method-i-apply_filters","()","<p>Применение фильтров.\n"],["build_row","Data_list","Data_list.html#method-i-build_row","(index, obj)","<p>build row method (abstract)\n"],["check_and_update_page","Student_list_presenter","Student_list_presenter.html#method-i-check_and_update_page","()","<p>Проверка и, если нужно, смена страницы в таблице. Используется после удаления студента.\n"],["clear_selected","Data_list","Data_list.html#method-i-clear_selected","()","<p>clear selected\n"],["close","DB_client","DB_client.html#method-i-close","()",""],["col_count","Data_table","Data_table.html#method-i-col_count","()","<p>column count\n"],["data=","Data_list","Data_list.html#method-i-data-3D","(data)","<p>data setter\n"],["debug","App_logger","App_logger.html#method-i-debug","(message)",""],["deep_dup","Deep_dup","Deep_dup.html#method-i-deep_dup","(element)","<p>deep copy\n"],["delete_student","Student_list_presenter","Student_list_presenter.html#method-i-delete_student","()","<p>Удаление выбранных студентов в таблице студентов.\n"],["delete_student","Students_list","Students_list.html#method-i-delete_student","(id)",""],["delete_student","Students_list_DB","Students_list_DB.html#method-i-delete_student","(id)",""],["delete_student","Students_list_file","Students_list_file.html#method-i-delete_student","(id)","<p>delete student by id\n"],["delete_student","Students_list_file_adapter","Students_list_file_adapter.html#method-i-delete_student","(id)","<p>delete student by id\n"],["delete_student","Students_list_interface","Students_list_interface.html#method-i-delete_student","(id)",""],["deselect","Data_list","Data_list.html#method-i-deselect","(number)","<p>deselect\n"],["deselect","Student_list_presenter","Student_list_presenter.html#method-i-deselect","(number)","<p>Удаление выделения строки таблицы.\n<p>@param number [Integer] Индекс строки для удаления выбора.\n"],["each","Binary_tree","Binary_tree.html#method-i-each","(&block)",""],["each","Binary_tree_iterator","Binary_tree_iterator.html#method-i-each","(&block)",""],["error","App_logger","App_logger.html#method-i-error","(message)",""],["fatal","App_logger","App_logger.html#method-i-fatal","(message)",""],["find","Binary_tree","Binary_tree.html#method-i-find","(key)",""],["get","Data_table","Data_table.html#method-i-get","(row, col)","<p>get element\n"],["get_any_contact","Person","Person.html#method-i-get_any_contact","()",""],["get_any_contact","Student","Student.html#method-i-get_any_contact","()","<p>get any contact in string\n"],["get_any_contact","Student_short","Student_short.html#method-i-get_any_contact","()",""],["get_data","Data_list","Data_list.html#method-i-get_data","()","<p>get_data\n"],["get_full_name","Student","Student.html#method-i-get_full_name","()","<p>get full name in string\n"],["get_info","Student","Student.html#method-i-get_info","()","<p>get short info in string\n"],["get_k_n_student_short_list","Students_list","Students_list.html#method-i-get_k_n_student_short_list","(k, n, filter = nil, data_list = nil)",""],["get_k_n_student_short_list","Students_list_DB","Students_list_DB.html#method-i-get_k_n_student_short_list","(k, n, filter = nil, data_list = nil)",""],["get_k_n_student_short_list","Students_list_file","Students_list_file.html#method-i-get_k_n_student_short_list","(k, n, filter = nil, data_list = nil)","<p>get data_list_student_short of k n students\n"],["get_k_n_student_short_list","Students_list_file_adapter","Students_list_file_adapter.html#method-i-get_k_n_student_short_list","(k, n, filter = nil, data_list = nil)","<p>get data_list_student_short of k n students\n"],["get_k_n_student_short_list","Students_list_interface","Students_list_interface.html#method-i-get_k_n_student_short_list","(k, n, filter = nil, data_list = nil)",""],["get_names","Data_list","Data_list.html#method-i-get_names","()","<p>get names (abstract)\n"],["get_names","Data_list_student_short","Data_list_student_short.html#method-i-get_names","()","<p>get_names for student short\n"],["get_selected","Data_list","Data_list.html#method-i-get_selected","()","<p>get selected ids\n"],["get_selected","Student_list_presenter","Student_list_presenter.html#method-i-get_selected","()","<p>Получение списка ID выбранных студентов.\n<p>@return [Array<Integer>] Список ID выбранных студентов. …\n"],["get_student","Edit_student_presenter","Edit_student_presenter.html#method-i-get_student","()","<p>Получение данных студента из родительского презентера. Загружает информацию о выбранном студенте.\n"],["get_student","Student_list_presenter","Student_list_presenter.html#method-i-get_student","(id)","<p>Получение объекта студента по ID.\n<p>@return [Student] Объект студента.\n"],["get_student_by_id","Students_list","Students_list.html#method-i-get_student_by_id","(id)",""],["get_student_by_id","Students_list_DB","Students_list_DB.html#method-i-get_student_by_id","(id)",""],["get_student_by_id","Students_list_file","Students_list_file.html#method-i-get_student_by_id","(id)","<p>get student by id\n"],["get_student_by_id","Students_list_file_adapter","Students_list_file_adapter.html#method-i-get_student_by_id","(id)","<p>get student by id\n"],["get_student_by_id","Students_list_interface","Students_list_interface.html#method-i-get_student_by_id","(id)",""],["get_student_short_count","Students_list","Students_list.html#method-i-get_student_short_count","(filter = nil)",""],["get_student_short_count","Students_list_DB","Students_list_DB.html#method-i-get_student_short_count","(filter = nil)",""],["get_student_short_count","Students_list_file","Students_list_file.html#method-i-get_student_short_count","(filter = nil)","<p>get count of students\n"],["get_student_short_count","Students_list_file_adapter","Students_list_file_adapter.html#method-i-get_student_short_count","(filter = nil)","<p>get count of students\n"],["get_student_short_count","Students_list_interface","Students_list_interface.html#method-i-get_student_short_count","(filter = nil)",""],["git=","Person","Person.html#method-i-git-3D","(git)","<p>git setter\n"],["info","App_logger","App_logger.html#method-i-info","(message)",""],["instance","App_logger","App_logger.html#method-c-instance","()",""],["instance","DB_client","DB_client.html#method-c-instance","(db_config = nil)",""],["key","Student","Student.html#method-i-key","()","<p>key for binary tree\n"],["log","App_logger","App_logger.html#method-i-log","(severity, message)",""],["new","App_logger","App_logger.html#method-c-new","()",""],["new","Base_presenter","Base_presenter.html#method-c-new","(view)","<p>Инициализация базового презентера.\n<p>@param view [Base_view_interface] Объект представления, с которым работает …\n"],["new","Binary_tree","Binary_tree.html#method-c-new","()",""],["new","Binary_tree::Node","Binary_tree/Node.html#method-c-new","(value, color = RED)",""],["new","Binary_tree_iterator","Binary_tree_iterator.html#method-c-new","(root)",""],["new","Contact_sort_decorator","Contact_sort_decorator.html#method-c-new","(filter, order)",""],["new","DB_client","DB_client.html#method-c-new","(db_config)",""],["new","Data_list","Data_list.html#method-c-new","(elements)","<p>constructor\n"],["new","Data_table","Data_table.html#method-c-new","(data)","<p>constructor\n"],["new","Edit_student_presenter","Edit_student_presenter.html#method-c-new","(view, parent_presenter)","<p>Инициализация презентера для управления данными студентов.\n<p>@param view [Modal_interface] Представление …\n"],["new","Field_filter_decorator","Field_filter_decorator.html#method-c-new","(filter, field, value)",""],["new","Filter_decorator","Filter_decorator.html#method-c-new","(filter)",""],["new","Full_name_filter_decorator","Full_name_filter_decorator.html#method-c-new","(filter, full_name)",""],["new","Full_name_sort_decorator","Full_name_sort_decorator.html#method-c-new","(filter, order)",""],["new","Git_sort_decorator","Git_sort_decorator.html#method-c-new","(filter, order)",""],["new","Has_not_field_filter_decorator","Has_not_field_filter_decorator.html#method-c-new","(filter, field)",""],["new","Sort_decorator","Sort_decorator.html#method-c-new","(filter, order)",""],["new","Student","Student.html#method-c-new","(first_name:, name:, patronymic:, birthdate:, id: nil, telegram: nil, phone_number: nil, email: nil, git: nil, key_type: :birthdate)","<p>constructor\n"],["new","Student_list_presenter","Student_list_presenter.html#method-c-new","(view)","<p>Инициализация презентера списка студентов. Настраивает список студентов, фильтры и порядок сортировки. …\n"],["new","Student_short","Student_short.html#method-c-new","(full_name:, git:, contact:, id: nil)",""],["new","Students_list","Students_list.html#method-c-new","(adapter)",""],["new","Students_list_file","Students_list_file.html#method-c-new","(file_path, data_storage_strategy)","<p>constructor\n"],["new","Students_list_file_adapter","Students_list_file_adapter.html#method-c-new","(adaptee)","<p>constructor\n"],["new_from_hash","Student","Student.html#method-c-new_from_hash","(hash)","<p>constructor_from_hash\n"],["new_from_string","Student","Student.html#method-c-new_from_string","(string)","<p>constructor_from_string\n"],["new_from_string","Student_short","Student_short.html#method-c-new_from_string","(id, string)","<p>constructor from string\n"],["new_from_student_obj","Student_short","Student_short.html#method-c-new_from_student_obj","(student)","<p>constructor from Student object\n"],["new_student","Edit_student_presenter","Edit_student_presenter.html#method-i-new_student","(student_data)","<p>Создание нового объекта студента из предоставленных данных.\n<p>@param student_data [Hash] Данные студента. …\n"],["notify","Data_list","Data_list.html#method-i-notify","()",""],["operation","Add_student_presenter","Add_student_presenter.html#method-i-operation","(student_data)","<p>Операция добавления нового студента.\n<p>@param student_data [Hash] Данные студента.\n"],["operation","Edit_student_presenter","Edit_student_presenter.html#method-i-operation","(student_data)","<p>Основная операция редактирования студента.\n<p>@param student_data [Hash] Данные студента.\n"],["parse_string","Person","Person.html#method-c-parse_string","(string)","<p>returning hash\n"],["populate_fields","Add_student_presenter","Add_student_presenter.html#method-i-populate_fields","()","<p>Заполнение полей интерфейса пустыми данными для нового студента.\n"],["populate_fields","Edit_contacts_presenter","Edit_contacts_presenter.html#method-i-populate_fields","()","<p>Заполнение полей интерфейса текущими контактами студента.\n"],["populate_fields","Edit_git_presenter","Edit_git_presenter.html#method-i-populate_fields","()","<p>Заполнение полей интерфейса текущими данными о Git студента.\n"],["populate_fields","Edit_student_presenter","Edit_student_presenter.html#method-i-populate_fields","()","<p>Заполнение полей интерфейса данными студента.\n<p>@raise [NotImplementedError] Метод должен быть реализован …\n"],["populate_fields","Replace_student_presenter","Replace_student_presenter.html#method-i-populate_fields","()","<p>Заполнение полей интерфейса текущими основными данными студента.\n"],["query","DB_client","DB_client.html#method-i-query","(query, params=[])",""],["read","Data_storage_strategy","Data_storage_strategy.html#method-i-read","(file_path)","<p>read from file\n"],["read","JSON_storage_strategy","JSON_storage_strategy.html#method-i-read","(file_path)","<p>read from json file\n"],["read","Students_list_file","Students_list_file.html#method-i-read","()","<p>read from data storage\n"],["read","YAML_storage_strategy","YAML_storage_strategy.html#method-i-read","(file_path)","<p>read from yaml file\n"],["refresh_data","Student_list_presenter","Student_list_presenter.html#method-i-refresh_data","()","<p>Обновление данных в таблице студентов. Выполняет сброс фильтров, применяет новые фильтры и обновляет …\n"],["replace_student","Student_list_presenter","Student_list_presenter.html#method-i-replace_student","(student)","<p>Изменение студента.\n<p>@param student [Student] Объект студента для изменения.\n"],["replace_student","Students_list","Students_list.html#method-i-replace_student","(id, new_student)",""],["replace_student","Students_list_DB","Students_list_DB.html#method-i-replace_student","(id, new_student)",""],["replace_student","Students_list_file","Students_list_file.html#method-i-replace_student","(id, new_student)","<p>replace student by id\n"],["replace_student","Students_list_file_adapter","Students_list_file_adapter.html#method-i-replace_student","(id, new_student)","<p>replace student by id\n"],["replace_student","Students_list_interface","Students_list_interface.html#method-i-replace_student","(id, new_student)",""],["reset_filters","Student_list_presenter","Student_list_presenter.html#method-i-reset_filters","()","<p>Сброс фильтров\n"],["retrieve_data","Data_list","Data_list.html#method-i-retrieve_data","()","<p>pattern-method\n"],["row_count","Data_table","Data_table.html#method-i-row_count","()","<p>row count\n"],["select","Data_list","Data_list.html#method-i-select","(number)","<p>select element id by number\n"],["select","Student_list_presenter","Student_list_presenter.html#method-i-select","(number)","<p>Выбор строки таблицы.\n<p>@param number [Integer] Индекс строки для выбора.\n"],["set_contacts","Person","Person.html#method-i-set_contacts","()",""],["set_sort_order","Student_list_presenter","Student_list_presenter.html#method-i-set_sort_order","(column_index)","<p>Установка порядка сортировки и сортировка данных в таблице.\n<p>@param column_index [Integer] Индекс столбца, …\n"],["sort_by_full_name!","Students_list_file","Students_list_file.html#method-i-sort_by_full_name-21","()","<p>sort by full name\n"],["switch_page","Student_list_presenter","Student_list_presenter.html#method-i-switch_page","(direction)","<p>Изменение текущей страницы в таблице.\n<p>@param direction [Integer] Направление для изменения страницы.\n"],["to_h","Student","Student.html#method-i-to_h","()","<p>to hash\n"],["to_line_s","Student","Student.html#method-i-to_line_s","()","<p>to string\n"],["to_s","Student","Student.html#method-i-to_s","()","<p>to string\n"],["valid_birthdate?","Student","Student.html#method-c-valid_birthdate-3F","(birthdate)",""],["valid_data?","Add_student_presenter","Add_student_presenter.html#method-i-valid_data-3F","(student_data)","<p>Проверка валидности данных студента при добавлении.\n<p>@param student_data [Hash] Данные студента. @return …\n"],["valid_data?","Edit_contacts_presenter","Edit_contacts_presenter.html#method-i-valid_data-3F","(student_data)","<p>Проверка валидности контактных данных студента.\n<p>@param student_data [Hash] Контактные данные студента. …\n"],["valid_data?","Edit_git_presenter","Edit_git_presenter.html#method-i-valid_data-3F","(student_data)","<p>Проверка валидности данных о Git.\n<p>@param student_data [Hash] Данные о Git. @return [Boolean] Возвращает …\n"],["valid_data?","Edit_student_presenter","Edit_student_presenter.html#method-i-valid_data-3F","(student_data)","<p>Проверка валидности данных студента.\n<p>@param student_data [Hash] Данные студента. @return [Boolean] Возвращает …\n"],["valid_data?","Replace_student_presenter","Replace_student_presenter.html#method-i-valid_data-3F","(student_data)","<p>Проверка валидности новых данных студента.\n<p>@param student_data [Hash] Новые данные студента. @return [Boolean] …\n"],["valid_email?","Person","Person.html#method-c-valid_email-3F","(email)","<p>email validation\n"],["valid_git?","Person","Person.html#method-c-valid_git-3F","(git)","<p>git link validation\n"],["valid_index?","Data_list","Data_list.html#method-i-valid_index-3F","(index)","<p>validate index\n"],["valid_name?","Person","Person.html#method-c-valid_name-3F","(name)","<p>names validation\n"],["valid_name?","Student_short","Student_short.html#method-c-valid_name-3F","(name)","<p>full name validation\n"],["valid_phone_number?","Person","Person.html#method-c-valid_phone_number-3F","(phone_number)","<p>phone number validation\n"],["valid_telegram?","Person","Person.html#method-c-valid_telegram-3F","(telegram)","<p>telegram validation\n"],["validate?","Person","Person.html#method-i-validate-3F","()","<p>validate git\n"],["validate?","Student","Student.html#method-i-validate-3F","()","<p>validate git and contacts\n"],["validate?","Student_short","Student_short.html#method-i-validate-3F","()","<p>validate git and contacts\n"],["validate_contacts?","Student","Student.html#method-i-validate_contacts-3F","()","<p>checking for contacts availability\n"],["validate_contacts?","Student_short","Student_short.html#method-i-validate_contacts-3F","()","<p>checking for contacts availability\n"],["validate_git?","Person","Person.html#method-i-validate_git-3F","()","<p>checking for git availability\n"],["warn","App_logger","App_logger.html#method-i-warn","(message)",""],["write","Data_storage_strategy","Data_storage_strategy.html#method-i-write","(file_path, students)","<p>write to file\n"],["write","JSON_storage_strategy","JSON_storage_strategy.html#method-i-write","(file_path, students)","<p>read to json file\n"],["write","Students_list_file","Students_list_file.html#method-i-write","()","<p>write to data storage\n"],["write","YAML_storage_strategy","YAML_storage_strategy.html#method-i-write","(file_path, students)","<p>read to yaml file\n"],["Gemfile","","Gemfile.html","","<p># frozen_string_literal: true\n<p>source “rubygems.org”\n<p># Specify your gem’s dependencies in …\n"],["README","","README_md.html","","<p>StudentMvp\n<p>TODO: Delete this and the text below, and describe your gem\n<p>Welcome to your new gem! In this …\n"],["Rakefile","","Rakefile.html","","<p># frozen_string_literal: true\n<p>require “bundler/gem_tasks” task default: %i[]\n"],["setup","","bin/setup.html","","<p>#!/usr/bin/env bash set -euo pipefail IFS=$‘nt’ set -vx\n<p>bundle install\n<p># Do any other automated …\n"]]}}
|
Binary file
|