+++ /dev/null
-// ================
-// SearchController
-
-var SearchController = (function () {
- var my = {},
- booksModel = undefined;
-
- const terms = ['aut', 'tit', 'ser'];
-
- // ==============
- // Public methods
-
- my.init = function(linkedBooksModel) {
- booksModel = linkedBooksModel;
-
- for (var idx in terms) {
- addEnterListener(terms[idx]);
- }
- };
-
- my.onSearch = function() {
- var url = constructSearchUrl();
-
- fetch(url, {method:'GET', cache:'default'})
- .then(function(response) {return response.json();})
- .then(function(jsonValue) {
- // console.log('JSON response: ', jsonValue);
- booksModel.ids = jsonValue;
- booksModel.count = booksModel.ids.length;
- booksModel.first = (-1);
-
- var elem = document.getElementById('slider');
- elem.max = booksModel.count;
-
- PagingController.adjustPos(0);
- })
- .catch(function(err) {
- var msg = 'Error fetching JSON from URL: ' + url + ': ' + err + ':' + err.stack;
- console.log(msg);
- report(msg);
- });
- };
-
- // ===============
- // Private methods
-
- // KeyUp listener. If the key is [Enter], then trigger a click on the [Search] button.
- function addEnterListener(ctrlId) {
- document.getElementById(ctrlId).addEventListener('keyup', function(event) {
- event.preventDefault();
- if (event.keyCode === 13) {
- document.getElementById('search').click();
- }
- });
- }
-
- function constructSearchUrl() {
- var url = window.location.protocol + '//' + window.location.host + '/search/';
-
- var firstTime = true;
-
- for (var idx in terms) {
- var term = terms[idx];
- var elem = document.getElementById(term);
- if (null === elem) {
- console.log('Error: could not find form element for search term "' + term + '".');
- continue;
- }
-
- var value = elem.value;
- if (value.length > 0) {
- if (firstTime) {
- url += '?';
- firstTime = false;
- }
- else {
- url += '&';
- }
- url += term + '=' + encodeURIComponent('%' + value + '%');
- }
- }
-
- return url;
- }
-
- return my;
-})();