相关文件
表单工具提供了开放的客户化文件,用户可结合相应场景需求,添加客户化效果。
帮助提示文件
文件介绍
路径:APPPATH/mis2/custom/vrsr/effects/help.jsp。
弹出层形式的帮助按钮,固定打开该页面。
设置帮助按钮时,帮助内容设置为[page.html#title]的格式,其中page.html是帮助信息页面,title是页面中的二级标题。
实现方式
1)在默认地址处获取帮助信息。
2)通过[title]指定的标题,从帮助信息中获取需要显示的内容。
该接口内容允许做客户化修改,可以自定义任意格式的帮助内容,同时也可以自定义获取帮助信息的方式。
客户化修改示例
1)定义帮助内容获取格式为JSON格式,{page:"myTest.html", "keywords": "关键字"}
2)修改APPPATH/mis2/custom/vrsr/effects/help.jsp内容,解析上述定义JSON格式数据,从myTest.html中读取内容,并用keywords找到页面内容中的关键字,对关键字进行加粗显示等等。
添加交互效果类型
文件:APPPATH/mis2/custom/flexdesigner/designer/config/customEffect.xml
用于定义客户化交互增强控件类型。
示例:
<?xml version="1.0" encoding="utf-8"?>
<root name="root">
<node type="customButton" name="客户化按钮">
<node type="testCustomButton" name="测试客户化按钮" img="/assets/colPiledPercent.gif" desc="测试客户化按钮"/>
</node>
</root>
即就是定义了一个“客户化按钮”的控件分组,且该分组下有“测试客户化按钮”类型的控件:
增加交互效果
路径:APPPATH/mis2/custom/flexdesigner/designer/config/customEffect.json
该文件用于定义客户化交互增强控件的详细配置界面。
示例:
{
"type": "testCustomButton",
"propertiesAndUI": [
{
"propName": "name",
"propValue": "按钮名称",
"defaultValue": "默认值",
"UIText": "按钮名称",
"TextWidth": 100,
"TextHeight": 25,
"showUI": "TextUICP",
"UIWidth": 100,
"UIHeight": 25,
"validate": "/^[a-zA-Z_][a-zA-Z0-9_]*$/",
"validateMessage": "格式不正确!此属性值不能为空,由字母、数字、下划线组成,且第一个字符不能为数字。"
},
{
"propName": "value",
"propValue": "",
"defaultValue": "",
"UIText": "按钮值",
"TextWidth": 100,
"TextHeight": 25,
"showUI": "TextUICP",
"UIWidth": 100,
"UIHeight": 25,
"validate": "",
"validateMessage": ""
}
]
}
这块代码定义了客户化按钮的设置页面信息。其中type为testCustomButton,是与mis2/custom/flexdesigner/designer/config/customEffect.xml中定义的增强控件类型一致的。
每个控件又若干个“属性”构成,每个属性中定义了属性名(propName)、属性值(propValue)、默认值(defaultValue)、UI等信息组成。具体的属性配置说明请参考【附表1:交互增强控件配置属性表】。
此时,选择“测试客户化按钮”,进入到交互增强属性设置页面有两个属性:
在此页面进行设置、保存时,会在单元格上生成增强控件的配置信息:
{
effectType:"testCustomButton",
effectDetail:{
name: "默认值",
value: ""
}
}
其中,name和value是设置界面定义的两个属性。
客户化交互效果处理接口
mis2/custom/vrsr/effects/class/CustomReportEffectGenerator.class
mis2/custom/vrsr/effects/js/custom_effect.js
以上内容定义了客户化增强控件的属性,更重要的内容是在页面展现时,需要对控件的设置进行解析处理。
处理接口分为前端和后端。
后端接口是.class文件,改类名称固定,且继承自AbstractReportEffectGenerator,由系统默认的交互增强处理类自动调用(如果存在的话)。代码内容为:
public class CustomReportEffectGenerator extends AbstractReportEffectGenerator {
@Override
public IReport generate(IReport ir, Context ctx, Map<String, Object> params) {
// TODO Auto-generated method stub
System.out.println("客户化特效生成器...");
return ir;
}
}
如需对客户自定义的交互增强控件进行解析处理,需要添加代码实现generate方法。此方法中可以获取到报表对象ir、环境变量ctx、以及其他的参数params。
实现流程为:
1)遍历ir的单元格,获取单元格上保存的自交互增强控件信息
IByteMap customMap=normalCell.getCustomPropertiesMap();
String jsonStr=(String)customMap.get(AbstractReportEffectGenerator.EFFECT_KEY);
2)解析交互增强控件设置信息,根据这些信息对报表对象进行修改
略
前端接口是个js文件,名称及路径固定,由系统默认的交互增强前端处理接口自动调用(如果存在的话)。代码内容为:
$.fn.initCustomEffectStyle = function (){
// confirm($(this).attr('id'));
}
如果自定义了交互增强控件,且仅通过实现后台的CustomReportEffectGenerator类并不能达到效果,则需要实现这里的initCustomEffectStyle函数。(通常此文件是需要实现的)
实现流程为:
1)获取前端表格对象
var $table = $(this);
2)对table的元素进行处理
略
交互增强模块涉及到的文件
APPPATH/mis2/flexdesigner/designer/config/specialEffect.xml : 交互增强控件的类型定义文件
APPPATH/mis2/flexdesigner/designer/config/specialEffect.json : 交互增强控件的配置定义文件
APPPATH/mis2/custom/flexdesigner/designer/config/customEffect.xml : 客户自定义交互增强控件的类型定义文件
APPPATH/mis2/custom/flexdesigner/designer/config/customEffect.json : 客户自定义交互增强控件的配置定义文件
APPPATH/gez_report4-1.0.jar : 交互增强模块依赖类库
APPPATH/gez_viewReport_branch-1.0.jar : 交互增强模块依赖类库
APPPATH/gez_effects_branch-1.0.jar : 交互增强模块核心类库
APPPATH/mis2/vrsr/js/vr_effect.js : 交互增强控件WEB端核心处理文件
APPPATH/mis2/custom/vrsr/effects/js/custom_effect.js : 客户自定义交互增强控件WEB端处理文件
APPPATH/mis2/vrsr/effects目录 : 交互增强控件的其他相关文件
APPPATH/mis2/custom/vrsr/effects目录 : 客户自定义交互增强控件的其他相关文件