4 var SearchController = (function () {
6 booksModel = undefined;
8 const terms = ['aut', 'lan', 'ser', 'tit'];
13 my.init = function(linkedBooksModel) {
14 booksModel = linkedBooksModel;
16 for (var idx in terms) {
17 addEnterListener(terms[idx]);
21 my.onSearch = function() {
22 var url = constructSearchUrl();
24 fetch(url, {method:'GET', cache:'default'})
25 .then(function(response) {return response.json();})
26 .then(function(jsonValue) {
27 // console.log('JSON response: ', jsonValue);
28 booksModel.ids = jsonValue;
29 booksModel.count = booksModel.ids.length;
30 booksModel.first = (-1);
32 var elem = Browser.getElementById('slider');
33 elem.max = booksModel.count;
34 elem = Browser.getElementById('bottom_slider');
35 elem.max = booksModel.count;
37 PagingController.adjustPos(0);
39 .catch(function(err) {
40 var msg = 'Error fetching JSON from URL: ' + url + ': ' + err + ':' + err.stack;
49 // KeyUp listener. If the key is [Enter], then trigger a click on the [Search] button.
50 function addEnterListener(ctrlId) {
51 Browser.getElementById(ctrlId).addEventListener('keyup', function(event) {
52 event.preventDefault();
53 if (event.keyCode === 13) {
54 Browser.getElementById('search').click();
59 function constructSearchUrl() {
60 var url = window.location.protocol + '//' + window.location.host + '/search/';
64 for (var idx in terms) {
65 var term = terms[idx];
66 var elem = Browser.getElementById(term);
68 console.log('Error: could not find form element for search term "' + term + '".');
72 var value = elem.value;
73 if (value.length > 0) {
81 url += term + '=' + encodeURIComponent('%' + value + '%');