zoukankan      html  css  js  c++  java
  • 多级外框模块的设计

    在设计报表的过程中,为了保证模块之间功能清晰,简单。规定,单个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)来将一个节点按到树上。

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

    最后效果如下

     

  • 相关阅读:
    OpenCV用读取矩阵,访问图像数据
    OpenCV_Add方法
    OpenCV_颜色直方图的计算、显示、处理、对比及反向投影
    sift算法研究_无匹配
    OpenCV_轮廓例子
    OpenCV_用鼠标在窗口画方形
    【转】数字图像处理中的形态学
    OpenCV_ 滑动条模拟按钮
    OpenCV_轮廓的查找、表达、绘制、特性及匹配
    图像的膨胀与腐蚀、细化
  • 原文地址:https://www.cnblogs.com/william7neral/p/4186535.html
Copyright © 2011-2022 走看看