You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.0 KiB
157 lines
4.0 KiB
/* Copyright (c) Business Objects 2006. All rights reserved. */
|
|
|
|
/**
|
|
* ReportView Constructor
|
|
*/
|
|
bobj.crv.newReportView = function(kwArgs) {
|
|
kwArgs = MochiKit.Base.update({
|
|
id: bobj.uniqueId(),
|
|
viewStateId: null,
|
|
isMainReport: false
|
|
}, kwArgs);
|
|
var o = newWidget(kwArgs.id);
|
|
|
|
bobj.fillIn(o, kwArgs);
|
|
o.widgetType = 'ReportView';
|
|
|
|
o.reportPage = null;
|
|
|
|
o._lastPanelWidth = null;
|
|
|
|
// Attach member functions
|
|
o.initOld = o.init;
|
|
o.isMainReportFlag = o.isMainReport;
|
|
MochiKit.Base.update(o, bobj.crv.ReportView);
|
|
|
|
return o;
|
|
};
|
|
|
|
bobj.crv.ReportView = {
|
|
init : function() {
|
|
this.initOld ();
|
|
if (this.reportPage)
|
|
this.reportPage.init ();
|
|
},
|
|
|
|
addChild : function(widget) {
|
|
if (widget.widgetType == 'ReportPage')
|
|
this.reportPage = widget;
|
|
},
|
|
|
|
/**
|
|
* This method should be called after viewer has initialized. Adds a child to view by first appending its html
|
|
* to view and then intializing it.
|
|
*/
|
|
delayedAddChild : function(widget) {
|
|
this.addChild (widget);
|
|
append2 (this.layer, widget.getHTML ());
|
|
widget.init ();
|
|
|
|
},
|
|
|
|
scrollToHighlighted : function (scrollWindow) {
|
|
if(this.reportPage) {
|
|
this.reportPage.scrollToHighlighted(scrollWindow);
|
|
}
|
|
},
|
|
|
|
update : function(update) {
|
|
if (update && update.cons == "bobj.crv.newReportView") {
|
|
if(update.args)
|
|
this.viewStateId = update.args.viewStateId;
|
|
|
|
for ( var childVar in update.children) {
|
|
var child = update.children[childVar];
|
|
if (child && child.cons == "bobj.crv.newReportPage") {
|
|
if (!this.reportPage) {
|
|
/* adds reportPage if not existing */
|
|
this.delayedAddChild (bobj.crv.createWidget (child));
|
|
} else {
|
|
/* updates reportpage */
|
|
this.reportPage.update (child);
|
|
}
|
|
|
|
break; /* There is only one child */
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
getHTML : function() {
|
|
var h = bobj.html;
|
|
|
|
var layerStyle = {
|
|
width : '100%',
|
|
height : '100%',
|
|
overflow : 'hidden',
|
|
position : 'relative'
|
|
};
|
|
|
|
var html = h.DIV ( {
|
|
id : this.id,
|
|
style : layerStyle
|
|
}, this.reportPage ? this.reportPage.getHTML () : '');
|
|
|
|
return html;
|
|
},
|
|
|
|
_doLayout : function() {
|
|
if (this.reportPage)
|
|
this.reportPage.resize (this.getWidth (), this.getHeight ());
|
|
},
|
|
|
|
isMainReport : function() {
|
|
return this.isMainReportFlag;
|
|
},
|
|
|
|
/**
|
|
* ReportView will always fill its container but it should be told when to
|
|
* resize so that the layout of its contents will be updated.
|
|
*/
|
|
resize : function() {
|
|
this._doLayout ();
|
|
},
|
|
|
|
dispose : function() {
|
|
if (this.reportPage) {
|
|
this.reportPage.dispose ();
|
|
bobj.deleteWidget (this.reportPage);
|
|
delete this.reportPage;
|
|
}
|
|
|
|
bobj.removeAllChildElements (this.layer);
|
|
},
|
|
|
|
/**
|
|
* @return Returns a suggested size for the widget as an object with width and height integer properties that specify the dimensions in
|
|
* pixels.
|
|
*/
|
|
getBestFitSize : function() {
|
|
var w = 0;
|
|
var h = 0;
|
|
|
|
var pageSize = this.reportPage ? this.reportPage.getBestFitSize () : null;
|
|
if (pageSize) {
|
|
w += pageSize.width;
|
|
h += pageSize.height;
|
|
}
|
|
|
|
return {
|
|
width : w,
|
|
height : h
|
|
};
|
|
},
|
|
|
|
/**
|
|
* @return True if the view has report content. False if the view is empty.
|
|
*/
|
|
hasContent : function() {
|
|
return this.reportPage != null;
|
|
},
|
|
|
|
hideFrame : function() {
|
|
if (this.reportPage)
|
|
this.reportPage.hideFrame();
|
|
}
|
|
};
|