Readlebee/app/views/search/controller.js

43 lines
1.3 KiB
JavaScript
Raw Normal View History

import { ViewController } from '../controller';
export class SearchController extends ViewController {
constructor(state) {
// Super passes state, view name, and default state to ViewController,
// which stores state in this.appState and the view controller's state to this.state
super(state, 'search', {
2019-09-10 01:09:25 +02:00
lastSearch: undefined,
done: false,
results: [],
});
// If using controller methods in an input's onchange or onclick instance,
// either bind the class's 'this' instance to the method first...
// or use `onclick=${() => controller.submit()}` to maintain the 'this' of the class instead.
}
get results() {
2019-09-10 01:09:25 +02:00
return [];
}
get hasQuery() {
return this.appState.query.hasOwnProperty('for') && this.appState.query.for.trim() !== '';
}
2019-09-10 01:09:25 +02:00
search() {
if (this.hasQuery) {
this.state.done = false;
this.state.lastSearch = this.appState.query.for;
2019-09-10 01:09:25 +02:00
const searchTerm = this.appState.query.for.trim();
2019-09-10 01:09:25 +02:00
return fetch(`/api/search?for=${searchTerm}&lang=${this.appState.language}`)
.then(response => response.json())
.then(responseJSON => {
console.log(responseJSON);
this.state.results = responseJSON;
this.state.done = true;
2019-09-10 01:09:25 +02:00
});
}
return Promise.resolve();
}
}