超级API计划

楼主
我是社区第55902位番薯,欢迎点我头像关注我哦~
当前版本的FR插件开发过程中~让开发者头疼的往往是与FR的耦合问题~很多插件都会大面积的使用到FR的内部代码,这样使得插件跟FR耦合过深,很容易在产品升级,JAR包更新时发生各种不兼容的问题。所以我大胆的想了一个方法~就是开发一个超级API插件~尽可能的把我们需要的FR的代码以功能API的形式封装到插件里面~以后其他插件与FR的耦合~都尽可能通过这个插件~这样开发者就没必要去纠结FR的内部实现了~兼容问题也都由这个插件来维护~

现面向全网番薯和爱好者征集,你觉得需要用到的目前却没有的API~

现面向全网番薯和爱好者征集,你觉得需要用到的目前却没有的API~

现面向全网番薯和爱好者征集,你觉得需要用到的目前却没有的API~

插件上传不上来(总是说我没安装flash,都安装N次了)~我放到我的技术交流群里面了( 367705354)需要的加群下载(加群请带上论坛昵称)~

目前也么得啥API,倒是提供了几个小方法

修改sheet名(可导出)
前端调用:
FR.SPAPI.setSheetName(tag,name);
tag 就是要修改的sheet原名或者sheet编号(从0开始)
name 就是新名字

比如:把sheet2 改名为AAA 调用为 FR.SPAPI.setSheetName( ‘sheet2’, 'AAA');
          把第1个sheet(从0开始)改名为AAA调用为 FR.SPAPI.setSheetName( 1, 'AAA');


后端调用:
com.midas.api.API.setSheetName( Object sheetTag,String newName, String sessionID );
param sheetTag 要修改的sheet名或索引
param newName 新名字
param sessionID 报表sessionID
return 执行结果 JSONObject
适用于分页预览填报预览,不支持跨sheet取数【要连跨sheet取数一起改的话性能太低了】

分页预览修改单元格的值(支持打印导出)
限制:联动单元格运算不会执行(原因是分页预览后台结果里面只有值没有保留联动需要的相关依赖和公式),所有修改哪一个单元格,只会改变那个单元格的值,相关联动单元格的值不会变

调用方法:

FR.SPAPI.setPageCellValue( cell, value )

FR.SPAPI.setPageCellValue( cell, value, pn)
cell    要修改的当前页面上的单元格 比如A2 B5这样的~
value 新值

pn     页码,不传表示修改当前页

报表块CPT滚动

支持以下情况:

无冻结cpt,分页填报预览
冻结行cpt,分页填报预览
表单报表块
冻结行表单报表块
自定义滚动条插件
调用方法:

var spd = 3.5;//滚动的速度,自己调节,不传默认就是3.5

表单中,在对应的报表块控件的初始化事件里面写
FR.SPAPI.autoScroll(this,spd);
cpt模板中在分页预览或填报预览的加载结束事件写
FR.SPAPI.autoScroll(null,spd);

这两个是缺省的调用方法,还可以传递一个滚动到最下面之后的回调函数比如:
var cbk = function(stimer,$tag){         

自定义操作,参数1是定时器序号,参数2是滚动的对象,当一次滚动到最下面时会执行这个方法,如果不传这个方法,默认的就是停止滚动并,回到最上面。
}

补充:回调返回true则滚动会继续执行,返回false则终止滚动
调用方法为:
FR.SPAPI.autoScroll( this, spd, cbk );
FR.SPAPI.autoScroll( null, spd, cbk );

另外值得注意的就是,鼠标悬浮在滚动对象上,将停止滚动,离开将恢复滚动,双击将终止滚动,再次双击将开启滚动(否则不论鼠标悬浮还是离开都不会滚动)

导出防sessiontimeout

该API为纯前端API,调用方法
1.以默认excel的导出形式导出当前报表

FR.SPAPI.exportEx();

2.以xxx的形式导出当前报表 [page sheet simple excel]都是excel
FR.SPAPI.exportEx("xxx");

3.自定义文件名
FR.SPAPI.exportEx("xxx","文件名");

4.导出指定结果报表,用于某些特殊场景(比如子表触发主表导出)

FR.SPAPI.exportEx("xxx","文件名",sessionID);

扩展:获取当前sessionID_g().currentSessionID;




                                    

编辑于 2018-6-6 14:27  
分享扩散:

沙发
发表于 2018-6-6 14:34:14
板凳
发表于 2018-6-6 14:56:51
哇塞,师傅好厉害
地板
发表于 2018-6-6 15:26:25
5楼
发表于 2018-6-6 15:51:15
6楼
发表于 2018-6-6 15:56:43
支持大佬,疯狂给大佬打CALL
7楼
发表于 2018-6-6 15:56:50
666
8楼
发表于 2018-6-6 16:58:25
9楼
发表于 2018-6-6 22:10:56
自定义函数 分页预览时获取某页某单元格的值【仅限同一sheet】
比如获取当前页的上一页的原CPT中A5格子的值
GetCellValue($$page_number-1,"A5")


10楼
发表于 2018-6-7 09:30:54
举例
FR.SPAPI.dynamicParameters( { type: encodeURIComponent( '点心' ) } );


调用方法
FR.SPAPI.dynamicParameters(  parameters );
FR.SPAPI.dynamicParameters(  parameters, sessionID );
sessionID不传表示对当前报表进行动态参数操作
parameters为一个object/map,中文需要编码
11楼
发表于 2018-6-7 10:55:05
图表连接-单元格图表/悬浮元素

API:
FR.SPAPI.linkChart( tag, parameters )
FR.SPAPI.linkChart( tag, parameters, type )

tag 单元格的名称如 B1 G5等等的,或者悬浮元素的名称 Float1,2,3等等的,如果是表单控件,则填图表的控件名

parameters 动态参数表,object/map 中文一定不要编码
type: 可选参数,代表是单元格(CELL)还是悬浮元素(FLOAT),表单为(FORM),如果不传,则自动根据tag判断~如果你的悬浮元素名称看着很像一个单元格,请指定改参数,以免误判
举例:

FR.SPAPI.linkChart( 'F2',  {type:'点心'} )

FR.SPAPI.linkChart( 'Float1',  {type:'点心'} )
表单中调用为

FR.SPAPI.linkChart( 'chart0', {area:"华东"} );

编辑于 2018-6-8 15:09  
12楼
发表于 2018-6-7 14:03:37
前端获取数据集数据
API:
FR.SPAPI.loadData( dsName )
FR.SPAPI.loadData( dsName, cols )
FR.SPAPI.loadData( dsName, cols, sessionID )
dsName:     必选参数,需要获取数据的目标数据集名称【这里没有开放SQL取数,原因是为了安全,试想一下如果可以这样直接SQL取数,那我们的数据是不是太容易泄露了】
cols:            可选参数,需要获取的字段名,多个以逗号隔开,不传或传空为获取全部。
sessionID:   需要获取的某个特定结果报表的数据结果【这个我还在犹豫是不是要屏蔽掉,这个口子其实也是存在安全隐患的】,不传为获取当前报表结果的数据集
举例
var data = FR.SPAPI.loadData( 'ds3', '产品,销量' );
返回的对象为:
data.产品[0,1,2,3,4]就可以取到产品列的每一行数据了
13楼
发表于 2018-6-8 15:09:52
单元格选择背景高亮
cpt调用
FR.SPAPI.highlightOnClick( color );
表单调用
FR.SPAPI.highlightOnClick( color, wgt );
单击单元格就会高亮为color的颜色,再次单击取消,点击当前单元格将取消上一次点击的格子的高亮
14楼
发表于 2021-2-25 09:01:12
15楼
发表于 2021-2-25 12:45:32
还可以下载吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

15回帖数 7关注人数 14282浏览人数
最后回复于:2021-9-7 10:37

返回顶部 返回列表