blob: 7d771ad77a0b4a625302345d6a18a04bcae68d01 [file] [log] [blame]
/**
* The result panel
*
* @author Nils Diewald
*/
"use strict";
define([
'panel',
'view/result/koralquery'
], function (panelClass, kqViewClass) {
const d = document;
// Localization values
const loc = KorAP.Locale;
loc.TOGGLE_ALIGN = loc.TOGGLE_ALIGN || 'toggle alignment';
loc.SHOW_KQ = loc.SHOW_KQ || 'show KoralQuery';
const aRoll = ['left', 'right','center'];
return {
type : 'result',
create : function (opened) {
return Object.create(panelClass)._init(['result']).upgradeTo(this)._init(opened);
},
// Initialize panel
_init : function (opened) {
this._opened = opened;
// If plugins are enabled, add all buttons for the result panel
if (KorAP.Plugin) {
// Add all result buttons in order
KorAP.Plugin
.buttonGroup("result")
.forEach(i => this.actions().add.apply(this.actions(), i));
KorAP.Plugin.clearButtonGroup("result");
};
this.prepend = true;
return this;
},
/**
* Add KoralQuery action to panel
*/
addKqAction : function () {
// Open KoralQuery view
const kqButton = this.actions().add(
loc.SHOW_KQ,
{'cls':['show-kq','button-icon']},
function () {
const t = this;
// Show only once - otherwise toggle
if (t._kq && t._kq.shown()) {
t._kq.close();
return;
};
t._kq = kqViewClass.create();
// On close, remove session info on KQ
t._kq.onClose = function () {
delete this._opened['kq'];
}.bind(t);
t._opened['kq'] = true;
t.add(t._kq);
}
);
// Show KoralQuery in case it's meant to be shown
if (this._opened['kq'])
kqButton.click();
},
/**
* Add align action to panel
*/
addAlignAction : function () {
/**
* Toggle the alignment (left <=> right)
*/
this.actions().add(loc.TOGGLE_ALIGN, {'cls':['align','right','button-icon']}, function (e) {
var olCl = d.querySelector('#search > ol').classList;
aRoll.find(function(align, i) {
if (olCl.contains('align-' + align)) {
const n = i >= 2 ? 0 : i+1;
const nn = n >= 2 ? 0 : n+1;
olCl.remove('align-' + align);
olCl.add('align-' + aRoll[n]);
this.button.toggleClass(aRoll[n], aRoll[nn]);
return true;
};
}, this);
});
}
}
});