diff --git a/app/views/collection/add.php b/app/views/collection/add.php index aa625fa5..c08d514a 100644 --- a/app/views/collection/add.php +++ b/app/views/collection/add.php @@ -9,7 +9,7 @@
- +
diff --git a/frontEndSrc/js/anime.js b/frontEndSrc/js/anime.js index f82a496a..9f531bc3 100644 --- a/frontEndSrc/js/anime.js +++ b/frontEndSrc/js/anime.js @@ -1,7 +1,7 @@ import _ from './anime-client.js' import { renderSearchResults } from './template-helpers.js' -const search = (query) => { +const search = (query, isCollection = false) => { // Show the loader _.show('.cssload-loader'); @@ -13,10 +13,11 @@ const search = (query) => { _.hide('.cssload-loader'); // Show the results - _.$('#series-list')[ 0 ].innerHTML = renderSearchResults('anime', searchResults); + _.$('#series-list')[ 0 ].innerHTML = renderSearchResults('anime', searchResults, isCollection); }); }; +// Anime list search if (_.hasElement('.anime #search')) { let prevRequest = null; @@ -34,6 +35,24 @@ if (_.hasElement('.anime #search')) { })); } +// Anime collection search +if (_.hasElement('#search-anime-collection')) { + let prevRequest = null; + + _.on('#search-anime-collection', 'input', _.throttle(250, (e) => { + const query = encodeURIComponent(e.target.value); + if (query === '') { + return; + } + + if (prevRequest !== null) { + prevRequest.abort(); + } + + prevRequest = search(query, true); + })); +} + // Action to increment episode count _.on('body.anime.list', 'click', '.plus-one', (e) => { let parentSel = _.closestParent(e.target, 'article'); diff --git a/frontEndSrc/js/template-helpers.js b/frontEndSrc/js/template-helpers.js index 55c33aa8..e492566f 100644 --- a/frontEndSrc/js/template-helpers.js +++ b/frontEndSrc/js/template-helpers.js @@ -13,10 +13,11 @@ _.on('main', 'change', '.big-check', (e) => { * * @param {'anime'|'manga'} type * @param {Object} item + * @param isCollection * @returns {String} */ -function renderEditLink (type, item) { - if (item.libraryEntry === null) { +function renderEditLink (type, item, isCollection = false) { + if (isCollection || item.libraryEntry === null) { return ''; } @@ -38,13 +39,18 @@ function renderEditLink (type, item) { * * @param {'anime'|'manga'} type * @param {Object} data + * @param {boolean} isCollection * @returns {String} */ -export function renderSearchResults (type, data) { +export function renderSearchResults (type, data, isCollection = false) { return data.map(item => { const titles = item.titles.join('
'); - const disabled = item.libraryEntry !== null ? 'disabled' : ''; - const editLink = renderEditLink(type, item); + let disabled = item.libraryEntry !== null ? 'disabled' : ''; + const editLink = renderEditLink(type, item, isCollection); + + if (isCollection) { + disabled = ''; + } return `