blob: f14a7f7bec4b4215192511dd08004871cda3b770 [file] [log] [blame]
/**
* The plugin system is based
* on registered widgets (iframes) from foreign services.
* The client component is loaded independently
* in a plugin and communicates with the embedding
* KorAP service.
*
* @author Nils Diewald
*/
(function () {
"use strict";
var obj = {
/**
* Create new plugin
*/
create : function () {
return Object.create(this)._init();
},
/*
* Initialize plugin
*/
_init : function () {
console.log('Init');
this.resize();
return this;
},
// Send a message
_sendMsg : function (data) {
// TODO: This should send a correct origin
window.parent.postMessage(data, '*');
},
/**
* Send a log message to the embedding KorAP
*/
log : function (code, msg) {
this._sendMsg({
action : 'log',
code : code,
msg : msg
});
},
/**
* Send a resize command to the
* embedding KorAP
*/
resize : function () {
var body = document.body;
console.log('Resize');
// recognize margin of first element
// (don't know why in FF)
var cs = getComputedStyle(body.children[0]);
var offsetHeight = parseInt(body.offsetHeight) +
parseInt(cs.getPropertyValue("margin-top")) +
parseInt(cs.getPropertyValue("margin-bottom"));
this._sendMsg({
'action' : 'resize',
'height' : offsetHeight
});
}
};
// Create plugin on windows load
window.onload = function () {
window.KorAPlugin = window.KorAPlugin || obj.create();
};
})();