FineReport平台主题包设计使用指南

楼主
欢迎找我唠嗑
主题系统(V8.0及之后版本):
  1. 所有主题包位于 WebReport/WEB-INF/resources/fstheme/ 目录下
  2. 默认是不存在这个fstheme这个文件夹的,当您通过决策平台-管理系统-平台外观-主题-添加主题,将您从【FR-平台主题】版块下载的zip包导入后保存,即可自动生成fstheme文件夹,刷新决策平台即可看到新主题
复制代码


概要:
一个主题的美观度是由大背景图片+主题配色+主题包三大部分共同决定的。整体配色主要由背景图片和配色决定,这些可以在决策平台-管理系统-平台外观里自己配置;整体的交互和布局主要是由主题包来完成的,代码写的越多,可以变化的东西也越多,当然背景图片和主题配色可以都通过开放的API来在主题包的代码中来修改,并不局限于平台外观配置。

主题包格式:
  1. fs-theme-[主题名]  (注:主题名建议使用非中文)
  2.         |----style.css   //导入样式
  3.         |----theme.js      //导入脚本
  4.         |----cover.png   //主题包封面( 建议尺寸240*170 )
  5.         |----其他目录(包括需要使用到的一些自定义资源文件)
复制代码
注:使用主题包导入功能的时候,只需要直接将上面所有文件打成zip包导入即可,不要对主题包根目录进行打包(zip包不需要包含“fs-theme-[主题名]”这个文件夹,只需包含其下的style.css、theme.js等文件即可),zip包名即为该主题的名字。zip包导入成功之后,会自动解压到 WebReport/WEB-INF/resources/fstheme/ 目录下、生成一个主题文件夹,文件夹名为“fs-theme-[zip文件名]”。



请不要被以下内容欺骗,其实很简单,建议下载几个主题包看看,点此直达



组件开放接口:
  1. 框架中总共有5大组件,分别是框架布局,目录树组件,多tab组件,Navigation组件和Gallery组件。
复制代码
主题总配置:
  1. {
  2.     isCustom: true, //是否是自定义主题
  3.     name: 'myTheme', //主题名称
  4.     //框架布局配置属性
  5.     config4frame: {},
  6.     //Navigation配置属性
  7.     config4navigation: {},
  8.     //目录树组件配置属性
  9.     config4MenuTree: {},
  10.     //多tab组件配置属性
  11.     config4tabPane: {}
  12. }
复制代码
框架布局配置属性:
  1. <blockquote>config4frame = {
复制代码
目录树组件配置属性:
  1. config4MenuTree = {
  2.     region: 'west',  //默认所在区域
  3.     onBeforeInit: null, //初始化前事件,参数:[element]
  4.     onAfterInit: null, //初始化后事件,参数:[element]
  5.     onDataFilter: null, //节点数据过滤事件,参数:[node, childNodes]
  6.     onBeforeNodeClick: null, //函数,节点点击前事件,参数: [node, $node, $li]
  7.     onNodeClick: null, //函数,节点点击事件,参数: [node, $node, $li]
  8.     onAfterNodeClick: null, //函数,节点点击后事件,参数: [node, $node, $li]
  9.     onBeforeNodeCreate: null, //函数,节点创建前事件,参数:[node, $node, $li]
  10.     onNodeCreate: null, //函数,节点创建事件,参数:[node, $node, $li]
  11.     onAfterNodeCreate: null, //函数,节点创建后事件,参数:[node, $node, $li]
  12.     onBeforeNodeExpand: null, //函数,节点展开前事件,参数:[node, $node, $li]
  13.     onNodeExpand: null, //函数,节点展开事件,参数:[node, $node, $li]
  14.     onAfterNodeExpand: null, //函数,节点展开后事件,参数:[node, $node, $li]
  15.     onBeforeNodeCollapse: null, //函数,节点收起前事件,参数:[node, $node, $li]
  16.     onNodeCollapse: null, //函数,节点收起事件,参数:[node, $node, $li]
  17.     onAfterNodeCollapse: null, //函数,节点收起后事件,参数:[node, $node, $li]
  18.     onBeforeDisplayNodes: null, //函数,节点展示前事件,参数:[node, $node, $li]
  19.     onDisplayNodes: null, //函数,节点展示事件,参数:[node, $node, $li]
  20.     onAfterDisplayNodes: null //函数,节点展示后事件,参数:[node, $node, $li]
  21. }

  22. 参数说明:
  23. 1. node - 节点对象
  24.     node = {
  25.         text: '日报', //entry名
  26.         id: '213',   //entry id
  27.         isexpand: false, //是否展开
  28.         hasChildren: true,  //是否具有子节点
  29.         ChildNodes: [],  //子节点数组
  30.         isModule: false, //是否是标签页节点
  31.         level: 1 //树深度,从0计数
  32.     }

  33. 2. $node - 节点的DOM对象
  34. 3. $li - 节点所处的父层DOM对象
复制代码
多tab组件配置属性:
  1. config4tabPane = {
  2.     region: 'east', //默认所在区域
  3.     style: 'alpha',  //内置样式,包括alpha和bravo两种选择
  4.     tabWidth: 150,  //单个tab标签的最大宽度
  5.     isCollapsible: true,  //是否可以收起
  6.     hasHomepageBtn: false,  //是否有主页按钮
  7.     onCreateTab: null,  //函数,创建Tab标签时的操作,可修改标签样式(全局),参数:[$tab, entry]
  8.     onSelectTab: null,  //函数,选中每个Tab页面时的操作,可修改内容(全局),参数:[$tab, $content, entry]
  9.     onCloseTab: null,  //函数,关闭每个Tab页面时的操作(全局),参数:[$tab, $content, entry]
  10.     afterLoadTab: null,  //函数,加载每个Tab页面时的操作(全局),参数:[$tab, $content, entry]

  11. }

  12. 开放方法:
  13. 1. FS.tabPane.addItem(item)
  14. 方法: 向多tab组件里添加并打开一个tab,如果tab已经存在,则直接选中;若不存在,则添加并选中。
  15. 参数: item {JSON}
  16.          item = {
  17.              text: 'newTab', //必须, tab标签名
  18.              id: '213', //entry id
  19.              url: 'http://www.finereport.com', //可选,正文内容为链接,iframe嵌入
  20.              onCreate: null,  //函数,创建Tab标签时的操作,可修改标签样式,参数:[$tab, entry]
  21.              onSelect: null,  //函数,选中每个Tab页面时的操作,可修改内容,参数:[$tab, $content, entry]
  22.              onClose: null,  //函数,关闭每个Tab页面时的操作,参数:[$tab, $content, entry]
  23.              afterLoad: null,  //函数,加载每个Tab页面时的操作,参数:[$tab, $content, entry]
  24.          }
复制代码
Navigation配置属性:
  1. config4navigation = {
  2.     onBeforeInit: null,  //初始化前事件
  3.     onAfterInit: null   //初始化后事件
  4. }
复制代码
Gallery配置属性:
  1. config4Gallery: {
  2.     region: null   //默认所在区域
  3. }
复制代码




主题包开发:
  1. 自定义主题包实为引入的外部js、css以及资源文件等。
复制代码
为了使用主题接口,首先我们在theme.js里需要对FS.Theme配置进行扩展,具体代码如下:
  1. (function ($) {
  2.     FS.THEME = $.extend(true, FS.THEME, {
  3.         /**需要扩展的配置属性**/
  4.     });
  5. })(jQuery);
复制代码
内置Classic主题采用默认配置:
  1. {
  2.     config4frame: {
  3.         resizable: true,
  4.         //上区域
  5.         north: {
  6.             visible: true //是否可见
  7.         },
  8.         //下区域
  9.         south: {
  10.             visible: false //是否可见
  11.         },
  12.         //左区域
  13.         west: {
  14.             width: 230 //宽度
  15.         },
  16.         //右区域
  17.         east: {}
  18.     },
  19.     config4Gallery: {
  20.         region: null
  21.     },
  22.     config4MenuTree: {
  23.         region: 'west'
  24.     },
  25.     config4tabPane: {
  26.         region: 'east',
  27.         style: 'bravo',
  28.         isCollapsible: false,
  29.         hasHomepageBtn: true
  30.     },
  31.     config4navigation: {
  32.         onBeforeInit: null,
  33.         onAfterInit: null
  34.     }
  35. }
复制代码
内置Modern主题采用如下配置:
  1. {
  2.     config4frame: {
  3.         resizable: false,
  4.             south: {
  5.             visible: true
  6.         }
  7.     },
  8.     config4Gallery: {
  9.         region: 'east'
  10.     },
  11.     config4MenuTree: {
  12.         onNodeExpand: function (node, $node, $parent) {
  13.             return node.level !== 0;
  14.         },
  15.         onNodeClick: function (node, $node, $parent) {
  16.             $('#fs-frame-wrapper') .empty();
  17.             return false;
  18.         }
  19.     },
  20.     config4tabPane: {
  21.         style: 'alpha',
  22.         region: 'south',
  23.         isCollapsible: true,
  24.         hasHomepageBtn: false
  25.     }
  26. }
复制代码


主题包示例:
   


→_→ 点此查看和下载更多FineReport平台主题


系统配色
  1. 系统配色主要有4种:高亮色、图标外框色、底栏色和文字色,可通过复写css来修改任意地方的样式或者配色
复制代码



  • 颜色1——高亮色。“收藏”“消息”“个人中心”三个图标选中状态及tab选中项提亮色,
  • 颜色2——图标外框色。导航栏图标外围色;
  • 颜色3——底栏色。左侧导航栏激活项背景色以及Tab栏背景颜色;
  • 颜色4——文字色。字体颜色。


系统配色分别对应如下css样式:

高亮色
  1. .fui-bsb{
  2.   background-color: @color;
  3. }
  4. .fui-bsc{
  5.   color: @color;
  6. }
  7. .fui-bsd{
  8.   border-color: @color;
  9. }
复制代码
图标外框色
  1. .fui-fhc{
  2.   color: @color;
  3. }
  4. .fui-fht{
  5.   text-shadow: 0 0 3px @color;
  6. }
复制代码
底栏色
  1. .fui-seb{
  2.   background-color: @color;
  3. }
复制代码
文字色
  1. .fui-fbc{
  2.   color: @color;
  3. }
  4. .fui-fbt{
  5.   text-shadow: 0 0 1px @color;
  6. }
复制代码

请求接口
获取管理系统节点
请求参数
FR.servletURL + "?op=fs_main&cmd=getmoduleitems"{id: -1}
获取目录树节点
请求参数
FR.servletURL + "?op=fs_main&cmd=module_getrootreports"{id: 1}

标签页单独集成
  1. <span style="font-weight: normal;"><font size="2">FS.loadModule(render, moduleName)
  2. 方法:根据模块名加载对应模块配置页面,用于集成独立页面
  3. 参数: render 渲染dom
  4.       moduleName 模块名
  5. 例如:FS.loadModule($('<div/>').appendTo('body'), 'report');</font></span>
复制代码

集成并加载指定标签模块,模块名列表如下:
模块名参数值
报表管理report
用户管理user
权限管理privilege
定时调度schedule
系统管理sysmgr
平台外观plate
注册信息register
系统监控monitor
移动平台mobile

可参考api调用实例: demo.html (1.28 KB, 下载次数: 338)
注: 必须先做单点登录,只有登录FS才有访问标签页的权限。

用户注销
  1. FS.signOut()
  2. 方法:注销当前登录的用户,并返回登录页面。
  3. 参数:无。
复制代码









分享扩散:

沙发
发表于 2015-2-28 16:20:01
{:5_127:}{:5_127:}{:5_127:}{:5_127:}{:5_127:}大赞。。。只是这是基于8.0的么???还是针对所有fr版本
板凳
发表于 2015-2-28 17:33:27
{:8_209:}{:8_209:}{:8_209:}{:8_209:}{:8_209:}{:8_209:}
地板
发表于 2015-2-28 20:10:09
{:8_209:}{:8_209:}
5楼
发表于 2015-3-1 10:22:49
看起来好酷的样子, 自由度又提升了捏,不过相信自带的就能满足要求 {:8_209:}{:8_209:}
6楼
发表于 2015-3-2 09:52:38
{:8_209:}
7楼
发表于 2015-3-10 10:35:36
用7.1是不是设计不了,因为找不到这个地址 WebReport/WEB-INF/resources/fstheme/
8楼
发表于 2015-3-20 09:38:09
{:6_152:}{:6_156:}
9楼
发表于 2015-3-21 04:12:03
回帖。关注。。
10楼
发表于 2016-1-10 20:30:41
非常棒!以后应该走开源路线,把大家的智慧都集中到帆软上!
11楼
发表于 2016-7-7 11:53:29
包在哪里,怎么没看到
12楼
发表于 2016-7-7 15:27:18
楼主厉害,支持楼主
13楼
发表于 2016-8-18 00:03:32
.收益匪浅,多多学习才行
14楼
发表于 2016-9-11 18:24:14
感觉不错,学习学习
15楼
发表于 2017-4-6 21:03:18
回帖。关注。。
16楼
发表于 2018-1-8 21:27:29
不错,值得学习,收藏了
17楼
发表于 2018-2-13 16:25:26

回帖。关注。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

16回帖数 2关注人数 20418浏览人数
最后回复于:2018-2-13 16:25

返回顶部 返回列表