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
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;
|
|
}
|
|
}
|
|
|
|
};
|