; (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);