From 64d35662b50597df92b8cd6fcbdf6cec641e17fb Mon Sep 17 00:00:00 2001 From: Jyrki Niemi Date: Tue, 1 Oct 2024 12:16:16 +0300 Subject: [PATCH] util, model, search_controllers: Add plugin hook points Add plugin hook points to be used in plugin cqp_between_tokens. app/scripts/model.js: - BaseProxy.expandCQP: Let plugins filter the expanded CQP. app/scripts/search_controllers.js - ExtendedSearch: Let plugins filter the extended search CQP expression and act when corpus selection is changed. app/scripts/util.js - CorpusListing.constructor, .select: Let plugins act on CorpusListing after constructing it and when selecting corpora. --- app/scripts/model.js | 8 ++++++-- app/scripts/search_controllers.js | 4 ++++ app/scripts/util.js | 5 +++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/scripts/model.js b/app/scripts/model.js index 6a6fe3b23..e2466237f 100644 --- a/app/scripts/model.js +++ b/app/scripts/model.js @@ -34,12 +34,16 @@ class BaseProxy { } expandCQP(cqp) { + let result try { - return CQP.expandOperators(cqp) + result = CQP.expandOperators(cqp) } catch (e) { c.warn("CQP expansion failed", cqp, e) - return cqp + result = cqp } + // Let plugins filter the expanded CQP + result = plugins.callFilters("filterExpandedCQP", result) + return result } makeRequest() { diff --git a/app/scripts/search_controllers.js b/app/scripts/search_controllers.js index 9cddd99a6..a8549fe52 100644 --- a/app/scripts/search_controllers.js +++ b/app/scripts/search_controllers.js @@ -455,6 +455,8 @@ korpApp.controller("ExtendedSearch", function ($scope, $location, $rootScope, se if ($rootScope.globalFilter) { val2 = CQP.stringify(CQP.mergeCqpExprs(CQP.parse(val2 || "[]"), $rootScope.globalFilter)) } + // Let plugins filter the extended search CQP expression + val2 = plugins.callFilters("filterExtendedCQP", val2) $rootScope.extendedCQP = val2 } @@ -488,6 +490,8 @@ korpApp.controller("ExtendedSearch", function ($scope, $location, $rootScope, se return s.$on("corpuschooserchange", function () { s.withins = s.getWithins() s.within = s.withins[0] && s.withins[0].value + // Let plugins act when corpus selection is changed + plugins.callActions("onCorpusChooserChange") }) }) diff --git a/app/scripts/util.js b/app/scripts/util.js index 99964c714..328bf7a65 100644 --- a/app/scripts/util.js +++ b/app/scripts/util.js @@ -31,6 +31,8 @@ window.CorpusListing = class CorpusListing { "getStructAttrsIntersection", "getStructAttrs", ]) + // Let plugins act on CorpusListing after constructing it + plugins.callActions("onCorpusListingConstructed", this) } get(key) { @@ -63,6 +65,9 @@ window.CorpusListing = class CorpusListing { select(idArray) { this.selected = _.values(_.pick.apply(this, [this.struct].concat(idArray))) + // Let plugins act on CorpusListing when selecting the corpora + // listed in idArray + plugins.callActions("onCorpusListingSelect", this, idArray) } mapSelectedCorpora(f) {