4 var SearchController = (function () {
6 booksModel = undefined;
8 const textFields = ['aut', 'lan', 'ser', 'tit'];
9 const terms = textFields.concat(['lst', 'srt']);
14 my.init = function(linkedBooksModel) {
15 booksModel = linkedBooksModel;
17 for (var idx in textFields) {
18 addEnterListener(textFields[idx]);
22 my.onSearch = function() {
23 var url = constructSearchUrl();
25 fetch(url, {method:'GET', cache:'default'})
26 .then(function(response) {return response.json();})
27 .then(function(jsonValue) {
28 // console.log('JSON response: ', jsonValue);
29 booksModel.ids = jsonValue;
30 booksModel.count = booksModel.ids.length;
31 booksModel.first = (-1);
33 const max_pos = Math.max(0, booksModel.count - booksModel.pageSize);
35 var elem = Browser.getElementById('slider');
37 elem = Browser.getElementById('bottom_slider');
40 PagingController.adjustPos(0);
42 .catch(function(err) {
43 var msg = 'Error fetching JSON from URL: ' + url + ': ' + err + ':' + err.stack;
52 // KeyUp listener. If the key is [Enter], then trigger a click on the [Search] button.
53 function addEnterListener(ctrlId) {
54 Browser.getElementById(ctrlId).addEventListener('keyup', function(event) {
55 event.preventDefault();
56 if (event.keyCode === 13) {
57 Browser.getElementById('search').click();
62 function constructSearchUrl() {
63 var url = window.location.protocol + '//' + window.location.host + '/search/';
67 for (var idx in terms) {
68 var term = terms[idx];
69 var elem = Browser.getElementById(term);
71 console.log('Error: could not find form element for search term "' + term + '".');
75 var value = elem.value;
76 if (value.length > 0) {
84 if (textFields.includes(term)) {
85 url += term + '=' + encodeURIComponent('%' + value + '%');
88 url += term + '=' + encodeURIComponent('' + value);