Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/fulltextsearch.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/admin.elements.js35
-rw-r--r--js/admin.js25
-rw-r--r--js/admin.settings.js42
-rw-r--r--js/fulltextsearch.v1.api.js (renamed from js/nextsearch.v1.api.js)31
-rw-r--r--js/fulltextsearch.v1.js (renamed from js/nextsearch.v1.js)29
-rw-r--r--js/fulltextsearch.v1.navigation.js (renamed from js/nextsearch.v1.navigation.js)118
-rw-r--r--js/fulltextsearch.v1.result.js (renamed from js/nextsearch.v1.result.js)31
-rw-r--r--js/fulltextsearch.v1.searchbar.js (renamed from js/nextsearch.v1.searchbar.js)104
-rw-r--r--js/fulltextsearch.v1.settings.js (renamed from js/nextsearch.v1.settings.js)26
-rw-r--r--js/navigate.js (renamed from js/fullnextsearch.js)22
-rw-r--r--js/personal.js0
11 files changed, 304 insertions, 159 deletions
diff --git a/js/admin.elements.js b/js/admin.elements.js
index 777e255..884930f 100644
--- a/js/admin.elements.js
+++ b/js/admin.elements.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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 <http://www.gnu.org/licenses/>.
*
- *
*/
/** 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 611d3d7..4e86549 100644
--- a/js/admin.js
+++ b/js/admin.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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 <http://www.gnu.org/licenses/>.
*
- *
*/
/** 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 11e83d0..5870572 100644
--- a/js/admin.settings.js
+++ b/js/admin.settings.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,
@@ -42,9 +42,9 @@ 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);
+ 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($('<option>', {
+ fts_admin_elements.fts_platforms.empty();
+ fts_admin_elements.fts_platforms.append($('<option>', {
value: '',
text: ''
}));
@@ -73,7 +73,7 @@ var fns_admin_settings = {
var classes = Object.keys(platforms);
for (var i = 0; i < classes.length; i++) {
var platformClass = classes[i];
- fns_admin_elements.fns_platforms.append($('<option>', {
+ fts_admin_elements.fts_platforms.append($('<option>', {
value: platformClass,
selected: (result.search_platform === platformClass),
text: platforms[platformClass].name
@@ -83,13 +83,13 @@ var fns_admin_settings = {
});
}
- fns_admin_elements.fns_platforms.fadeTo(300, 1);
+ fts_admin_elements.fts_platforms.fadeTo(300, 1);
},
updateSettingPageChunkSize: function (result) {
- fns_admin_elements.fns_chunkSize.val(result.index_chunk);
- fns_admin_elements.fns_chunkSize.fadeTo(300, 1);
+ fts_admin_elements.fts_chunkSize.val(result.index_chunk);
+ fts_admin_elements.fts_chunkSize.fadeTo(300, 1);
},
@@ -138,18 +138,18 @@ var fns_admin_settings = {
saveSettings: function () {
var data = {
- search_platform: fns_admin_elements.fns_platforms.val(),
- index_chunk: fns_admin_elements.fns_chunkSize.val()
+ search_platform: fts_admin_elements.fts_platforms.val(),
+ index_chunk: fts_admin_elements.fts_chunkSize.val()
};
$.ajax({
method: 'POST',
- url: OC.generateUrl('/apps/fullnextsearch/admin/settings'),
+ url: OC.generateUrl('/apps/fulltextsearch/admin/settings'),
data: {
data: data
}
}).done(function (res) {
- fns_admin_settings.updateSettingPage(res);
+ fts_admin_settings.updateSettingPage(res);
});
}
diff --git a/js/nextsearch.v1.api.js b/js/fulltextsearch.v1.api.js
index 43dbd1a..1cc826e 100644
--- a/js/nextsearch.v1.api.js
+++ b/js/fulltextsearch.v1.api.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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 <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: OC */
-/** global: next_settings */
+/** global: settings */
/** global: result */
/** global: search */
/** global: nav */
@@ -35,16 +34,34 @@
var api = {
- search: function (type, search, callback) {
+ search: function (request, callback) {
var res = {status: -1};
+
$.ajax({
method: 'GET',
- url: OC.generateUrl('/apps/fullnextsearch/v1/search/' + type),
+ url: OC.generateUrl('/apps/fulltextsearch/v1/search'),
data: {
- search: search
+ request: JSON.stringify(request)
}
}).done(function (res) {
result.displayResult(res);
+ nav.onResultDisplayed(res);
+ api.onCallback(callback, res);
+ }).fail(function () {
+ nav.failedToAjax();
+ api.onCallback(callback, res);
+ });
+ },
+
+
+ options: function (providerId, callback) {
+ var res = {status: -1};
+
+ $.ajax({
+ method: 'GET',
+ url: OC.generateUrl('/apps/fulltextsearch/options/' + providerId)
+ }).done(function (res) {
+ searchbar.onOptionsLoaded(res);
api.onCallback(callback, res);
}).fail(function () {
nav.failedToAjax();
diff --git a/js/nextsearch.v1.js b/js/fulltextsearch.v1.js
index 5c742c9..d956088 100644
--- a/js/nextsearch.v1.js
+++ b/js/fulltextsearch.v1.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,11 +21,10 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: OCA */
-/** global: next_settings */
+/** global: settings */
/** global: searchbar */
/** global: result */
/** global: nav */
@@ -35,20 +34,20 @@
(function () {
/**
- * @constructs NextSearch
+ * @constructs FullTextSearch
*/
- var NextSearch = function () {
- $.extend(NextSearch.prototype, next_settings);
- $.extend(NextSearch.prototype, result);
- $.extend(NextSearch.prototype, searchbar);
- $.extend(NextSearch.prototype, nav);
- $.extend(NextSearch.prototype, api);
+ var FullTextSearch = function () {
+ $.extend(FullTextSearch.prototype, settings);
+ $.extend(FullTextSearch.prototype, result);
+ $.extend(FullTextSearch.prototype, searchbar);
+ $.extend(FullTextSearch.prototype, nav);
+ $.extend(FullTextSearch.prototype, api);
- next_settings.generateDefaultTemplate();
- next_settings.generateNoResultDiv();
+ settings.generateDefaultTemplate();
+ settings.generateNoResultDiv();
};
- OCA.NextSearch = NextSearch;
- OCA.NextSearch.api = new NextSearch();
+ OCA.FullTextSearch = FullTextSearch;
+ OCA.FullTextSearch.api = new FullTextSearch();
})();
diff --git a/js/nextsearch.v1.navigation.js b/js/fulltextsearch.v1.navigation.js
index 6dd0944..98a3284 100644
--- a/js/nextsearch.v1.navigation.js
+++ b/js/fulltextsearch.v1.navigation.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,19 +21,21 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: OCA */
/** global: api */
/** global: search */
/** global: result */
-/** global: next_settings */
+/** global: settings */
+
var curr = {
providerResult: [],
-
+ page: 1,
+ lastRequest: '',
+ moreDisplayed: false,
setProviderResult: function (id, value) {
curr.providerResult[id] = value;
@@ -62,12 +64,39 @@ var nav = {
},
- managerDivProviderResult: function (divProvider, newResult, oldResult) {
+ manageDivProviderNavigation: function (divProviderNavigation, meta) {
+
+ 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-search', meta.request.search);
+ divProviderNavigation.attr('data-max-page', maxPage);
+ divProviderNavigation.attr('data-size', meta.request.size);
+ divProviderNavigation.attr('data-total', meta.total);
+
+ var providerName = divProviderNavigation.attr('data-provider-name');
+
+ var left = "Searching " + providerName + " for '" + meta.request.search + "' returns " +
+ meta.total + " results in " + meta.time + "ms";
+ divProviderNavigation.find('.provider_navigation_left').text(left);
+
+ 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);
+ },
+
+
+ manageDivProviderResult: function (divProviderResult, newResult, oldResult) {
//replaceWith();
- nav.divProviderResultAddItems(divProvider, newResult, oldResult);
+ 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);
}
},
@@ -89,8 +118,8 @@ var nav = {
precItem.after(divResult);
}
- divResult.slideDown(next_settings.delay_result, function () {
- $(this).children('.result_template').fadeTo(next_settings.delay_result, 1);
+ divResult.slideDown(settings.delay_result, function () {
+ $(this).children('.result_template').fadeTo(settings.delay_result, 1);
});
precItem = divResult;
@@ -104,8 +133,8 @@ var nav = {
var entry = oldResult[i];
if (result.getResultIndex(entry.id, newResult) === -1) {
var divResult = nav.getDivResult(entry.id, divProviderResult);
- divResult.fadeTo(next_settings.delay_result, 0, function () {
- $(this).slideUp(next_settings.delay_result, function () {
+ divResult.fadeTo(settings.delay_result, 0, function () {
+ $(this).slideUp(settings.delay_result, function () {
$(this).remove();
});
});
@@ -138,12 +167,12 @@ var nav = {
var divResult = nav.getDivResult(entryId, divProviderResult);
if (precId === '') {
- divResult.fadeTo(next_settings.delay_result, 0.35, function () {
+ divResult.fadeTo(settings.delay_result, 0.35, function () {
$(this).prependTo(divProviderResult).fadeTo(100, 1);
});
} else {
var precItem = nav.getDivResult(precId, divProviderResult);
- divResult.fadeTo(next_settings.delay_result, 0.35, function () {
+ divResult.fadeTo(settings.delay_result, 0.35, function () {
$(this).insertAfter(precItem).fadeTo(100, 1);
});
}
@@ -153,7 +182,7 @@ var nav = {
getDivProvider: function (providerId, providerName) {
var ret = null;
- next_settings.resultContainer.children('.provider_header').each(function () {
+ settings.resultContainer.children('.provider_header').each(function () {
if ($(this).attr('data-id') === providerId) {
ret = $(this);
}
@@ -161,7 +190,7 @@ var nav = {
if (ret === null) {
ret = nav.generateDivProvider(providerId, providerName);
- next_settings.resultContainer.append(ret);
+ settings.resultContainer.append(ret);
}
return ret;
@@ -220,20 +249,20 @@ var nav = {
nav.deleteEmptyDiv(divResult, '#line1');
nav.deleteEmptyDiv(divResult, '#line2');
- if (next_settings.parentHasMethod('onEntryGenerated')) {
- next_settings.parent.onEntryGenerated(divResult);
+ if (settings.parentHasMethod('onEntryGenerated')) {
+ settings.parent.onEntryGenerated(divResult);
}
},
onSearchReset: function () {
- if (next_settings.parentHasMethod('onSearchReset')) {
- next_settings.parent.onSearchReset();
+ if (settings.parentHasMethod('onSearchReset')) {
+ settings.parent.onSearchReset();
}
},
onResultDisplayed: function () {
- if (next_settings.parentHasMethod('onResultDisplayed')) {
- next_settings.parent.onResultDisplayed();
+ if (settings.parentHasMethod('onResultDisplayed')) {
+ settings.parent.onResultDisplayed();
}
},
@@ -246,13 +275,13 @@ var nav = {
generateTemplateEntry: function (document) {
- var divTemplate = next_settings.entryTemplate;
+ var divTemplate = settings.entryTemplate;
if (divTemplate === null) {
- divTemplate = next_settings.entryTemplateDefault;
+ divTemplate = settings.entryTemplateDefault;
}
if (!divTemplate.length) {
- console.log('FullNextSearch Error: template_entry is not defined');
+ console.log('FullTextSearch Error: template_entry is not defined');
return;
}
@@ -281,14 +310,45 @@ var nav = {
generateDivProvider: function (providerId, providerName) {
- var divProviderName = $('<div>', {class: 'provider_name'});
- divProviderName.text(providerName);
+
+
+ var divProviderNavigation = $('<div>', {class: 'provider_navigation'});
+ divProviderNavigation.attr('data-provider-name', providerName);
+ divProviderNavigation.append($('<div>', {class: 'provider_navigation_left'}));
+
+ var divProviderPagination = $('<div>', {class: 'provider_navigation_right'});
+ var divProviderPaginationPrev = $('<div>', {class: 'icon-page-prev provider_navigation_prev'});
+ divProviderPaginationPrev.on('click', function () {
+ fullTextSearch.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($('<div>', {class: 'provider_navigation_curr'}));
+
+ var divProviderPaginationNext = $('<div>', {class: 'icon-page-next provider_navigation_next'});
+ divProviderPaginationNext.on('click', function () {
+ fullTextSearch.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 = $('<div>', {class: 'provider_result'});
+
var divProvider = $('<div>', {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/fulltextsearch.v1.result.js
index b8f5f06..80a19f5 100644
--- a/js/nextsearch.v1.result.js
+++ b/js/fulltextsearch.v1.result.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,23 +21,23 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: OCA */
-/** global: next_settings */
+/** global: settings */
/** global: curr */
/** global: nav */
+/** @namespace result.provider */
+/** @namespace result.documents */
+
var result = {
displayResult: function (res) {
- if (next_settings.resultContainer === null) {
+ if (settings.resultContainer === null) {
return;
}
- nav.onResultDisplayed();
-
var searchResult = res.result;
if (searchResult.length === 0) {
result.displayNoResult();
@@ -51,27 +51,26 @@ var result = {
displayNoResult: function () {
- next_settings.divNoResult.fadeTo(next_settings.delay_result, 1);
- next_settings.resultContainer.find('.provider_header').each(function () {
- $(this).fadeTo(next_settings.delay_result, 0);
+ settings.divNoResult.fadeTo(settings.delay_result, 1);
+ settings.resultContainer.find('.provider_header').each(function () {
+ $(this).fadeTo(settings.delay_result, 0);
});
},
- /** @namespace result.provider */
- /** @namespace result.documents */
displayProviderResult: function (result) {
- next_settings.divNoResult.fadeTo(next_settings.delay_result, 0);
+ settings.divNoResult.fadeTo(settings.delay_result, 0);
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 () {
- $(this).fadeTo(next_settings.delay_provider, 1);
+ divProvider.slideDown(settings.delay_provider, function () {
+ $(this).fadeTo(settings.delay_provider, 1);
});
curr.setProviderResult(result.provider.id, result);
diff --git a/js/nextsearch.v1.searchbar.js b/js/fulltextsearch.v1.searchbar.js
index 3a263a9..641ab95 100644
--- a/js/nextsearch.v1.searchbar.js
+++ b/js/fulltextsearch.v1.searchbar.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,7 +21,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: OCA */
@@ -30,12 +29,14 @@
/** global: api */
/** global: search */
/** global: result */
-/** global: nextSearch */
-/** global: next_settings */
+/** global: fullTextSearch */
+/** global: settings */
var searchbox = {
searchTimeout: null,
+ search_more: null,
+ search_icon_more: null,
search_icon_close: null,
search_icon: null,
search_input: null,
@@ -51,13 +52,12 @@ var searchbar = {
searchbox.search_div = $('<div>', {class: 'next_search_div'});
divHeaderRight.prepend(searchbox.search_div);
- searchbox.search_icon = $('<div>', {class: 'icon-fullnextsearch'});
+ searchbox.search_icon = $('<div>', {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);
-
searchbox.search_form = $('<div>');
searchbox.search_form.fadeTo(0, 0);
@@ -67,42 +67,62 @@ var searchbar = {
});
searchbox.search_form.append(searchbox.search_input);
- searchbox.search_icon_close = $('<div>', {class: 'icon-close-white icon-close-fullnextsearch'});
+ searchbox.search_more = $('<div>', {class: 'search_more'});
+ searchbox.search_more.fadeTo(0, 0);
+
+ searchbox.search_icon_more = $('<div>', {class: 'icon-more-white icon-more-fulltextsearch'});
+ searchbox.search_icon_more.fadeTo(0, 0);
+ searchbox.search_icon_more.on('click', function () {
+ 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);
+
+ searchbox.search_icon_close = $('<div>', {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;
+ 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 () {
- if (next_settings.lockSearchbox === true) {
+ if (settings.lockSearchbox === true) {
return;
}
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;
+ settings.lockSearchbox = true;
+ searchbox.search_icon_more.stop().fadeTo(200, 1);
searchbox.search_icon_close.stop().fadeTo(200, 1);
});
searchbox.search_input.on('input', function () {
-
if ($(this).val() === '') {
nav.onSearchReset();
}
- if (next_settings.parentHasMethod('onEntryGenerated')) {
- next_settings.parent.onEntryGenerated();
+ if (settings.parentHasMethod('onEntryGenerated')) {
+ settings.parent.onEntryGenerated();
}
if (searchbox.searchTimeout === null && searchbar.initSearch(false)) {
@@ -112,9 +132,45 @@ var searchbar = {
}, 2000);
}
});
+
+ fullTextSearch.options(settings.searchProviderId);
+ },
+
+
+ onOptionsLoaded: function (result) {
+ searchbox.search_more.html(result[settings.searchProviderId]);
+ searchbox.search_more.find('INPUT').each(function () {
+ $(this).on('change', function () {
+ var search = searchbox.search_input.val();
+ fullTextSearch.search({
+ providers: settings.searchProviderId,
+ search: search,
+ page: curr.page,
+ options: 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;
},
+ // 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();
@@ -122,7 +178,19 @@ var searchbar = {
return false;
}
- nextSearch.search(next_settings.searchProviderId, search, searchbar.searchResult);
+ if (curr.lastRequest === search) {
+ return true;
+ }
+
+ curr.lastRequest = search;
+
+ fullTextSearch.search({
+ providers: settings.searchProviderId,
+ search: search,
+ page: curr.page,
+ options: searchbar.getSearchOptions(),
+ size: 20
+ });
return true;
}
diff --git a/js/nextsearch.v1.settings.js b/js/fulltextsearch.v1.settings.js
index b1a8fb8..7baa168 100644
--- a/js/nextsearch.v1.settings.js
+++ b/js/fulltextsearch.v1.settings.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,13 +21,12 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: searchbar */
/** global: api */
-var next_settings = {
+var settings = {
parent: null,
delay_provider: 300,
@@ -39,6 +38,7 @@ var next_settings = {
entryTemplateDefault: null,
divNoResult: null,
+
generateDefaultTemplate: function () {
var divLeft = $('<div>', {class: 'result_entry_left'});
@@ -53,7 +53,7 @@ var next_settings = {
div.append(divLeft);
div.append(divRight);
- next_settings.entryTemplateDefault = $('<div>').append(div);
+ settings.entryTemplateDefault = $('<div>').append(div);
},
@@ -61,29 +61,29 @@ var next_settings = {
var div = $('<div>', {id: 'noresult'});
div.html('no result');
div.hide();
- next_settings.divNoResult = div;
+ settings.divNoResult = div;
},
setEntryTemplateId: function (template, parent) {
- next_settings.entryTemplate = template;
- next_settings.parent = parent;
+ settings.entryTemplate = template;
+ settings.parent = parent;
},
setResultContainerId: function (container) {
- next_settings.resultContainer = container;
- next_settings.resultContainer.prepend(next_settings.divNoResult);
+ settings.resultContainer = container;
+ settings.resultContainer.prepend(settings.divNoResult);
},
addSearchBar: function (providerId) {
- next_settings.searchProviderId = providerId;
+ settings.searchProviderId = providerId;
searchbar.init();
},
parentHasMethod: function (method) {
- if (next_settings.parent === null) {
+ if (settings.parent === null) {
return false;
}
- return (typeof eval('next_settings.parent. ' + method) === "function");
+ return (typeof eval('settings.parent. ' + method) === "function");
}
};
diff --git a/js/fullnextsearch.js b/js/navigate.js
index 9727694..e800338 100644
--- a/js/fullnextsearch.js
+++ b/js/navigate.js
@@ -1,11 +1,11 @@
/*
- * FullNextSearch - 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 <maxence@artificial-owl.com>
- * @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,14 +21,13 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- *
*/
/** global: OCA */
/** global: _ */
-const nextSearch = OCA.NextSearch.api;
+const fullTextSearch = OCA.FullTextSearch.api;
var elements = {
@@ -48,8 +47,8 @@ Navigate.prototype = {
init: function () {
var self = this;
- nextSearch.setEntryTemplateId($('#template_entry'), self);
- nextSearch.setResultContainerId($('#search_result'));
+ fullTextSearch.setEntryTemplateId($('#template_entry'), self);
+ fullTextSearch.setResultContainerId($('#search_result'));
elements.search_input = $('#search_input');
elements.search_submit = $('#search_submit');
@@ -80,8 +79,13 @@ Navigate.prototype = {
if (!force && search.length < 3) {
return false;
}
+ var request = {
+ providers: 'all',
+ search: search,
+ page: curr.page
+ };
- nextSearch.search('_all', search, this.searchResult);
+ fullTextSearch.search(request, this.searchResult);
return true;
},
@@ -121,11 +125,11 @@ Navigate.prototype = {
}
};
-OCA.NextSearch.Example = Navigate;
+OCA.FullTextSearch.Example = Navigate;
$(document).ready(function () {
- OCA.NextSearch.example = new Navigate();
+ OCA.FullTextSearch.example = new Navigate();
});
diff --git a/js/personal.js b/js/personal.js
deleted file mode 100644
index e69de29..0000000
--- a/js/personal.js
+++ /dev/null