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.

296 lines
9.2 KiB

/* Copyright (c) Business Objects 2006. All rights reserved. */
/**
* PromptPage constructor
*
* @param kwArgs.id [String] DOM node id
* @param kwArgs.contentId [String] DOM node id of report page content container
* @param kwArgs.bgColor [String] Background color of the page
* @param kwArgs.width [Int] Page content's width in pixels
* @param kwArgs.height [Int] Page content's height in pixels
* @param kwArgs.topMargin [Int] Top margin of report page in pixels
* @param kwArgs.rightMargin [Int] Right margin of report page in pixels
* @param kwArgs.bottomMargin [Int] Bottom margin of report page in pixels
* @param kwArgs.leftMargin [Int] Left margin of report page in pixels
*/
bobj.crv.newPromptPage = function(kwArgs) {
kwArgs = MochiKit.Base.update({
id: bobj.uniqueId(),
layoutType: 'fixed',
content : null,
width: 800,
height: 600,
padding: 5,
top: 0,
left: 0
}, kwArgs);
var o = newWidget(kwArgs.id);
o.widgetType = 'PromptPage';
o._reportProcessing = null;
// Update instance with constructor arguments
bobj.fillIn(o, kwArgs);
// Update instance with member functions
o.initOld = o.init;
MochiKit.Base.update(o, bobj.crv.PromptPage);
window[o.id] = o;
return o;
};
bobj.crv.PromptPage = {
/**
* Overrides parent. Sets the content of the report page.
*
* @param content
* [String|DOM Node] Html or Node to use as report page content
*/
setHTML : function(content) {
var pageNode = this._pageNode;
if (bobj.isString (content)) {
var ext = bobj.html.extractHtml(content);
pageNode.innerHTML = ext.html;
var links = ext.links;
for(var iLinks = 0, linksLen = links.length; iLinks < linksLen; ++iLinks) {
bobj.includeLink(links[iLinks]);
}
var scripts = ext.scripts;
for (var iScripts = 0, scriptsLen = scripts.length; iScripts < scriptsLen; ++iScripts) {
var script = scripts[iScripts];
if (!script) {continue;}
if (script.text) {
bobj.evalInWindow(script.text);
}
}
} else if (bobj.isObject (content)) {
pageNode.innerHTML = '';
pageNode.appendChild (content);
var contentStyle = content.style;
contentStyle.display = 'block';
contentStyle.visibility = 'visible';
}
},
getHTML : function() {
var h = bobj.html;
var isBorderBoxModel = bobj.isBorderBoxModel ();
var pageOuterHeight = this.height + this.topMargin + this.bottomMargin;
var pageOuterWidth = this.width + this.leftMargin + this.rightMargin;
var contentHeight = isBorderBoxModel ? pageOuterHeight : this.height;
var contentWidth = isBorderBoxModel ? pageOuterWidth : this.width;
var layerStyle = {
position : 'relative',
width : contentWidth + 'px',
height : contentHeight + 'px',
top : this.top + "px",
left : this.left + "px",
border : 'none',
'z-index' : 1,
'background-color' : this.bgColor
};
/* To support the width and height */
if (this.layoutType == 'fixed') {
layerStyle.overflow = 'auto';
}
var pageStyle = {
'padding' : this.padding + 'px'
};
var html = h.DIV ( {
id : this.id,
style : layerStyle
}, h.DIV ( {
id : this.id + '_page',
style : pageStyle
}));
return html;
},
init : function() {
this._pageNode = document.getElementById (this.id + '_page');
this.initOld ();
if (this.contentId) {
var content = document.getElementById (this.contentId);
if (content) {
this.setHTML (content);
}
}
else if(this.content) {
this.setHTML(this.content);
delete this.content;
}
var connect = MochiKit.Signal.connect;
if (this.layoutType.toLowerCase () == 'client') {
connect (window, 'onresize', this, '_doLayout');
}
this._doLayout ();
},
/* TODO: fix the layout (fitreport) to behave like XIR2 */
_doLayout : function() {
var layout = this.layoutType.toLowerCase ();
if ('client' == layout) {
this.css.width = '100%';
this.css.height = '100%';
} else if ('fitreport' == layout) {
this.css.width = '100%';
this.css.height = '100%';
} else { /* fixed layout */
if(this.width != null && this.width.length > 0) {
if(this.width.indexOf("px") > 0 || this.width.indexOf("%") > 0)
this.css.width = this.width;
else
this.css.width = this.width + 'px';
}
if(this.height != null && this.height.length > 0) {
if(this.height.indexOf("px") > 0 || this.height.indexOf("%") > 0)
this.css.height = this.height;
else
this.css.height = this.height + 'px';
}
}
var rptProcessing = this._reportProcessing;
if (rptProcessing && rptProcessing.layer) {
rptProcessing.center ();
}
},
addChild : function(widget) {
if (widget.widgetType == 'ReportProcessingUI') {
this._reportProcessing = widget;
}
}
};
/**
* FlexPromptPage constructor
*
* @param kwArgs.id [String] DOM node id
* @param kwArgs.contentId [String] DOM node id of report page content container
* @param kwArgs.bgColor [String] Background color of the page
* @param kwArgs.width [Int] Page content's width in pixels
* @param kwArgs.height [Int] Page content's height in pixels
* @param kwArgs.topMargin [Int] Top margin of report page in pixels
* @param kwArgs.rightMargin [Int] Right margin of report page in pixels
* @param kwArgs.bottomMargin [Int] Bottom margin of report page in pixels
* @param kwArgs.leftMargin [Int] Left margin of report page in pixels
*/
bobj.crv.newFlexPromptPage = function(kwArgs) {
kwArgs = MochiKit.Base.update({
id: bobj.uniqueId(),
layoutType: 'fixed',
width: 800,
height: 600,
padding: 5,
top: 0,
left: 0
}, kwArgs);
var o = newWidget(kwArgs.id);
o.widgetType = 'FlexPromptPage';
o._reportProcessing = null;
// Update instance with constructor arguments
bobj.fillIn(o, kwArgs);
// Update instance with member functions
o.initOld = o.init;
MochiKit.Base.update(o, bobj.crv.FlexPromptPage);
window[o.id] = o;
return o;
};
bobj.crv.FlexPromptPage = {
/**
* Overrides parent. Does nothing because the swf content will replace the DIV later
*
* @param content [String|DOM Node] Html or Node to use as report page content
*/
setHTML : MochiKit.Base.noop,
getHTML : function() {
var isBorderBoxModel = bobj.isBorderBoxModel ();
var pageOuterHeight = this.height + this.topMargin + this.bottomMargin;
var pageOuterWidth = this.width + this.leftMargin + this.rightMargin;
var contentHeight = isBorderBoxModel ? pageOuterHeight : this.height;
var contentWidth = isBorderBoxModel ? pageOuterWidth : this.width;
var useSize = this.layoutType.toLowerCase () == bobj.crv.Viewer.LayoutTypes.FIXED;
var layerStyle = {
position : 'relative',
width : useSize ? contentWidth + 'px' : '100%',
height : useSize ? contentHeight + 'px' : '100%',
top : this.top + "px",
left : this.left + "px",
border : 'none',
'z-index' : 1,
'background-color' : this.bgColor
};
var pageStyle = {
'padding': this.padding + 'px',
position: 'absolute' // Must be absolute to avoid double initialization in firefox ADAPT01260507
};
bobj.crv.params.ViewerFlexParameterAdapter.setViewerLayoutType (this.id, this.layoutType);
var h = bobj.html;
return h.DIV ( {
id : this.id,
style : layerStyle
}, h.DIV ( {
id : this.id + '_page',
style : pageStyle
}, h.DIV ( {
id : this.contentId
})));
},
init : function() {
var connect = MochiKit.Signal.connect;
if (this.layoutType.toLowerCase () == 'client') {
connect (window, 'onresize', this, '_doLayout');
}
this._doLayout ();
},
_doLayout : function() {
var rptProcessing = this._reportProcessing;
if (rptProcessing && rptProcessing.layer) {
rptProcessing.center ();
}
},
addChild : function(widget) {
if (widget.widgetType == 'ReportProcessingUI') {
this._reportProcessing = widget;
}
}
};