页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

示例说明
      在项目中有时需要对报表中的图片进行局部放大预览,该功能可以通过宏实现,如下图:

...

  1. 在展现定制中,创建一张电子表格分析;
  2. 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面
  3. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为spreadSheetReport;事件为onRender;并把下面宏代码复制到代码区域。

宏类型

类型

对象

事件

ClientSide

spreadSheetReport

onRender

宏代码

代码块
themeEclipse
languagejs
firstline1
linenumberstrue
var eventutil = jsloader.resolve("freequery.lang.eventutil");
function main(spreadsheetReport) {
    var source = spreadsheetReport.shapesMap["图片 1"].parentNode;
    var td = spreadsheetReport.getCell(3,6);
    var dest = document.createElement("div");
    dest.style.height="400px";
    dest.style.width="400px";
    dest.style.overflow ="hidden";
     
    td.appendChild(dest);
    //测试代码
    Amplifier.init(source,dest,5);
}
  
    var Amplifier = {
       //图片源
        source: null,
        //目的地,用来显示放大的效果
        dest: null,
        //放大的倍数,
        scale: 1,
        //初始化函数  source元素里面包含img对象, dest元素是空的
        init: function(source, dest,scale){
            this.source = source;
            this.dest = dest;
            this.scale = scale||2;
            //跟随鼠标移动的红色的框框
            var borderBox = document.createElement("div");
            borderBox.style.height = parseInt(this.source.style.height)/scale+"px";
            borderBox.style.width = parseInt(this.source.style.width)/scale+"px";
            borderBox.style.border = "solid red 1px";
            borderBox.style.position = "relative";
            this.source.appendChild(borderBox);                        //这个时候,放大框位于图片的下方
            //将框移动到图片上
            borderBox.style.top = -parseInt(this.source.style.height)+"px";
            borderBox.style.left = "0px" ;
             
            //放大后的图象
            var destImg = document.createElement('img');
            destImg.style.position = "relative";
            destImg.src = this.source.getElementsByTagName('img')[0].src;
            this.dest.appendChild(destImg);
            //图像的高度和宽度倍增,我发现先要执行this.dest.appendChild(destImg);
            //后再设置height,width才可以生效
            destImg.height = parseInt(this.source.style.height) * scale;
            destImg.width = parseInt(this.source.style.width) * scale;
        
            //对源图片添加onmousemove事件
            //this.source.onmousemove =       
            eventutil.addEventHandler(this.source,"mousemove",function (e){
               /**
               * 这里需要解释一下,ie下event.offsetX,offsetY表示鼠标相对当前事件触发元素左上角的偏移位置,
               * 通过改变borderBox.style.left和borderBox.style.top来改变红色的框框在源图中的位置,而且要
               * 把红色的框框限制在源图内。
               **/
          
            
              if (e.srcElement.nodeName != "IMG" )  //防止红框移动到鼠标位置,但是这样用起来有点卡
                return;
                 
               var offsetx = Amplifier.getEvent(e).offsetX;
               var offsety = Amplifier.getEvent(e).offsetY;
                
                if(offsetx>parseInt(borderBox.style.width)/2 && (parseInt(Amplifier.source.style.width)- offsetx)>parseInt(borderBox.style.width)/2){
                    borderBox.style.left = offsetx - parseInt(borderBox.style.width)/2+"px";
                }
                else if(offsetx<parseInt(borderBox.style.width)/2){
                    borderBox.style.left = "0px";
                }
                else{
                    borderBox.style.left = parseInt(Amplifier.source.style.width) - parseInt(borderBox.style.width)+"px";
                }
                 
                if(offsety>parseInt(borderBox.style.height)/2 && (parseInt(Amplifier.source.style.height)- offsety)>parseInt(borderBox.style.height)/2){
                    borderBox.style.top = -parseInt(Amplifier.source.style.height) + offsety - parseInt(borderBox.style.height)/2+"px";
                }
                else if(offsety<parseInt(borderBox.style.height)/2){
                    borderBox.style.top = -parseInt(Amplifier.source.style.height)+"px";
                }
                else{
                    borderBox.style.top = -parseInt(borderBox.style.height)+"px";
                }
                 
                //改变图片的style.left,style.top就可以精确控制被放大的部分。
                //就是移动放大图片的位置,使其显示应该现显示的部分
                destImg.style.left = - Math.abs(parseInt(borderBox.style.left) * scale+"px");
                destImg.style.top = -(parseInt(Amplifier.source.style.height) - Math.abs(parseInt(borderBox.style.top))) * scale+"px";
            });
         },
        //辅助函数,用来修复ie和ff不同的event模型
        getEvent: function(ev){
        return ev;
      }
         
    };

 

...

1、问题说明

我们在安装部署tomcat的时候,经常需要修改tomcat的启动参数,很多人习惯于直接修改tomcat/bin目录下的 catalina.bat/catalina.sh 文件(或是 startup.bat/startup.sh 文件)。这种方式是不合理的,因为很多时候,我们修改的位置可能不对,造成配置的参数不生效。另外,我们修改之后,过一段时间其他人再接手维护,可能根本不知道修改了哪些地方。

为解决这个问题,我们建议使用tomcat推荐的方法,创建一个新的setenv.bat/setenv.sh文件,来配置tomcat的启动参数。请参考如下步骤。

#!/bin/sh
# catalina.sh
# -----------------------------------------------------------------------------
# Control Script for the CATALINA Server
#
# Environment Variable Prerequisites
#
# Do not set the variables in this script. Instead put them into a script
# setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
#
# -----------------------------------------------------------------------------

2、设置方法

对于Windows系统和Linux系统设置方法不同,分别说明如下。

2.1 Windows系统

1、本地创建一个文本文件,另存为setenv.bat 文件,其内容如下。

代码块
languagepowershell
linenumberstrue
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_51"
set "JRE_HOME=C:\Program Files\Java\jdk1.8.0_51\jre"
set "CATALINA_HOME=d:\smartbi\tomcat"
set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=GBK -Duser.region=CN -Duser.language=zh -Djava.awt.headless=true -Xms8192m -Xmx8192m -XX:MaxPermSize=512m"

2、把该文件setenv.bat,上传到tomcat/bin目录下即可。

2.2 Linux/Unix系统

1、本地创建一个文本文件,另存为setenv.sh 文件,其内容如下。

代码块
languagepowershell
linenumberstrue
export JAVA_HOME="/data/smartbi/jdk1.8.0_45"
export JRE_HOME="/data/smartbi/jdk1.8.0_45/jre"
export CATALINA_HOME="/opt/smartbi/tomcat"
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=GBK -Duser.region=CN -Duser.language=zh -Djava.awt.headless=true -Xms8192m -Xmx8192m -XX:MaxPermSize=512m"

2、把该文件setenv.sh,上传到tomcat/bin目录下。

3、上传到tomcat/bin目录下的setenv.sh文件是文本文件,赋予赋予其“执行”权限;请执行如下命令。

代码块
languagepowershell
linenumberstrue
chmod +x setenv.sh