;
(function ($) {
/**
* 各种预览方式在浏览器中展示对象的基类
* @abstract
* @class FR.BasePane
* @extends FR.Widget
*/
FR.BasePane = FR.extend(FR.Widget, {
type: "basepane",
zoom: 1.0,
_defaultConfig: function () {
return $.extend(FR.BasePane.superclass._defaultConfig.apply(this, arguments), {
});
},
_init: function () {
FR.BasePane.superclass._init.apply(this, arguments);
},
/**
* 根据报表所在窗体的宽度和高度自适应的放大和缩小表内容
*/
autoScale: function () {
if (window != top && this.$contentPane && this.options.autoScale) { // denny:
// 说明是iframe集成
var $contentDiv = $('.pageContentDIV', this.$contentPane);
if ($contentDiv) {
// var bHeight = window.document.body.scrollHeight;
// var dHeight = window.document.documentElement.scrollHeight;
var height = $contentDiv.height();
// var bWidth = window.document.body.scrollWidth;
// var dWidth = window.document.documentElement.scrollWidth;
var width = $contentDiv.width();
var iframe_height = $(window.document).height();
var iframe_width = $(window.document).width();
this.scale(iframe_height / height);
}
}
},
/**
* 缩放报表页面
*
* @example
* contentPane.scale('+');//放大
* contentPane.scale(1.5);//縮放到150%
*
* @param {'+'/'-'/Number} 按照指定的参数进行缩放
*/
scale: (function () {
// ["25%", "50%", "75%", "100%", "120%", "150%", "200%"]
var zooms = [0.25, 0.5, 0.75, 1.0, 1.2, 1.5, 2.0];
return function (zoom) {
if (zoom === '+') {
for (var i = 0, len = zooms.length; i < len; i++) {
if (zooms[i] > this.zoom) {
return this.scale(zooms[i]);
}
}
if (i == zooms.length) {
return this.scale(zooms[zooms.length - 1]);
}
} else if (zoom === '-') {
for (var i = (zooms.length - 1); i >= 0; i--) {
if (zooms[i] < this.zoom) {
return this.scale(zooms[i]);
}
}
if (i < 0) {
return this.scale(zooms[0]);
}
} else if (typeof zoom == 'number') {
if (this.$contentPane) {
var $contentDiv = $('.pageContentDIV', this.$contentPane);
if (FR.Browser.r.gecko) {
$contentDiv.css('-moz-transform', 'scale(' + zoom + ','
+ zoom + ')');
$contentDiv.css('-moz-transform-origin', 'top left');
} else if (FR.Browser.r.webkit) {
$contentDiv.css('-webkit-transform', 'scale(' + zoom
+ ',' + zoom + ')');
$contentDiv.css('-webkit-transform-origin', 'top left');
} else if (FR.Browser.r.opera) {
$contentDiv.css('-o-transform', 'scale(' + zoom + ','
+ zoom + ')');
$contentDiv.css('-o-transform-origin', 'top left');
} else {
$contentDiv.css('zoom', zoom);
}
this.zoom = zoom;
this.fireEvent("zoomchanged");
}
} else {
return this.zoom;
}
}
})(),
/**
* 根据配置文件加载ReportPane。
* 如果有参数,就加载ParameterPane + ContentPane,如果没有参数则加载ContentPane
* @param options 配置
* @protected
*/
loadReportPane: function (options) {
this.fireEvent(FR.Events.INIT);
options = options || {};
options.param = $.extend({
showType: 1
}, options.param); // 默认不显示参数面板,showType为1:embed
var items = [];
if (options.param.html) {
this.parameterEl = this._createFormParameterPane(options, items);
}
this.$contentPane = this._createContentPane(options.sheets,
options.browserbg, options.$paraContainer);
items.push({
region: 'center',
el: this.$contentPane
});
// alex:设置布局为BorderLayout
this._doReportPaneLayout(items, options);
// james:初始化ContentPane的一些事件,目前主要是Tab的一些切换操作内容
this.initContentPane();
// 最后loadContentPane
if (this.parameterEl == null) {
this.loadContentPane();
} else if (options.param.delay === false) {
this.parameterCommit();
}
this.delay = options.param.delay;
},
_doReportPaneLayout: function (items, options) {
var self = this;
var borderLayout = new FR.BorderLayout({
items: items,
renderEl: this.options.renderEl
});
$(window).bind("resize", function () {
if (self.resizeid != null) {
clearTimeout(self.resizeid);
self.resizeid = null;
}
self.resizeid = setTimeout(function () {
if (options.$paraContainer) {
options.$paraContainer.width = document.body.offsetWidth;
}
var paramWidget = borderLayout.getWidgetByName(options.alignLayoutName);
if (paramWidget) {
paramWidget.element.css('width', options.param.width);
self.addParaPaneScrollBar(options.$paraContainer, paramWidget.element, options.param.height, self.scrollHeight);
}
borderLayout.doLayout();
}, 200);
});
var paramWidget = borderLayout.getWidgetByName(options.alignLayoutName);
if (paramWidget) {
this.addParaPaneScrollBar(options.$paraContainer, paramWidget.element, options.param.height, this.scrollHeight);
}
options.onCollapse = function (isCollapsed, layoutName, paraHeight) {
borderLayout.getWidgetByName(layoutName).setVisible(!isCollapsed);
borderLayout.setRegionWH('north', paraHeight);
borderLayout.doLayout();
};
options.onCalculate = function (maxHeight, collapseHeight, $container) {
options.param.height = maxHeight;
$container.height(maxHeight + collapseHeight);
borderLayout.doLayout();
};
borderLayout.doLayout();
},
_createContentPane: function (sheetsO, browserbg, $paraContainer) {
sheetsO = sheetsO || [];
var $contentPane = $("div.content-container");
if ($contentPane.length !== 1) {
$contentPane = $("<div id='content-container'>")
.appendTo(this.element).addClass("content-container");
}
$contentPane.css({
overflow: 'hidden'
});
if (sheetsO && sheetsO.length > 1) {
this._initSheetTabPane($contentPane, sheetsO);
} else {// 普通的单Sheet,就不需要用tabs啦
// alex: overflow:auto 以显示滚动条查看所有报表内容
// p: '0px solid #97A5B0'我改成了0px,这样既去掉了上边框,也能够显示滚动条了.
$contentPane.css("overflow", "auto").css('border-top', '0px');
}
// 画网页背景
// 为使背景固定,对不同浏览器使用不同策略
if (browserbg.background != null) {
if (FR.Browser.isIE()) {
$contentPane.css('background', browserbg.background + " fixed");
if (FR.Browser.isIE6()
&& $paraContainer) {
$contentPane.css('background-position', '0px '
+ $paraContainer.height()
+ 'px 0px 0px');
}
} else {
$contentPane.css('background', browserbg.background);
}
}
return $contentPane;
},
addParaPaneScrollBar:function (container,mover,top,height){
if(container){
container.hScrollPane({
mover:mover, //指定container对象下的哪个元素需要滚动位置 | 必传项;
showArrow:false, //指定是否显示左右箭头,默认不显示 | 可选项;
top:top, //滚动条所在的top位置
height:height,//滚动条的高度
//moverW:function(){return $(".press").width();}(), //传入水平滚动对象的长度值,不传入的话默认直接获取mover的宽度值 | 可选项;
//handleMinWidth:100,//指定handle的最小宽度,要固定handle的宽度请在css中设定handle的width属性(如 width:28px!important;),不传入则不设定最小宽度 | 可选项;
dragable:false, //指定是否要支持拖动效果,默认可以拖动 | 可选项;
easing:false, //滚动是否需要滑动效果,默认有滑动效果 | 可选项;
// handleCssAlter:"draghandlealter", //指定拖动鼠标时滚动条的样式,不传入该参数则没有变化效果 | 可选项;
mousewheel:{bind:false,moveLength:500} //mousewheel: bind->'true',绑定mousewheel事件; ->'false',不绑定mousewheel事件;moveLength是指定鼠标滚动一次移动的距离,默认值:{bind:true,moveLength:300} | 可选项;
});
}
},
/**
* 展示页面设置的对话框
* @param o 对话框的配置
*/
showPageSetupDialog: function (o) {
o = o || {};
o.width = o.width || 390;
o.height = o.height || 295;
o.title = FR.i18nText("PageSetup-Page_Setup");
var fontsize = 12, label_color = '#4C4C4C', fontfamily = "simsun", sessionID = o.sessionID || '', reportIndex = o.reportIndex,
widgetPadding = 10, northHeight = 25, mediumRightPadding = 162, rh = 21, radioRightPadding = 234;
var paperSize_items = [
{text: "Letter", value: "Letter"},
{text: "A2", value: "A2"},
{text: "Legal", value: "Legal"},
{text: "A0", value: "A0"},
{text: "A1", value: "A1"},
{text: "Note", value: "Note"},
{text: "A3", value: "A3"},
{text: "A4", value: "A4"},
{text: "A5", value: "A5"},
{text: "A6", value: "A6"},
{text: "A7", value: "A7"},
{text: "A8", value: "A8"},
{text: "B0", value: "B0"},
{text: "B1", value: "B1"},
{text: "B2", value: "B2"},
{text: "B3", value: "B3"},
{text: "B4", value: "B4"},
{text: "B5", value: "B5"},
{text: "Tabloid", value: "Tabloid"},
{text: "Ledger", value: "Ledger"},
{text: "Halfletter", value: "Halfletter"}
];
var tableLayout = FR.createWidget({
type: 'tablelayout',
columnSize: [72, 16, 302],
rowSize: [rh, 52, 52],
vgap: 20,
items: [
[
{el: {type: 'label', value: FR.i18nText("FR-Engine-PageSetup_Orientation"), fontsize: fontsize, verticalcenter: true, textalign: 'right', fontfamily: fontfamily}},
{el: $('<div>')},
{el: {type: 'border', items: [
{region: 'center', el: {type: 'radio', widgetName: 'portrait', text: FR.i18nText("FR-Engine-PageSetup_Portrait"), fontSize: fontsize, listeners: [
{
eventName: 'statechange',
action: function () {
if (this.getValue()) {
var radio_landscape = tableLayout.getWidgetByName("landscape");
if (radio_landscape) {
radio_landscape.setValue(false);
}
}
}
}
]}},
{region: 'east', width: radioRightPadding, el: {type: 'radio', widgetName: 'landscape', text: FR.i18nText("FR-Engine-PageSetup_Landscape"), fontSize: fontsize,
listeners: [
{
eventName: 'statechange',
action: function () {
if (this.getValue()) {
var radio_portrait = tableLayout.getWidgetByName("portrait");
if (radio_portrait) {
radio_portrait.setValue(false);
}
}
}
}
]}}
]}}
],
[
{el: {type: 'label', value: FR.i18nText("FR-Engine-PageSetup_Paper_Size"), fontsize: fontsize, textalign: 'right', fontfamily: fontfamily}},
{el: $('<div>')},
{el: {type: 'border', items: [
{region: 'north', height: rh, el: {type: 'border', items: [
{region: 'center', el: {type: 'radio', widgetName: 'predefined', text: FR.i18nText("FR-Engine-PageSetup_Predefined"), fontSize: fontsize, listeners: [
{eventName: 'afteredit', action: function () {
var value = this.getValue();
var tableWidget = tableLayout.getWidgetByName('papaersize_setup');
if (value === false) {
tableWidget.setRowVisible(0, false);
} else {
tableWidget.setRowVisible(0, true);
}
tableWidget.doLayout();
}},
{eventName: 'statechange', action: function () {
var tableWidget = tableLayout.getWidgetByName('papaersize_setup');
if (this.getValue()) {
tableWidget.setRowVisible(1, false);
var radio_customed = tableLayout.getWidgetByName("customed");
if (radio_customed) {
radio_customed.setValue(false);
}
} else {
tableWidget.setRowVisible(1, true);
}
tableWidget.doLayout();
}}
]}},
{region: 'east', width: radioRightPadding, el: {type: 'radio', widgetName: 'customed', text: FR.i18nText("FR-Engine_Custom"), fontSize: fontsize,
listeners: [
{eventName: 'afteredit', action: function () {
var value = this.getValue();
var tableWidget = tableLayout.getWidgetByName('papaersize_setup');
if (value === false) {
tableWidget.setRowVisible(1, false);
} else {
tableWidget.setRowVisible(1, true);
}
tableWidget.doLayout();
}},
{eventName: 'statechange', action: function () {
var tableWidget = tableLayout.getWidgetByName('papaersize_setup');
if (this.getValue()) {
tableWidget.setRowVisible(0, false);
var radio_predefined = tableLayout.getWidgetByName("predefined");
if (radio_predefined) {
radio_predefined.setValue(false);
}
} else {
tableWidget.setRowVisible(0, true);
}
tableWidget.doLayout();
}}
]}}
]}},
{region: 'center', height: widgetPadding, el: $('<div>')},
{region: 'south', height: rh, el: {type: 'tablelayout', widgetName: 'papaersize_setup', columnSize: [302], rowSize: [rh, rh], vgap: 0, items: [
[
{el: {type: 'border', items: [
{region: 'center', el: {type: 'combo', widgetName: 'paperSize', allowBlank: false, directEdit: true, items: paperSize_items, fontSize: fontsize,
listeners: [
{eventName: 'afteredit', action: function () {
FR.ajax({
url: FR.servletURL,
type: 'POST',
data: {
op: 'fr_utils',
cmd: 'utils_papersize',
paperSize: this.getValue()
},
complete: function (res) {
var paper = FR.jsonDecode(res.responseText);
tableLayout.getWidgetByName("user_width").setValue(paper.width);
tableLayout.getWidgetByName("user_height").setValue(paper.height);
tableLayout.getWidgetByName("predefined").setValue(true);
tableLayout.getWidgetByName("customed").reset();
}
});
}}
]}},
{region: 'east', width: mediumRightPadding, el: $('<div>')}
]}}
],
[
{el: {type: 'tablelayout', columnSize: [12, 12, 60, 5, 21, 14, 12, 12, 60, 5, 21, 68], rowSize: [rh], vgap: 0, items: [
[
{el: {type: 'label', value: FR.i18nText("FR-Engine_Width"), fontsize: fontsize}},
{el: $('<div>')},
{el: {type: 'number', widgetName: 'user_width', fontSize: fontsize}},
{el: $('<div>')},
{el: {type: 'label', value: "mm", fontsize: fontsize, color: label_color, fontfamily:'tahoma'}},
{el: $('<div>')},
{el: {type: 'label', value: FR.i18nText("FR-Engine_Height"), fontsize: fontsize}},
{el: $('<div>')},
{el: {type: 'number', widgetName: 'user_height', fontSize: fontsize}},
{el: $('<div>')},
{el: {type: 'label', value: "mm", fontsize: fontsize, color: label_color, fontfamily:'tahoma'}},
{el: $('<div>')}
]
]}}
]
]}}
]}}
],
[
{el: {type: 'label', value: FR.i18nText("FR-Engine-PageSetup_Margin"), fontsize: fontsize, textalign: 'right', fontfamily: fontfamily}},
{el: $('<div>')},
{el: {type: 'tablelayout', columnSize: [12, 12, 60, 5, 21, 14, 12, 12, 60, 5, 21, 68], rowSize: [rh, rh], vgap: 10, items: [
[
{el: {type: 'label', value: FR.i18nText("FR-Engine_Top"), fontsize: fontsize}},
{el: $('<div>')},
{el: {type: 'number', widgetName: 'margin_top', fontSize: fontsize}},
{el: $('<div>')},
{el: {type: 'label', value: "mm", fontsize: fontsize, color: label_color, fontfamily:'tahoma'}},
{el: $('<div>')},
{el: {type: 'label', value: FR.i18nText("FR-Engine_Bottom"), fontsize: fontsize}},
{el: $('<div>')},
{el: {type: 'number', widgetName: 'margin_bottom', fontSize: fontsize}},
{el: $('<div>')},
{el: {type: 'label', value: "mm", fontsize: fontsize, color: label_color, fontfamily:'tahoma'}},
{el: $('<div>')}
],
[
{el: {type: 'label', value: FR.i18nText("FR-Engine_Left"), fontsize: fontsize}},
{el: $('<div>')},
{el: {type: 'number', widgetName: 'margin_left', fontSize: fontsize}},
{el: $('<div>')},
{el: {type: 'label', value: "mm", fontsize: fontsize, color: label_color,fontfamily:'tahoma'}},
{el: $('<div>')},
{el: {type: 'label', value: FR.i18nText("FR-Engine_Right"), fontsize: fontsize}},
{el: $('<div>')},
{el: {type: 'number', widgetName: 'margin_right', fontSize: fontsize}},
{el: $('<div>')},
{el: {type: 'label', value: "mm", fontsize: fontsize, color: label_color,fontfamily:'tahoma'}},
{el: $('<div>')}
]
]}}
]
]
});
var widget_predefined = tableLayout.getWidgetByName('predefined');
var widget_customed = tableLayout.getWidgetByName('customed');
var widget_portrait = tableLayout.getWidgetByName('portrait');
var widget_landscape = tableLayout.getWidgetByName('landscape');
var widget_paperSize = tableLayout.getWidgetByName('paperSize');
var widget_user_width = tableLayout.getWidgetByName('user_width');
var widget_user_height = tableLayout.getWidgetByName('user_height');
var widget_margin_top = tableLayout.getWidgetByName('margin_top');
var widget_margin_bottom = tableLayout.getWidgetByName('margin_bottom');
var widget_margin_left = tableLayout.getWidgetByName('margin_left');
var widget_margin_right = tableLayout.getWidgetByName('margin_right');
// 异步获取页面设置的信息,给控件赋默认值
FR.ajax({
url: FR.servletURL,
type: 'POST',
data: {
op: 'fr_dialog',
cmd: 'read_page_setup_tpl',
sessionID: sessionID,
reportIndex: reportIndex
},
complete: function (res, status) {
var result = FR.jsonDecode(res.responseText);
if (result != null) {
widget_predefined.setValue(result.predefined);
if (widget_predefined.getValue()) {
tableLayout.getWidgetByName('papaersize_setup').setRowVisible(0, true);
tableLayout.getWidgetByName('papaersize_setup').setRowVisible(1, false);
} else {
tableLayout.getWidgetByName('papaersize_setup').setRowVisible(0, false);
tableLayout.getWidgetByName('papaersize_setup').setRowVisible(1, true);
}
tableLayout.getWidgetByName('papaersize_setup').doLayout();
widget_customed.setValue(result.customed);
widget_portrait.setValue(result.portrait);
widget_landscape.setValue(result.landscape);
widget_paperSize.setValue(result.paperSize);
widget_user_width.setValue(result.user_width);
widget_user_height.setValue(result.user_height);
widget_margin_top.setValue(result.margin_top);
widget_margin_bottom.setValue(result.margin_bottom);
widget_margin_left.setValue(result.margin_left);
widget_margin_right.setValue(result.margin_right);
}
}
});
o.onOK = function () {
FR.ajax({
url: FR.servletURL,
type: 'POST',
data: {
op: 'fr_dialog',
cmd: 'change_page_setup',
sessionID: sessionID,
reportIndex: reportIndex,
predefined: widget_predefined.getValue(),
customed: widget_customed.getValue(),
portrait: widget_portrait.getValue(),
landscape: widget_landscape.getValue(),
paperSize: widget_paperSize.getValue(),
user_width: widget_user_width.getValue(),
user_height: widget_user_height.getValue(),
margin_top: widget_margin_top.getValue(),
margin_bottom: widget_margin_bottom.getValue(),
margin_left: widget_margin_left.getValue(),
margin_right: widget_margin_right.getValue()
},
complete: function () {
FR.closeDialog();
}
});
};
o.contentWidget = {
type: 'border',
items: [
{region: 'north', el: $('<div>'), height: northHeight},
{region: 'center', el: tableLayout.element}
]
};
FR.showUpdateDialog(o);
},
_sheetPositionPane: function () {
var result;
var sheetPosition;
FR.ajax({
url: FR.servletURL,
type: 'POST',
async: false,
data: {
op: 'fr_write',
cmd: 'sheet_position',
sessionID: FR.SessionMgr.getSessionID(),
_: new Date().getTime()
},
timeout: 5000,
complete: function (res, status) {
result = res.responseText;
}
});
switch (result) {
case "1":
sheetPosition = "top";
break;
case "3":
sheetPosition = "bottom";
break;
default :
sheetPosition = "bottom";
break;
}
return sheetPosition;
},
_initSheetTabPane: function ($contentPane, sheetsO) {
var sheetPosition = this._sheetPositionPane();
var writeTab = new FR.TabPane({
items: sheetsO,
tabPosition: sheetPosition,
renderEl: $contentPane
});
$contentPane.data("TabPane", writeTab);
},
_initParameterFormPane: function () {
return $("<div>").appendTo(this.element).addClass("parameter-container");
},
_createFormParameterPane: function (options, layout) {
var collapsePaneHeight = 8;
options.alignLayoutName = '__layout4align__';
var self = this, paramO = options.param;
var config = paramO.html;
self.scrollHeight = 6;
//这边maxWidth 7.1的时候被改成了paramO.width, 导致web端的居右居中效果很奇怪
var maxWidth = 0, maxHeight = 0;
for (var i = 0; i < config.items.length; i++) {
var item = config.items[i];
maxWidth = Math.max(maxWidth, item.x + item.width);
maxHeight = Math.max(maxHeight, item.y + item.height);
}
var deltaHeight = paramO.height - maxHeight;
var formLayout;
var barHeight = paramO.width > document.body.offsetWidth ? self.scrollHeight : 0;
var $paraContainer = $("<div class='parameter-container' style='overflow: auto;'>").css({
'height': paramO.height + barHeight + collapsePaneHeight,
'width': document.body.offsetWidth
});
options.$paraContainer = $paraContainer;
config.onCalculate = function (currentMaxHeight) {
if ($.isFunction(options.onCalculate)) {
options.onCalculate.call(this, currentMaxHeight + deltaHeight, collapsePaneHeight, $paraContainer);
}
};
var $expandEl = $("<div class='parameter-container-collapseimg-up' style='cursor: pointer'></div>").click(function () {
var resizeTime = new Date();
self.lastResizeTime = resizeTime;
setTimeout(function () {
if (resizeTime == self.lastResizeTime) {
delete self.lastResizeTime;
$paraContainer.animate({
height: (self.hasCollapsed ? "+=" : "-=") + paramO.height
}, "fast", function () {
self.hasCollapsed = !self.hasCollapsed;
$expandEl.switchClass('parameter-container-collapseimg-down', 'parameter-container-collapseimg-up');
if ($.isFunction(options.onCollapse)) {
options.onCollapse.call(this, self.hasCollapsed, options.alignLayoutName, $paraContainer.height());
self.doAfterCollapse();
}
});
}}, 222);
});
var alignment = 'left';
switch (paramO.alignLocation) {
case 0 :
alignment = 'left';
break;
case 1 :
alignment = 'center';
break;
case 2 :
alignment = 'right';
break;
default :
alignment = 'left';
}
var $center = $('<div class="pmeter-container"></div>').css({
"height": paramO.height,
"width": paramO.width
});
//定义一下用来滚动的对象
var paraConfig = {
renderEl: $paraContainer,
type: 'border',
items: [
{region: 'south', height: collapsePaneHeight, el: {
type: 'horizontal',
items: [
{el: $expandEl, width: 120}
]
}},
{
region: 'center', el: {
type: 'horizontal',
width: paramO.width,
widgetName: options.alignLayoutName,
alignment: alignment,
items: [
{el: $center, width: maxWidth}
]
}
}
]
};
this._setBackground(paramO, $paraContainer);
if (paramO.showType === 1) {
layout.push({
region: 'north',
el: paraConfig,
height: paramO.height + collapsePaneHeight + barHeight
});
}
if (paramO.showType === 0) {
$paraContainer.css({
position: "absolute",
width: paramO.width,
height: paramO.height
}).appendTo("body");
config.listeners = [
{
once: true,
eventName: 'submitcomplete',
action: function () {
FR.closeDialog();
}
}
];
config.renderEl = $paraContainer;
formLayout = new FR.contentForm(config);
}else{
config.renderEl = $center;
config.container = $paraContainer;
formLayout = new FR.contentForm(config);
}
if (paramO.showType === 0) {
formLayout.doLayout();
FR.showDialog({
title: paramO.paramWindowTitle,
width: paramO.width + 20,
height: paramO.height + 45,
contentHtml: $paraContainer
});
}
return formLayout;
},
_setBackground: function (paramO, $dom) {
var bg = paramO.parambg;
if (bg != null) {
FR.setBackground($dom, bg);
}
},
doAfterCollapse: function () {
},
afterLoad : function() {
},
/**
* 提交参数并加载报表主体内容
*
* @example
* contentPane.parameterCommit();
*
* @param {Object} reloadOthers 配置
*/
parameterCommit: function (reloadOthers) {
if ($.isFunction(this.parameterEl.formSubmit)) {
this.parameterEl.formSubmit({
url: FR.servletURL
+ "?op=fr_dialog&cmd=parameters_d&sessionID="
+ _g().currentSessionID,
callback: function () {
_g().loadContentPane(reloadOthers);
}
});
}
},
/**
* 改变在鼠标经过或者点击报表行时行的颜色
*
* @example
* contentPane.makeHighlight('red', 'click');
*
* @param {String} color 需要变换成的颜色
* @param {'click'/'mouseover'} [op='click'] 鼠标动作
* @param deep 是否是加在td上面
*/
makeHighlight: function (color, op, deep) {
var self = this;
if (!op) {
op = 'click';
}
var container = $('div.content-container');
var tr = $("tr", container);
var changeTds = function(currentTR, lastTDColors) {
var tds = currentTR.children();
for (var i=0; i<tds.length; i++) {
var td = tds.eq(i);
lastTDColors.push(td[0].style.backgroundColor);
td[0].style.backgroundColor = color;
}
};
var highLightFun = function (e) {
if (!$(e.target).is("td")) {
return;
}
var currentTR = $(e.target).parent();
if ($(e.target).attr("hv")) {
// marro:如果是格子套格子的,PageCellWriter.getValueWrapper
currentTR = currentTR.closest("td").parent();
}
if (lastSelectedTR != null) {
if (deep === true) {
var tds = lastSelectedTR.children();
for (var i=0; i<tds.length; i++) {
var td = tds.eq(i);
td[0].style.backgroundColor = lastTDColors[i] == "" ? "White" : lastTDColors[i];
}
lastTDColors.length = 0;
if (currentTR[0] != lastSelectedTR[0]) {
changeTds(currentTR, lastTDColors);
lastSelectedTR = currentTR;
return;
}
} else {
lastSelectedTR[0].style.backgroundColor = 'White';
if (currentTR[0] != lastSelectedTR[0]) {
currentTR[0].style.backgroundColor = (currentTR[0].style.backgroundColor == color
? 'White'
: color);
lastSelectedTR = currentTR;
return;
}
}
lastSelectedTR = null;
return;
}
lastSelectedTR = currentTR;
if (deep === true) {
changeTds(currentTR, lastTDColors);
} else {
currentTR[0].style.backgroundColor = (currentTR[0].style.backgroundColor == color
? 'White'
: color);
}
};
var lastSelectedTR = null;
var lastTDColors = [];
var action = op.indexOf('over') != -1 ? "mouseover" : "click";
if (window.highfun != null) {
container.unbind(action, window.highfun);
}
window.highfun = function(e) {
highLightFun(e);
};
container.bind(action, window.highfun);
},
initContentPane: function () {
var events = FR.Report.Plugin.Panel.Events;
if ($.isArray(events)) {
for (var i = 0, len = events.length; i < len; i ++) {
var evt = events[i];
this.on(evt.name, evt.action.createDelegate(this));
}
}
},
pdfPrint:function (isPopup) {
if (this.fireEvent(FR.Events.BPDFPRINT) === false) {
return;
}
if (FR.Browser.isIE()) {
FR.doPDFPrint(this.currentSessionID, isPopup);
} else {
// james:pdfPrint需要用format=pdfPrint,服务器才能识别为是打印状态啊
window.open(FR.servletURL + "?op=fr_pdfprint&cmd=native&sessionID=" + this.currentSessionID, "_blank");
this.fireEvent(FR.Events.APDFPRINT);
}
}
});
})(jQuery);