• 多级外框模块的设计


    在设计报表的过程中,为了保证模块之间功能清晰,简单。规定,单个div元素只能够初始化为一个数据显示元素,(什么是数据显示元素,如图表,表格等等)

    但这样也使得我们需要一个功能足够强大的外框,来吧一个大的div划分为几块,分别显示。

    上图是我认为的外框控制和管理模块,我称为divManager,他通过在div中添加新的小div元素,划分窗口。

    之后需要做的是确定这个模块的输入,也就是json的数据格式,让他能足够描述上图中的信息。

    之前说过一个div定义的数据是:

    {
        x: 20,
        y: 20,
         800,
        height: 510
    }

    那么如果有多层,应该是下面这样:

    {
        x: 20,
        y: 20,
         800,
        height: 510
        children: [
            {
                 x: 20,
                 y: 20,
                  800,
                 height: 510
                 children:[....]
             }
        ]
    }

    在这里还有一个问题,那就是需要从外部定位到每一个div,那就需要为每个外框加一个id属性,id可以在生成时用函数随机生成GUID

    {
        id:ad71f2de,
        x: 20,
        y: 20,
         800,
        height: 510
        children: [...]
    }

    另外,还要考虑多标签的情况,多标签之前做过一个Panel模块,这里关键的问题是,上面都是一个div框对应一个children元素,单如果吧一个框变成多标签,那么上面的方法就不能用了,因为不能一一对应。所以之后是一种更加极端的方式,很黄很暴力。

    {
        id: ad71f2de,
        x: 20,
        y: 20,
         800,
        height: 510,
        father: eag93g17
    }

    上面是经过深思熟虑以后的可以适应多标签,且更容易动态添加下层元素的方式。而上面的这个json对象会被渲染为一个框,如果是panel,有多个框,那么就需要下面这样:

    {
        id: ['ad71f2de','2dd71fae'],
        x: 20,
        y: 20,
         800,
        height: 510,
        father: eag93g17
    }

    那么这里就一下子清晰了,我们只要判断id是一个值还是一个数组,如果是数组,则使用panel初始化。

    可以把上面的思路理解为一颗树,我们通过指定上层节点(father)来将一个节点按到树上。

    接下去就是实现了,滚去写代码....

    最后效果如下

     

  • 相关阅读:
    Tomcat虚拟主机配置
    JSP执行过程
    JDK环境变量配置贺Tomcat环境搭建
    有限域上的运算
    希尔密码(Hill Cipher)的实现
    高精度运算
    统计文本中的单词数的简单脚本
    soj1166. Computer Transformat(dp + 大数相加)
    [转].Python中sorted函数的用法
    soj1564. HOUSING
  • 原文地址:https://www.cnblogs.com/william7neral/p/4186535.html
Copyright © 2020-2023  润新知