Add support for response pipes
Change-Id: I86905bb22ffa70b86476f0de6fa8343f687dc740
diff --git a/dev/js/src/api.js b/dev/js/src/api.js
index 3b3b821..effa9f8 100644
--- a/dev/js/src/api.js
+++ b/dev/js/src/api.js
@@ -41,11 +41,11 @@
}
docFragment += '/' + match.matchID;
- url += '/' + docFragment;
+ url += '/' + docFragment + '?';
// { spans: true, layer:x, foundry : y}
if (param['spans'] == true) {
- url += '?spans=true';
+ url += 'spans=true';
docFragment += ' +spans ';
if (param['foundry'] !== undefined) {
url += '&foundry=' + param['foundry'];
@@ -61,8 +61,11 @@
else {
// TODO
docFragment += ' -spans';
- url += '?spans=false';
- }
+ url += 'spans=false';
+ };
+
+ if (KorAP.ResponsePipe != null)
+ url += '&response-pipe=' + KorAP.ResponsePipe.toString();
KorAP.API.getJSON(url, cb, "MatchInfo: " + docFragment);
};
@@ -81,8 +84,12 @@
}
else {
url += '?fields=@all'; // TODO: Maybe '*'?
- }
+ };
+ if (KorAP.ResponsePipe != null)
+ url += '&response-pipe=' + KorAP.ResponsePipe.toString();
+
+
KorAP.API.getJSON(url, cb, "TextInfo: " + doc.textSigle);
};
diff --git a/dev/js/src/init.js b/dev/js/src/init.js
index 706d898..b5c3baf 100644
--- a/dev/js/src/init.js
+++ b/dev/js/src/init.js
@@ -586,6 +586,13 @@
pipeE.removeAttribute("name");
};
+ if (KorAP.ResponsePipe != null) {
+ const pipeE = KorAP.ResponsePipe.element();
+ if (pipeE.value == "")
+ pipeE.removeAttribute("name");
+ };
+
+
// This would preferably set the query to be "disabled",
// but in that case the query wouldn't be submitted
// at all.
@@ -696,8 +703,13 @@
d.head.appendChild(KorAP.Plugin.element());
// Add pipe form
- KorAP.Pipe = pipeClass.create();
- d.getElementById("searchform").appendChild(KorAP.Pipe.element());
+ KorAP.Pipe = pipeClass.create("pipe");
+ let searchF = d.getElementById("searchform");
+ searchF.appendChild(KorAP.Pipe.element());
+
+ // Add pipe form
+ KorAP.ResponsePipe = pipeClass.create("response-pipe");
+ searchF.appendChild(KorAP.ResponsePipe.element());
try {
diff --git a/dev/js/src/pipe.js b/dev/js/src/pipe.js
index 7f0f6be..f10853e 100644
--- a/dev/js/src/pipe.js
+++ b/dev/js/src/pipe.js
@@ -1,12 +1,13 @@
/**
* Create a pipe object, that holds a list of services
* meant to transform the KQ passed before it's finally
- * passed to the search engine.
+ * passed to the search engine or to transform the response
+ * afterwards.
*
* @author Nils Diewald
*/
"use strict";
-define(function () {
+define(['util'], function () {
const notNullRe = new RegExp("[a-zA-Z0-9]");
// Trim and check
@@ -23,8 +24,9 @@
/**
* Constructor
*/
- create : function () {
+ create : function (name) {
const obj = Object.create(this);
+ obj._name = (name == undefined) ? 'pipe' : name;
obj._pipe = [];
return obj;
},
@@ -81,6 +83,13 @@
return this._pipe.join(',');
},
+ /**
+ * Return the pipe as a an URI compliant string.
+ */
+ toUriString : function () {
+ return encodeURIComponent(this.toString());
+ },
+
/**
* Update the pipe value.
@@ -100,7 +109,7 @@
if (e == null) {
e = this.e = document.createElement('input');
e.setAttribute("type","text");
- e.setAttribute("name","pipe");
+ e.setAttribute("name",this._name);
e.classList.add("pipe");
};
return e;
diff --git a/dev/js/src/plugin/server.js b/dev/js/src/plugin/server.js
index bdc4873..f8c9855 100644
--- a/dev/js/src/plugin/server.js
+++ b/dev/js/src/plugin/server.js
@@ -479,12 +479,24 @@
// Modify pipes
case 'pipe':
- if (KorAP.Pipe != undefined) {
- if (d.job == 'del') {
- KorAP.Pipe.remove(d.service);
- } else {
- KorAP.Pipe.append(d.service);
- };
+ let j = d.job;
+ if (
+ ((j == 'del-after' || j == 'add-after') &&
+ KorAP.ResponsePipe == undefined) ||
+ KorAP.Pipe == undefined) {
+
+ KorAP.log(0,"No Pipe established");
+ break;
+ };
+
+ if (j == 'del') {
+ KorAP.Pipe.remove(d.service);
+ } else if (j == 'del-after') {
+ KorAP.ResponsePipe.remove(d.service);
+ } else if (j == 'add-after') {
+ KorAP.ResponsePipe.append(d.service);
+ } else {
+ KorAP.Pipe.append(d.service);
};
break;