zoukankan      html  css  js  c++  java
  • FineReport——决策系统组件API

    FineReport数据决策系统中自定义主题包API接口由5大部件组成:框架布局、目录树组件、多tab组件、Navigation组件和Gallery组件。

    首先,对theme.js进行总体配置:

    (function ($) {
        FS.THEME = $.extend(true, FS.THEME, {
            /**需要扩展的配置属性**/
        });
    })(jQuery);

    自定义对五大部件进行定义扩展:

    (function ($) {
        FS.THEME = $.extend(true, FS.THEME, {
            /**需要扩展的配置属性**/
            {
        //框架布局配置属性
        config4frame: {},
        //目录树组件配置属性
        config4MenuTree: {},
        //多tab组件配置属性
        config4tabPane: {},
       //Navigation配置属性
        config4navigation: {},
      //Gallery配置属性
        config4Gallery: {}
    }
        });
    })(jQuery);

    框架布局配置属性:

    config4frame = {
        resizable: false,  //是否可以拖拽分割线调整左右区域的大小
        //上区域
        north: {
            visible: true //是否可见
        },
        //下区域
        south: {
            visible: false //是否可见
        },
        //左区域
        west: {
             220 //宽度
        },
        //右区域
        east: {}
    }

    目录树组件配置属性方法:

    config4MenuTree = {
            region: 'west',  //默认所在区域,和框架中的区域对应
            onBeforeInit: null, //初始化前事件,参数:[element]
            onAfterInit: null, //初始化后事件,参数:[element]
            onDataFilter: null, //节点数据过滤事件,参数:[node, childNodes]
            onBeforeNodeClick: null, //函数,节点点击前事件,参数: [node, $node, $li]
            onNodeClick: null, //函数,节点点击事件,参数: [node, $node, $li]
            onAfterNodeClick: null, //函数,节点点击后事件,参数: [node, $node, $li]
            onBeforeNodeCreate: null, //函数,节点创建前事件,参数:[node, $node, $li]
            onNodeCreate: null, //函数,节点创建事件,参数:[node, $node, $li]
            onAfterNodeCreate: null, //函数,节点创建后事件,参数:[node, $node, $li]
            onBeforeNodeExpand: null, //函数,节点展开前事件,参数:[node, $node, $li]
            onNodeExpand: null, //函数,节点展开事件,参数:[node, $node, $li]
            onAfterNodeExpand: null, //函数,节点展开后事件,参数:[node, $node, $li]
            onBeforeNodeCollapse: null, //函数,节点收起前事件,参数:[node, $node, $li]
            onNodeCollapse: null, //函数,节点收起事件,参数:[node, $node, $li]
            onAfterNodeCollapse: null, //函数,节点收起后事件,参数:[node, $node, $li]
            onBeforeDisplayNodes: null, //函数,节点展示前事件,参数:[node, $node, $li]
            onDisplayNodes: null, //函数,节点展示事件,参数:[node, $node, $li]
            onAfterDisplayNodes: null //函数,节点展示后事件,参数:[node, $node, $li]
        }
    //注释:
    node:节点对象;
    $node:节点的DOM对象;
    $li:节点所处的父层DOM对象。
    管理系统节点
    获取管理系统各节点的URL为:FR.servletURL + "?op=fs_main&cmd=getmoduleitems",参数为{id: -1};
    目录树节点
    获取目录树节点的URL为:FR.servletURL + "?op=fs_main&cmd=module_getrootreports",参数为{id: 1}。

    多tab组件配置属性:

    config4tabPane = {
            region: 'east', //默认所在区域
            style: 'alpha',  //内置样式,包括alpha和bravo两种选择
            tabWidth: 150,  //单个tab标签的最大宽度
            isCollapsible: true,  //是否可以收起
            hasHomepageBtn: false,  //是否有主页按钮
            onCreateTab: null,  //函数,创建Tab标签时的操作,可修改标签样式(全局),参数:[$tab, entry]
            onSelectTab: null,  //函数,选中每个Tab页面时的操作,可修改内容(全局),参数:[$tab, $content, entry]
            onCloseTab: null,  //函数,关闭每个Tab页面时的操作(全局),参数:[$tab, $content, entry]
            afterLoadTab: null,  //函数,加载每个Tab页面时的操作(全局),参数:[$tab, $content, entry]
    
        }

    Navigation配置属性:

    config4navigation = {
            onBeforeInit: null,  //初始化前事件
            onAfterInit: null   //初始化后事件
        }

    Gallery配置属性:

    config4Gallery: {
        region: null   //默认所在区域
    }

    系统配色

    更改style.cc文件如下:

    高亮色:

    .fui-bsb{
      background-color: @color;
    }
    .fui-bsc{
      color: @color;
    }
    .fui-bsd{
      border-color: @color;
    }

    图标外框色:

    .fui-fhc{
      color: @color;
    }
    .fui-fht{
      text-shadow: 0 0 3px @color;
    }

    底栏色:

    .fui-seb{
      background-color: @color;
    }

    文字色:

    .fui-fbc{
      color: @color;
    }
    .fui-fbt{
      text-shadow: 0 0 1px @color;

    自定义主题包实例

    theme.js:

    (function ($) {
        FS.THEME = $.extend(true, FS.THEME, {
            config4navigation: {
                onAfterInit: function () {
                    //移除搜索框
                    var self = this;
                    $('#fs-frame-search').remove();
                    var $reg = $('#fs-frame-reg');
                    if ($reg.length > 0) {
                        $reg.remove();
                    }
                    //获取目录树节点重新绘制顶部导航栏
                    $.ajax({
                        url: FR.servletURL + "?op=fs_main&cmd=module_getrootreports",
                        type: 'POST',
                        data: {id: -1},
                        success: function (res, status) {
                            var nodes = $.parseJSON(res);
                            //目录树节点获取成功之后,获取管理系统各个节点
                            $.ajax({
                                url: FR.servletURL + "?op=fs_main&cmd=getmoduleitems",
                                type: 'POST',
                                async: false,
                                data: {id: 1},
                                success: function(res){
                                    nodes.push($.parseJSON(res));
                                }
                            });
                            var $ul = $('<ul class="node-navi"/>').appendTo($('#fs-frame-header'));
                            $.each(nodes, function (index, root) {
                                var $node = $('<li class="node-navi-li"/>').appendTo($ul);
                                $('<div/>').text(root.text)
                                    .appendTo($node)
                                    .click(function () {
                                        if($node.hasClass('node-select')){
                                            return;
                                        }
                                        $ul.find('.node-select').removeClass('node-select');
                                        $node.addClass('node-select');
                                        var $dropdown = $(this).data('DATA');
                                        if (!$dropdown) {
                                            $dropdown = $('<div class="node-pane"/>').appendTo($node);
                                            $(this).data('DATA', $dropdown);
                                            var $pane = $('<div class="node-pane-inner"/>')
                                                .css({
                                                    'max-height': document.body.clientHeight - 90
                                                }).appendTo($dropdown);
                                            if (root.hasChildren && root.ChildNodes) {
                                                var $other = $('<div class="node-wrapper"/>').appendTo($pane);
                                                $.each(root.ChildNodes, function (index, child) {
                                                    if (child.hasChildren) {
                                                        var $w = $('<div class="node-wrapper"/>').appendTo($pane);
                                                        $('<div class="node-title"/>').text(child.text).appendTo($w);
                                                        var childs = [];
                                                        _collectAllChildNodes(child, childs);
                                                        $.each(childs, function (i, n) {
                                                            _createItem(n, $dropdown, $node).appendTo($w);
                                                        });
                                                    } else {
                                                        _createItem(child, $dropdown, $node).appendTo($other);
                                                    }
                                                });
                                            } else {
                                                return;
                                            }
                                        }
                                        $dropdown.fadeIn('fast');
                                        $(document).bind('mouseover.nodepane', function (e) {
                                            var $t = $(e.target);
                                            if ($t.closest('.node-pane').length <= 0) {
                                                $node.removeClass('node-select');
                                                $dropdown.fadeOut('fast');
                                                $(document).unbind('mouseover.nodepane');
                                            }
                                        });
                                    }
                                );
                            });
                        }
                    });
                }
            },
            config4frame: {
                west: {
                     0
                }
            }
        });
        var _createItem = function (node, $pane, $node) {
            return $('<a href="#"/>').text(node.text)
                .click(function () {
                    FS.tabPane.addItem(node);
                    $node.removeClass('node-select');
                    $pane.hide();
                    $(document).unbind('mousedown.nodepane');
                });
        };
        var _collectAllChildNodes = function (node, childs) {
            var self = this;
            if (!node.ChildNodes) {
                return;
            }
            $.each(node.ChildNodes, function (index, child) {
                if (child.hasChildren) {
                    _collectAllChildNodes(child, childs);
                } else {
                    childs.push(child);
                }
            });
        };
    })(jQuery);

    style.css:

    .node-navi{
        position: relative;
        float: right;
        right: 30px;
        list-style: none;
        height: 60px;
        top: 0;
    }
    
    .node-navi li{
        position: relative;
        float: left;
        left: 0;
        display: block;
        height: 60px;
        line-height: 60px;
        color: #fff;
        font-size: 14px;
        padding: 0 15px;
        cursor: pointer;
    }
    
    .node-navi li:hover{
        color: #6fd3ff;
    }
    
    .node-pane{
        position: absolute;
        top: 60px;
        left: 0;
        -webkit-border-radius: 0 0 3px 3px;
        -moz-border-radius: 0 0 3px 3px;
        z-Index: 10000;
    }
    .node-pane-inner{
        position: relative;
        _height: 200px;
        overflow-x: hidden;
        overflow-y: auto;
        background: rgb(41, 90, 148);
        background: rgba(41, 90, 148, 0.85);
        *width:200px;
    }
    .node-select{
        background: #295a94;
    }
    
    .node-pane a, .node-title{
        position: relative;
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
        display: block;
        min-width: 160px;
        _width:180px;
        height: 20px;
        line-height: 20px;
        font-size: 14px;
        color: white;
        padding: 3px 5px 3px 12px;
        cursor: pointer;
    }
    
    .node-pane a:hover{
        background: rgb(41, 90, 148);
    }
    .node-title{
        padding: 5px 5px 5px 4px;
        cursor: default;
        color: #6fd3ff;
        font-weight: bold;
    }
  • 相关阅读:
    JDA 8.0.0.0小版本升级
    Mybatis中的resultType和resultMap
    FP硬绑
    消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行 profile 名称无效
    检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。 在 BatchImportEntryTable.GetExcelData(String FileName)
    工单重复回写
    ORACLE 对一个表进行循环查数,再根据MO供给数量写入另一个新表
    siebel切换数据源
    MYSQL TIMESTAMP with implicit DEFAULT value is deprecated.
    多账户的统一登录 (转)
  • 原文地址:https://www.cnblogs.com/ytwy/p/5066006.html
Copyright © 2011-2022 走看看