From e0da31cb0b7d878d1db8d7e0d3992ef4f54c2a08 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Tue, 2 Jan 2018 18:21:58 -0100 Subject: use model to manage search request Signed-off-by: Maxence Lange --- js/fullnextsearch.js | 6 +++++- js/nextsearch.v1.api.js | 5 +++-- js/nextsearch.v1.searchbar.js | 9 ++++++++- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/fullnextsearch.js b/js/fullnextsearch.js index 9727694..42f7e89 100644 --- a/js/fullnextsearch.js +++ b/js/fullnextsearch.js @@ -80,8 +80,12 @@ Navigate.prototype = { if (!force && search.length < 3) { return false; } + var request = { + search: search, + page: 1 + }; - nextSearch.search('_all', search, this.searchResult); + nextSearch.search('_all', request, this.searchResult); return true; }, diff --git a/js/nextsearch.v1.api.js b/js/nextsearch.v1.api.js index 43dbd1a..bb8ccba 100644 --- a/js/nextsearch.v1.api.js +++ b/js/nextsearch.v1.api.js @@ -35,13 +35,14 @@ var api = { - search: function (type, search, callback) { + search: function (type, request, callback) { var res = {status: -1}; + $.ajax({ method: 'GET', url: OC.generateUrl('/apps/fullnextsearch/v1/search/' + type), data: { - search: search + request: JSON.stringify(request) } }).done(function (res) { result.displayResult(res); diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 3a263a9..75bb88b 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -115,6 +115,7 @@ var searchbar = { }, + // TODO: do we really need this initSearch, or should we use the one from fullnextsearch.js !? initSearch: function (force) { var search = searchbox.search_input.val(); @@ -122,7 +123,13 @@ var searchbar = { return false; } - nextSearch.search(next_settings.searchProviderId, search, searchbar.searchResult); + var request = { + search: search, + page: 1, + count: 20 + }; + + nextSearch.search(next_settings.searchProviderId, request, searchbar.searchResult); return true; } -- cgit v1.2.3 From 384317bbefeed4bd501f0316cf96bd228c00bc63 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Tue, 2 Jan 2018 21:20:58 -0100 Subject: pagination Signed-off-by: Maxence Lange --- js/fullnextsearch.js | 2 +- js/nextsearch.v1.navigation.js | 2 +- js/nextsearch.v1.result.js | 5 +++-- js/nextsearch.v1.searchbar.js | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) (limited to 'js') diff --git a/js/fullnextsearch.js b/js/fullnextsearch.js index 42f7e89..10803e3 100644 --- a/js/fullnextsearch.js +++ b/js/fullnextsearch.js @@ -82,7 +82,7 @@ Navigate.prototype = { } var request = { search: search, - page: 1 + page: curr.page }; nextSearch.search('_all', request, this.searchResult); diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 6dd0944..0cd562d 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -33,7 +33,7 @@ var curr = { providerResult: [], - + page: 0, setProviderResult: function (id, value) { curr.providerResult[id] = value; diff --git a/js/nextsearch.v1.result.js b/js/nextsearch.v1.result.js index b8f5f06..7cc343f 100644 --- a/js/nextsearch.v1.result.js +++ b/js/nextsearch.v1.result.js @@ -29,6 +29,9 @@ /** global: curr */ /** global: nav */ +/** @namespace result.provider */ +/** @namespace result.documents */ + var result = { displayResult: function (res) { @@ -58,8 +61,6 @@ var result = { }, - /** @namespace result.provider */ - /** @namespace result.documents */ displayProviderResult: function (result) { next_settings.divNoResult.fadeTo(next_settings.delay_result, 0); diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 75bb88b..b6db735 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -125,8 +125,8 @@ var searchbar = { var request = { search: search, - page: 1, - count: 20 + page: curr.page, + size: 20 }; nextSearch.search(next_settings.searchProviderId, request, searchbar.searchResult); -- cgit v1.2.3 From 3d6e81c342f49bfa455961613bd410b0dbc291f5 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 3 Jan 2018 14:13:30 -0100 Subject: avoid duplicate request Signed-off-by: Maxence Lange --- js/nextsearch.v1.api.js | 1 + js/nextsearch.v1.navigation.js | 1 + js/nextsearch.v1.result.js | 2 -- js/nextsearch.v1.searchbar.js | 5 +++++ 4 files changed, 7 insertions(+), 2 deletions(-) (limited to 'js') diff --git a/js/nextsearch.v1.api.js b/js/nextsearch.v1.api.js index bb8ccba..c4793b0 100644 --- a/js/nextsearch.v1.api.js +++ b/js/nextsearch.v1.api.js @@ -46,6 +46,7 @@ var api = { } }).done(function (res) { result.displayResult(res); + nav.onResultDisplayed(res); api.onCallback(callback, res); }).fail(function () { nav.failedToAjax(); diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 0cd562d..09bd0de 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -34,6 +34,7 @@ var curr = { providerResult: [], page: 0, + lastRequest: '', setProviderResult: function (id, value) { curr.providerResult[id] = value; diff --git a/js/nextsearch.v1.result.js b/js/nextsearch.v1.result.js index 7cc343f..8223488 100644 --- a/js/nextsearch.v1.result.js +++ b/js/nextsearch.v1.result.js @@ -39,8 +39,6 @@ var result = { return; } - nav.onResultDisplayed(); - var searchResult = res.result; if (searchResult.length === 0) { result.displayNoResult(); diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index b6db735..7b59608 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -123,6 +123,11 @@ var searchbar = { return false; } + if (curr.lastRequest === search) { + return true; + } + curr.lastRequest = search; + var request = { search: search, page: curr.page, -- cgit v1.2.3 From 0011b18483cebbf2582d6e77a1ac51c79810f523 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 3 Jan 2018 20:52:32 -0100 Subject: navigation Signed-off-by: Maxence Lange --- js/nextsearch.v1.navigation.js | 45 ++++++++++++++++++++++++++++++++++-------- js/nextsearch.v1.result.js | 3 ++- js/nextsearch.v1.searchbar.js | 10 ++++++++++ 3 files changed, 49 insertions(+), 9 deletions(-) (limited to 'js') diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 09bd0de..6b56a36 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -33,7 +33,7 @@ var curr = { providerResult: [], - page: 0, + page: 1, lastRequest: '', setProviderResult: function (id, value) { @@ -63,12 +63,31 @@ var nav = { }, - managerDivProviderResult: function (divProvider, newResult, oldResult) { + manageDivProviderNavigation: function (divProviderNavigation, meta) { //replaceWith(); - nav.divProviderResultAddItems(divProvider, newResult, oldResult); + divProviderNavigation.attr('data-time', meta.time); + divProviderNavigation.attr('data-page', meta.request.page); + divProviderNavigation.attr('data-max-page', meta.maxPage); + divProviderNavigation.attr('data-size', meta.size); + divProviderNavigation.attr('data-total', meta.total); + + console.log('>> ' + JSON.stringify(meta)); + var providerName = divProviderNavigation.attr('data-provider-name'); + + var left = "Searching " + providerName + " for '" + meta.request.search + "' returns " + + meta.total + " results"; + divProviderNavigation.find('.provider_navigation_left').text(left); + + divProviderNavigation.find('.provider_navigation_curr').text(meta.request.page + ' / ' + meta.maxPage); + }, + + + manageDivProviderResult: function (divProviderResult, newResult, oldResult) { + //replaceWith(); + nav.divProviderResultAddItems(divProviderResult, newResult, oldResult); if (oldResult) { - nav.divProviderResultRemoveItems(divProvider, newResult, oldResult); - nav.divProviderResultMoveItems(divProvider, newResult, oldResult); + nav.divProviderResultRemoveItems(divProviderResult, newResult, oldResult); + nav.divProviderResultMoveItems(divProviderResult, newResult, oldResult); } }, @@ -282,14 +301,24 @@ var nav = { generateDivProvider: function (providerId, providerName) { - var divProviderName = $('
', {class: 'provider_name'}); - divProviderName.text(providerName); + + + var divProviderNavigation = $('
', {class: 'provider_navigation'}); + divProviderNavigation.attr('data-provider-name', providerName); + divProviderNavigation.append($('
', {class: 'provider_navigation_left'})); + + var divProviderPagination = $('
', {class: 'provider_navigation_right'}); + divProviderPagination.append($('
', {class: 'icon-page-prev provider_navigation_prev'})); + divProviderPagination.append($('
', {class: 'provider_navigation_curr'})); + divProviderPagination.append($('
', {class: 'icon-page-next provider_navigation_next'})); + divProviderNavigation.append(divProviderPagination); var divProviderResult = $('
', {class: 'provider_result'}); + var divProvider = $('
', {class: 'provider_header'}); divProvider.hide(); divProvider.attr('data-id', providerId); - divProvider.append(divProviderName); + divProvider.append(divProviderNavigation); divProvider.append(divProviderResult); return divProvider; diff --git a/js/nextsearch.v1.result.js b/js/nextsearch.v1.result.js index 8223488..b4c0c6e 100644 --- a/js/nextsearch.v1.result.js +++ b/js/nextsearch.v1.result.js @@ -66,7 +66,8 @@ var result = { var current = curr.getProviderResult(result.provider.id); var divProvider = nav.getDivProvider(result.provider.id, result.provider.name); - nav.managerDivProviderResult(divProvider.children('.provider_result'), result.documents, + nav.manageDivProviderNavigation(divProvider.children('.provider_navigation'), result.meta); + nav.manageDivProviderResult(divProvider.children('.provider_result'), result.documents, current.documents); divProvider.slideDown(next_settings.delay_provider, function () { diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 7b59608..1001b66 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -36,6 +36,7 @@ var searchbox = { searchTimeout: null, + search_icon_more: null, search_icon_close: null, search_icon: null, search_input: null, @@ -67,10 +68,18 @@ var searchbar = { }); searchbox.search_form.append(searchbox.search_input); + searchbox.search_icon_more = $('
', {class: 'icon-more-white icon-more-fullnextsearch'}); + searchbox.search_icon_more.fadeTo(0, 0); + searchbox.search_icon_more.on('click', function () { + console.log('MORE !'); + }); + searchbox.search_form.append(searchbox.search_icon_more); + searchbox.search_icon_close = $('
', {class: 'icon-close-white icon-close-fullnextsearch'}); searchbox.search_icon_close.fadeTo(0, 0); searchbox.search_icon_close.on('click', function () { next_settings.lockSearchbox = false; + searchbox.search_icon_more.stop().fadeTo(100, 0); searchbox.search_icon_close.stop().fadeTo(100, 0); searchbox.search_input.val(''); nav.onSearchReset(); @@ -91,6 +100,7 @@ var searchbar = { searchbox.search_input.on('focus', function () { next_settings.lockSearchbox = true; + searchbox.search_icon_more.stop().fadeTo(200, 1); searchbox.search_icon_close.stop().fadeTo(200, 1); }); -- cgit v1.2.3 From 985f19ff32ddab1cfb3871c46ba6d0da0e6a53d1 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 4 Jan 2018 09:13:58 -0100 Subject: providers is now set in the request, not in the url Signed-off-by: Maxence Lange --- js/fullnextsearch.js | 3 ++- js/nextsearch.v1.api.js | 4 ++-- js/nextsearch.v1.searchbar.js | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/fullnextsearch.js b/js/fullnextsearch.js index 10803e3..8b2966c 100644 --- a/js/fullnextsearch.js +++ b/js/fullnextsearch.js @@ -81,11 +81,12 @@ Navigate.prototype = { return false; } var request = { + providers: 'all', search: search, page: curr.page }; - nextSearch.search('_all', request, this.searchResult); + nextSearch.search(request, this.searchResult); return true; }, diff --git a/js/nextsearch.v1.api.js b/js/nextsearch.v1.api.js index c4793b0..fa91075 100644 --- a/js/nextsearch.v1.api.js +++ b/js/nextsearch.v1.api.js @@ -35,12 +35,12 @@ var api = { - search: function (type, request, callback) { + search: function (request, callback) { var res = {status: -1}; $.ajax({ method: 'GET', - url: OC.generateUrl('/apps/fullnextsearch/v1/search/' + type), + url: OC.generateUrl('/apps/fullnextsearch/v1/search'), data: { request: JSON.stringify(request) } diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 1001b66..f88b315 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -139,12 +139,13 @@ var searchbar = { curr.lastRequest = search; var request = { + providers: next_settings.searchProviderId, search: search, page: curr.page, size: 20 }; - nextSearch.search(next_settings.searchProviderId, request, searchbar.searchResult); + nextSearch.search(request, searchbar.searchResult); return true; } -- cgit v1.2.3 From daf404f52d2a1790ee1ab443b89470892cae8212 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 4 Jan 2018 11:53:48 -0100 Subject: pagination Signed-off-by: Maxence Lange --- js/nextsearch.v1.navigation.js | 44 +++++++++++++++++++++++++++++++++++------- js/nextsearch.v1.searchbar.js | 6 ++---- 2 files changed, 39 insertions(+), 11 deletions(-) (limited to 'js') diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 6b56a36..2588288 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -31,6 +31,7 @@ /** global: next_settings */ + var curr = { providerResult: [], page: 1, @@ -64,21 +65,29 @@ var nav = { manageDivProviderNavigation: function (divProviderNavigation, meta) { - //replaceWith(); + + var maxPage = Math.ceil(meta.total / meta.request.size); + divProviderNavigation.attr('data-time', meta.time); divProviderNavigation.attr('data-page', meta.request.page); - divProviderNavigation.attr('data-max-page', meta.maxPage); - divProviderNavigation.attr('data-size', meta.size); + divProviderNavigation.attr('data-search', meta.request.search); + divProviderNavigation.attr('data-max-page', maxPage); + divProviderNavigation.attr('data-size', meta.request.size); divProviderNavigation.attr('data-total', meta.total); - console.log('>> ' + JSON.stringify(meta)); var providerName = divProviderNavigation.attr('data-provider-name'); var left = "Searching " + providerName + " for '" + meta.request.search + "' returns " + meta.total + " results"; divProviderNavigation.find('.provider_navigation_left').text(left); - divProviderNavigation.find('.provider_navigation_curr').text(meta.request.page + ' / ' + meta.maxPage); + divProviderNavigation.find('.provider_navigation_curr').text(meta.request.page + ' / ' + + maxPage); + + divProviderNavigation.find('.provider_navigation_prev').stop().fadeTo(200, + (meta.request.page > 1) ? 1 : 0); + divProviderNavigation.find('.provider_navigation_next').stop().fadeTo(200, + (meta.request.page < maxPage) ? 1 : 0); }, @@ -308,9 +317,30 @@ var nav = { divProviderNavigation.append($('
', {class: 'provider_navigation_left'})); var divProviderPagination = $('
', {class: 'provider_navigation_right'}); - divProviderPagination.append($('
', {class: 'icon-page-prev provider_navigation_prev'})); + var divProviderPaginationPrev = $('
', {class: 'icon-page-prev provider_navigation_prev'}); + divProviderPaginationPrev.on('click', function () { + nextSearch.search({ + providers: providerId, + search: divProviderNavigation.attr('data-search'), + page: Number(divProviderNavigation.attr('data-page')) - 1, + size: divProviderNavigation.attr('data-size') + }); + }); + divProviderPagination.append(divProviderPaginationPrev); + divProviderPagination.append($('
', {class: 'provider_navigation_curr'})); - divProviderPagination.append($('
', {class: 'icon-page-next provider_navigation_next'})); + + var divProviderPaginationNext = $('
', {class: 'icon-page-next provider_navigation_next'}); + divProviderPaginationNext.on('click', function () { + nextSearch.search({ + providers: providerId, + search: divProviderNavigation.attr('data-search'), + page: Number(divProviderNavigation.attr('data-page')) + 1, + size: divProviderNavigation.attr('data-size') + }); + }); + divProviderPagination.append(divProviderPaginationNext); + divProviderNavigation.append(divProviderPagination); var divProviderResult = $('
', {class: 'provider_result'}); diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index f88b315..9bbe38e 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -138,14 +138,12 @@ var searchbar = { } curr.lastRequest = search; - var request = { + nextSearch.search({ providers: next_settings.searchProviderId, search: search, page: curr.page, size: 20 - }; - - nextSearch.search(request, searchbar.searchResult); + }); return true; } -- cgit v1.2.3 From 3302c3c8669fbbcb73596b4fd7d852a8aa2cfbf6 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 4 Jan 2018 13:51:20 -0100 Subject: options panel Signed-off-by: Maxence Lange --- js/nextsearch.v1.navigation.js | 1 + js/nextsearch.v1.searchbar.js | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 2588288..6eb11b1 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -36,6 +36,7 @@ var curr = { providerResult: [], page: 1, lastRequest: '', + moreDisplayed: false, setProviderResult: function (id, value) { curr.providerResult[id] = value; diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 9bbe38e..4d9ff89 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -36,6 +36,7 @@ var searchbox = { searchTimeout: null, + search_more: null, search_icon_more: null, search_icon_close: null, search_icon: null, @@ -68,10 +69,19 @@ var searchbar = { }); searchbox.search_form.append(searchbox.search_input); + searchbox.search_more = $('
', {class: 'search_more'}); + searchbox.search_more.fadeTo(0, 0); + searchbox.search_icon_more = $('
', {class: 'icon-more-white icon-more-fullnextsearch'}); searchbox.search_icon_more.fadeTo(0, 0); searchbox.search_icon_more.on('click', function () { - console.log('MORE !'); + if (curr.moreDisplayed) { + searchbox.search_more.stop().fadeTo(100, 0); + curr.moreDisplayed = false; + } else { + searchbox.search_more.stop().fadeTo(100, 1); + curr.moreDisplayed = true; + } }); searchbox.search_form.append(searchbox.search_icon_more); @@ -81,13 +91,14 @@ var searchbar = { next_settings.lockSearchbox = false; searchbox.search_icon_more.stop().fadeTo(100, 0); searchbox.search_icon_close.stop().fadeTo(100, 0); + searchbox.search_more.stop().fadeTo(100, 0); + curr.moreDisplayed = false; searchbox.search_input.val(''); nav.onSearchReset(); }); searchbox.search_form.append(searchbox.search_icon_close); - searchbox.search_div.append(searchbox.search_form); - searchbox.search_div.hover(function () { + searchbox.search_form.hover(function () { searchbox.search_icon.stop().fadeTo(100, 0); searchbox.search_form.stop().fadeTo(100, 0.8); }, function () { @@ -97,6 +108,8 @@ var searchbar = { searchbox.search_form.stop().fadeTo(500, 0); searchbox.search_icon.stop().fadeTo(800, 0.7); }); + searchbox.search_div.append(searchbox.search_form); + searchbox.search_div.append(searchbox.search_more); searchbox.search_input.on('focus', function () { next_settings.lockSearchbox = true; @@ -106,7 +119,6 @@ var searchbar = { searchbox.search_input.on('input', function () { - if ($(this).val() === '') { nav.onSearchReset(); } -- cgit v1.2.3 From 90261a571ae9d3bcc8b82b2959374fb9c5d06222 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 4 Jan 2018 16:20:00 -0100 Subject: include options panel to the UI Signed-off-by: Maxence Lange --- js/nextsearch.v1.api.js | 16 ++++++++++++++++ js/nextsearch.v1.searchbar.js | 9 ++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'js') diff --git a/js/nextsearch.v1.api.js b/js/nextsearch.v1.api.js index fa91075..ece1a83 100644 --- a/js/nextsearch.v1.api.js +++ b/js/nextsearch.v1.api.js @@ -55,6 +55,22 @@ var api = { }, + options: function (providerId, callback) { + var res = {status: -1}; + + $.ajax({ + method: 'GET', + url: OC.generateUrl('/apps/fullnextsearch/options/' + providerId) + }).done(function (res) { + searchbar.onOptionsLoaded(res); + api.onCallback(callback, res); + }).fail(function () { + nav.failedToAjax(); + api.onCallback(callback, res); + }); + }, + + onCallback: function (callback, result) { if (callback && (typeof callback === 'function')) { if (typeof result === 'object') { diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 4d9ff89..27ef2c0 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -59,7 +59,6 @@ var searchbar = { searchbox.search_icon.fadeTo(0, 0.7); searchbox.search_div.append(searchbox.search_icon); - searchbox.search_form = $('
'); searchbox.search_form.fadeTo(0, 0); @@ -134,6 +133,13 @@ var searchbar = { }, 2000); } }); + + nextSearch.options(next_settings.searchProviderId); + }, + + + onOptionsLoaded: function (result) { + searchbox.search_more.html(result[next_settings.searchProviderId]); }, @@ -148,6 +154,7 @@ var searchbar = { if (curr.lastRequest === search) { return true; } + curr.lastRequest = search; nextSearch.search({ -- cgit v1.2.3 From 361b39cf30225f0fd46b349d7537d88b2ef715f0 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Fri, 5 Jan 2018 08:58:17 -0100 Subject: automanaging options Signed-off-by: Maxence Lange --- js/nextsearch.v1.searchbar.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'js') diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index 27ef2c0..c00d886 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -140,6 +140,34 @@ var searchbar = { onOptionsLoaded: function (result) { searchbox.search_more.html(result[next_settings.searchProviderId]); + searchbox.search_more.find('INPUT').each(function () { + $(this).on('change', function () { + var search = searchbox.search_input.val(); + nextSearch.search({ + providers: next_settings.searchProviderId, + search: search, + page: curr.page, + more: searchbar.getSearchOptions(), + size: 20 + }); + }); + }) + }, + + + getSearchOptions: function () { + var options = {}; + searchbox.search_more.find('INPUT').each(function () { + var value = $(this).val(); + + if ($(this).attr('type') === 'checkbox' && !$(this).is(':checked')) { + value = ''; + } + + options[$(this).attr('id')] = value; + }); + + return options; }, @@ -161,6 +189,7 @@ var searchbar = { providers: next_settings.searchProviderId, search: search, page: curr.page, + more: searchbar.getSearchOptions(), size: 20 }); -- cgit v1.2.3 From 16044135bede6eca398390f86050a1a91db40812 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Fri, 5 Jan 2018 08:58:35 -0100 Subject: cleaning Signed-off-by: Maxence Lange --- js/nextsearch.v1.settings.js | 1 + 1 file changed, 1 insertion(+) (limited to 'js') diff --git a/js/nextsearch.v1.settings.js b/js/nextsearch.v1.settings.js index b1a8fb8..71e715f 100644 --- a/js/nextsearch.v1.settings.js +++ b/js/nextsearch.v1.settings.js @@ -39,6 +39,7 @@ var next_settings = { entryTemplateDefault: null, divNoResult: null, + generateDefaultTemplate: function () { var divLeft = $('
', {class: 'result_entry_left'}); -- cgit v1.2.3 From d46b76f0ec8f241d174c90f94c35ace97f743fdc Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Fri, 5 Jan 2018 12:40:25 -0100 Subject: improve search request with tags+options Signed-off-by: Maxence Lange --- js/nextsearch.v1.searchbar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'js') diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index c00d886..ab86eeb 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -147,7 +147,7 @@ var searchbar = { providers: next_settings.searchProviderId, search: search, page: curr.page, - more: searchbar.getSearchOptions(), + options: searchbar.getSearchOptions(), size: 20 }); }); @@ -189,7 +189,7 @@ var searchbar = { providers: next_settings.searchProviderId, search: search, page: curr.page, - more: searchbar.getSearchOptions(), + options: searchbar.getSearchOptions(), size: 20 }); -- cgit v1.2.3 From 24fa7bc774eac26e6a3a9368b133540293e60783 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Fri, 5 Jan 2018 12:40:36 -0100 Subject: add ms time in search result Signed-off-by: Maxence Lange --- js/nextsearch.v1.navigation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js') diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 6eb11b1..71e2d45 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -79,7 +79,7 @@ var nav = { var providerName = divProviderNavigation.attr('data-provider-name'); var left = "Searching " + providerName + " for '" + meta.request.search + "' returns " + - meta.total + " results"; + meta.total + " results in " + meta.time + "ms"; divProviderNavigation.find('.provider_navigation_left').text(left); divProviderNavigation.find('.provider_navigation_curr').text(meta.request.page + ' / ' + -- cgit v1.2.3 From e2a32c728a64ca9d0bbbd2820223bc4f7525d5ab Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Sat, 6 Jan 2018 13:04:06 -0100 Subject: rename Signed-off-by: Maxence Lange --- js/admin.elements.js | 2 +- js/admin.js | 2 +- js/admin.settings.js | 6 +++--- js/fullnextsearch.js | 2 +- js/nextsearch.v1.api.js | 6 +++--- js/nextsearch.v1.js | 2 +- js/nextsearch.v1.navigation.js | 4 ++-- js/nextsearch.v1.result.js | 2 +- js/nextsearch.v1.searchbar.js | 12 ++++++------ js/nextsearch.v1.settings.js | 2 +- 10 files changed, 20 insertions(+), 20 deletions(-) (limited to 'js') diff --git a/js/admin.elements.js b/js/admin.elements.js index 777e255..3c20264 100644 --- a/js/admin.elements.js +++ b/js/admin.elements.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. diff --git a/js/admin.js b/js/admin.js index 611d3d7..0be95e1 100644 --- a/js/admin.js +++ b/js/admin.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. diff --git a/js/admin.settings.js b/js/admin.settings.js index 11e83d0..2de8f17 100644 --- a/js/admin.settings.js +++ b/js/admin.settings.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. @@ -42,7 +42,7 @@ var fns_admin_settings = { $.ajax({ method: 'GET', - url: OC.generateUrl('/apps/fullnextsearch/admin/settings') + url: OC.generateUrl('/apps/fulltextsearch/admin/settings') }).done(function (res) { fns_admin_settings.updateSettingPage(res); }); @@ -144,7 +144,7 @@ var fns_admin_settings = { $.ajax({ method: 'POST', - url: OC.generateUrl('/apps/fullnextsearch/admin/settings'), + url: OC.generateUrl('/apps/fulltextsearch/admin/settings'), data: { data: data } diff --git a/js/fullnextsearch.js b/js/fullnextsearch.js index 8b2966c..d161778 100644 --- a/js/fullnextsearch.js +++ b/js/fullnextsearch.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. diff --git a/js/nextsearch.v1.api.js b/js/nextsearch.v1.api.js index ece1a83..0e7533f 100644 --- a/js/nextsearch.v1.api.js +++ b/js/nextsearch.v1.api.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. @@ -40,7 +40,7 @@ var api = { $.ajax({ method: 'GET', - url: OC.generateUrl('/apps/fullnextsearch/v1/search'), + url: OC.generateUrl('/apps/fulltextsearch/v1/search'), data: { request: JSON.stringify(request) } @@ -60,7 +60,7 @@ var api = { $.ajax({ method: 'GET', - url: OC.generateUrl('/apps/fullnextsearch/options/' + providerId) + url: OC.generateUrl('/apps/fulltextsearch/options/' + providerId) }).done(function (res) { searchbar.onOptionsLoaded(res); api.onCallback(callback, res); diff --git a/js/nextsearch.v1.js b/js/nextsearch.v1.js index 5c742c9..1c9b30b 100644 --- a/js/nextsearch.v1.js +++ b/js/nextsearch.v1.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. diff --git a/js/nextsearch.v1.navigation.js b/js/nextsearch.v1.navigation.js index 71e2d45..1e5c8ec 100644 --- a/js/nextsearch.v1.navigation.js +++ b/js/nextsearch.v1.navigation.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. @@ -282,7 +282,7 @@ var nav = { } if (!divTemplate.length) { - console.log('FullNextSearch Error: template_entry is not defined'); + console.log('FullTextSearch Error: template_entry is not defined'); return; } diff --git a/js/nextsearch.v1.result.js b/js/nextsearch.v1.result.js index b4c0c6e..31443a8 100644 --- a/js/nextsearch.v1.result.js +++ b/js/nextsearch.v1.result.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. diff --git a/js/nextsearch.v1.searchbar.js b/js/nextsearch.v1.searchbar.js index ab86eeb..ba79fc2 100644 --- a/js/nextsearch.v1.searchbar.js +++ b/js/nextsearch.v1.searchbar.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. @@ -53,9 +53,9 @@ var searchbar = { searchbox.search_div = $('
', {class: 'next_search_div'}); divHeaderRight.prepend(searchbox.search_div); - searchbox.search_icon = $('
', {class: 'icon-fullnextsearch'}); + searchbox.search_icon = $('
', {class: 'icon-fulltextsearch'}); searchbox.search_icon.css('background-image', - "url('/apps/fullnextsearch/img/fullnextsearch.svg')"); + "url('/apps/fulltextsearch/img/fulltextsearch.svg')"); searchbox.search_icon.fadeTo(0, 0.7); searchbox.search_div.append(searchbox.search_icon); @@ -71,7 +71,7 @@ var searchbar = { searchbox.search_more = $('
', {class: 'search_more'}); searchbox.search_more.fadeTo(0, 0); - searchbox.search_icon_more = $('
', {class: 'icon-more-white icon-more-fullnextsearch'}); + searchbox.search_icon_more = $('
', {class: 'icon-more-white icon-more-fulltextsearch'}); searchbox.search_icon_more.fadeTo(0, 0); searchbox.search_icon_more.on('click', function () { if (curr.moreDisplayed) { @@ -84,7 +84,7 @@ var searchbar = { }); searchbox.search_form.append(searchbox.search_icon_more); - searchbox.search_icon_close = $('
', {class: 'icon-close-white icon-close-fullnextsearch'}); + searchbox.search_icon_close = $('
', {class: 'icon-close-white icon-close-fulltextsearch'}); searchbox.search_icon_close.fadeTo(0, 0); searchbox.search_icon_close.on('click', function () { next_settings.lockSearchbox = false; @@ -171,7 +171,7 @@ var searchbar = { }, - // TODO: do we really need this initSearch, or should we use the one from fullnextsearch.js !? + // TODO: do we really need this initSearch, or should we use the one from fulltextsearch.js !? initSearch: function (force) { var search = searchbox.search_input.val(); diff --git a/js/nextsearch.v1.settings.js b/js/nextsearch.v1.settings.js index 71e715f..53bd808 100644 --- a/js/nextsearch.v1.settings.js +++ b/js/nextsearch.v1.settings.js @@ -1,5 +1,5 @@ /* - * FullNextSearch - Full Text Search your Nextcloud. + * FullTextSearch - Full text search your Nextcloud. * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. -- cgit v1.2.3 From a96d771619886d792448b1ec1436661a2293eb7f Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Sat, 6 Jan 2018 15:58:17 -0100 Subject: rename Signed-off-by: Maxence Lange --- js/admin.elements.js | 35 ++-- js/admin.js | 25 ++- js/admin.settings.js | 38 ++-- js/fullnextsearch.js | 137 -------------- js/fulltextsearch.v1.api.js | 83 +++++++++ js/fulltextsearch.v1.js | 53 ++++++ js/fulltextsearch.v1.navigation.js | 358 ++++++++++++++++++++++++++++++++++++ js/fulltextsearch.v1.result.js | 107 +++++++++++ js/fulltextsearch.v1.searchbar.js | 201 +++++++++++++++++++++ js/fulltextsearch.v1.settings.js | 89 +++++++++ js/navigate.js | 136 ++++++++++++++ js/nextsearch.v1.api.js | 84 --------- js/nextsearch.v1.js | 54 ------ js/nextsearch.v1.navigation.js | 359 ------------------------------------- js/nextsearch.v1.result.js | 108 ----------- js/nextsearch.v1.searchbar.js | 202 --------------------- js/nextsearch.v1.settings.js | 90 ---------- js/personal.js | 0 18 files changed, 1075 insertions(+), 1084 deletions(-) delete mode 100644 js/fullnextsearch.js create mode 100644 js/fulltextsearch.v1.api.js create mode 100644 js/fulltextsearch.v1.js create mode 100644 js/fulltextsearch.v1.navigation.js create mode 100644 js/fulltextsearch.v1.result.js create mode 100644 js/fulltextsearch.v1.searchbar.js create mode 100644 js/fulltextsearch.v1.settings.js create mode 100644 js/navigate.js delete mode 100644 js/nextsearch.v1.api.js delete mode 100644 js/nextsearch.v1.js delete mode 100644 js/nextsearch.v1.navigation.js delete mode 100644 js/nextsearch.v1.result.js delete mode 100644 js/nextsearch.v1.searchbar.js delete mode 100644 js/nextsearch.v1.settings.js delete mode 100644 js/personal.js (limited to 'js') diff --git a/js/admin.elements.js b/js/admin.elements.js index 3c20264..884930f 100644 --- a/js/admin.elements.js +++ b/js/admin.elements.js @@ -1,11 +1,11 @@ /* - * FullTextSearch - Full text search your Nextcloud. + * FullTextSearch - Full text search framework for Nextcloud * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. * * @author Maxence Lange - * @copyright 2017 + * @copyright 2018 * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify @@ -21,33 +21,32 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * */ /** global: OCA */ -/** global: fns_admin_settings */ +/** global: fts_admin_settings */ -var fns_admin_elements = { - fns_div: null, - fns_platforms: null, - fns_chunkSize: null, - fns_providers: null, +var fts_admin_elements = { + fts_div: null, + fts_platforms: null, + fts_chunkSize: null, + fts_providers: null, init: function () { - fns_admin_elements.fns_div = $('#fns'); - fns_admin_elements.fns_platforms = $('#fns_platforms'); - fns_admin_elements.fns_chunkSize = $('#fns_chunk_size'); + fts_admin_elements.fts_div = $('#fns'); + fts_admin_elements.fts_platforms = $('#fts_platforms'); + fts_admin_elements.fts_chunkSize = $('#fts_chunk_size'); - fns_admin_elements.fns_platforms.on('change', function () { - fns_admin_settings.tagSettingsAsNotSaved($(this)); - fns_admin_settings.saveSettings(); + fts_admin_elements.fts_platforms.on('change', function () { + fts_admin_settings.tagSettingsAsNotSaved($(this)); + fts_admin_settings.saveSettings(); }); - fns_admin_elements.fns_chunkSize.on('input', function () { - fns_admin_settings.tagSettingsAsNotSaved($(this)); + fts_admin_elements.fts_chunkSize.on('input', function () { + fts_admin_settings.tagSettingsAsNotSaved($(this)); }).blur(function () { - fns_admin_settings.saveSettings(); + fts_admin_settings.saveSettings(); }); } }; diff --git a/js/admin.js b/js/admin.js index 0be95e1..4e86549 100644 --- a/js/admin.js +++ b/js/admin.js @@ -1,11 +1,11 @@ /* - * FullTextSearch - Full text search your Nextcloud. + * FullTextSearch - Full text search framework for Nextcloud * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. * * @author Maxence Lange - * @copyright 2017 + * @copyright 2018 * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify @@ -21,12 +21,11 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * */ /** global: OCA */ -/** global: fns_admin_settings */ -/** global: fns_admin_elements */ +/** global: fts_admin_settings */ +/** global: fts_admin_elements */ @@ -34,17 +33,17 @@ $(document).ready(function () { /** - * @constructs NextSearchAdmin + * @constructs FullTextSearchAdmin */ - var NextSearchAdmin = function () { - $.extend(NextSearchAdmin.prototype, fns_admin_elements); - $.extend(NextSearchAdmin.prototype, fns_admin_settings); + var FullTextSearchAdmin = function () { + $.extend(FullTextSearchAdmin.prototype, fts_admin_elements); + $.extend(FullTextSearchAdmin.prototype, fts_admin_settings); - fns_admin_elements.init(); - fns_admin_settings.refreshSettingPage(); + fts_admin_elements.init(); + fts_admin_settings.refreshSettingPage(); }; - OCA.NextSearchAdmin = NextSearchAdmin; - OCA.NextSearchAdmin.settings = new NextSearchAdmin(); + OCA.FullTextSearchAdmin = FullTextSearchAdmin; + OCA.FullTextSearchAdmin.settings = new FullTextSearchAdmin(); }); diff --git a/js/admin.settings.js b/js/admin.settings.js index 2de8f17..5870572 100644 --- a/js/admin.settings.js +++ b/js/admin.settings.js @@ -1,11 +1,11 @@ /* - * FullTextSearch - Full text search your Nextcloud. + * FullTextSearch - Full text search framework for Nextcloud * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. * * @author Maxence Lange - * @copyright 2017 + * @copyright 2018 * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify @@ -24,7 +24,7 @@ */ /** global: OC */ -/** global: fns_admin_elements */ +/** global: fts_admin_elements */ /** @namespace result.index_chunk */ /** @namespace result.platforms_all */ @@ -34,7 +34,7 @@ -var fns_admin_settings = { +var fts_admin_settings = { config: null, @@ -44,7 +44,7 @@ var fns_admin_settings = { method: 'GET', url: OC.generateUrl('/apps/fulltextsearch/admin/settings') }).done(function (res) { - fns_admin_settings.updateSettingPage(res); + fts_admin_settings.updateSettingPage(res); }); }, @@ -52,19 +52,19 @@ var fns_admin_settings = { updateSettingPage: function (result) { - fns_admin_settings.updateSettingPagePlatforms(result); - fns_admin_settings.updateSettingPageChunkSize(result); + fts_admin_settings.updateSettingPagePlatforms(result); + fts_admin_settings.updateSettingPageChunkSize(result); - fns_admin_settings.updateCurrentPlatform(result); - fns_admin_settings.updateEnabledProviders(result); + fts_admin_settings.updateCurrentPlatform(result); + fts_admin_settings.updateEnabledProviders(result); - fns_admin_settings.tagSettingsAsSaved(fns_admin_elements.fns_div); + fts_admin_settings.tagSettingsAsSaved(fts_admin_elements.fts_div); }, updateSettingPagePlatforms: function (result) { - fns_admin_elements.fns_platforms.empty(); - fns_admin_elements.fns_platforms.append($('