blob: 09804ca7541ac74f0d07a7847e2afb65a447a861 [file] [log] [blame]
define([
'match',
'hint',
'vc',
'tutorial',
'lib/domReady',
'hint/array',
'lib/alertify',
'api',
'mailToChiffre',
'lib/highlight/highlight.pack',
'util'
], function (matchClass,
hintClass,
vcClass,
tutClass,
domReady,
hintArray,
alertifyClass) {
// Set hint array for hint helper
KorAP.hintArray = hintArray;
// Localization values
var loc = KorAP.Locale;
loc.VC_allCorpora = loc.VC_allCorpora || 'all Corpora';
// Override KorAP.log
window.alertify = alertifyClass;
KorAP.log = function (type, msg) {
// Use alertify to log errors
alertifyClass.log(
(type === 0 ? '' : type + ': ') +
msg,
'error',
5000
);
};
domReady(function (event) {
var obj = {};
/**
* Replace Virtual Collection field
*/
var vcname;
var input = document.getElementById('vc');
if (input) {
input.style.display = 'none';
vcname = document.createElement('span');
vcname.setAttribute('id', 'vc-choose');
vcname.appendChild(
document.createTextNode(
document.getElementById('vc-name').value || loc.VC_allCorpora
)
);
input.parentNode.insertBefore(vcname, input);
};
/**
* Add actions to match entries
*/
var inactiveLi = document.querySelectorAll(
'#search > ol > li:not(.active)'
);
var i = 0;
for (i = 0; i < inactiveLi.length; i++) {
inactiveLi[i].addEventListener('click', function (e) {
if (this._match !== undefined)
this._match.open();
else {
matchClass.create(this).open();
};
e.halt();
});
};
/**
* Toggle the alignment (left <=> right)
*/
if (i > 0) {
var br = document.querySelector('div.button.right');
if (br !== null) {
var toggle = document.createElement('a');
toggle.setAttribute('title', 'toggle Alignment');
// Todo: Reuse old alignment from cookie!
var cl = toggle.classList;
cl.add('align', 'right');
toggle.addEventListener(
'click',
function (e) {
var ol = document.querySelector('#search > ol');
ol.toggleClass("align-left", "align-right");
this.toggleClass("left", "right");
});
toggle.appendChild(document.createElement('span'))
.appendChild(document.createTextNode('Alignment'));
br.appendChild(toggle);
};
};
/**
* Toggle the Virtual Collection builder
*/
if (vcname) {
var vc;
vcname.onclick = function () {
var view = document.getElementById('vc-view');
// The vc is visible
if (this.classList.contains('active')) {
view.removeChild(vc.element());
this.classList.remove('active');
}
// The vc is not visible
else {
// The vc is not rendered yet
if (vc === undefined) {
vc = vcClass.create([
['title', 'string'],
['subTitle', 'string'],
['pubDate', 'date'],
['author', 'string']
]);
if (KorAP.currentVC !== undefined)
vc.fromJson(KorAP.currentVC);
};
view.appendChild(vc.element());
this.classList.add('active');
};
};
};
/**
* Init Tutorial view
*/
if (document.getElementById('view-tutorial')) {
window.tutorial = tutClass.create(
document.getElementById('view-tutorial')
);
obj.tutorial = window.tutorial;
}
// Tutorial is in parent
else if (window.parent) {
obj.tutorial = window.parent.tutorial;
};
// Initialize queries for document
if (obj.tutorial)
obj.tutorial.initQueries(document);
// Initialize documentation links
obj.tutorial.initDocLinks(document);
/*
if (KorAP.currentQuery !== undefined) {
var sb = document.getElementById('searchbar');
var kq = document.createElement('div');
kq.setAttribute('id', 'koralquery');
sb.parentNode.insertBefore(kq, sb.nextSibling);
kq.innerHTML = JSON.stringify(KorAP.currentQuery, null, ' ');
hljs.highlightBlock(kq);
};
*/
/**
* Init hint helper
* has to be final because of
* reposition
*/
// Todo: Pass an element, so this works with
// tutorial pages as well!
obj.hint = hintClass.create();
return obj;
});
});