module.exports = new Class({ Extends: Vn.Object ,initialize: function(moduleInfo, gui) { this.info = moduleInfo; this.gui = gui; this.conn = gui.conn; this.parent(null); } /** * Gets an object from the builder associated to this report. * * @param {string} objectId The object identifier * @return {Object} The object, or %null if not found */ ,$: function(objectId) { if (this.scope) return this.scope.getById(objectId); return null; } ,open: function(batch) { this.batch = batch; this.createWindow(); } ,print: function() { this.window.print(); } ,includeCss: function(path) { var basePath = location.protocol +'//'+ location.host; basePath += location.port ? ':'+ location.port : ''; basePath += location.pathname.substring(0, location.pathname.lastIndexOf('/')); var link = this.doc.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = basePath +'/'+ path + Vn.getVersion(); var head = this.doc.getElementsByTagName('head')[0]; head.appendChild(link); } ,createWindow: function() { var reportWindow = window.open( 'js/hedera/report.html', '_blank', 'height=650, width=950, resizable=yes, fullscreen=no,'+ 'titlebar=no, menubar=no, toolbar=no, location=no, scrollbars=yes' ); if (!reportWindow) { Htk.Toast.showError( _('Please unlock popups and try again')); return false; } reportWindow.addEventListener('load', this._onWindowLoad.bind(this)); this.window = reportWindow; return true; } ,_onWindowLoad: function() { this.doc = this.window.document this.includeCss('reports/'+ this.info.path +'/style.css'); var printButton = this.doc.getElementById('print'); printButton.addEventListener('click', this.print.bind(this)); Vn.Node.setText(printButton, _('Print')); this.onWindowCreate(); } ,onWindowCreate: function() { var builder = new Vn.Builder(); builder.compileFile('reports/'+ this.info.path +'/ui.xml'); var scope = this.scope = builder.load(this.doc, this); scope.link(null, { batch: this.batch, conn: this.conn }); this.doc.body.appendChild(scope.$('report')); } });