-gMIS更新: 自动层级目录

-gMIS 平台层级结构管理功能模块(Xdirectory)终于在 @Tintin 的帮助下,顺利完成。 Xdirectory是为了方便用户输入树形的数据结构,如下图所示: gmis-xdirectory-201604

通过xdirectory定义树形结构,可以方便的展示类似widnows资源管理器样式的菜单。

所谓层级(hierarchy)、分类(classification)及编码(encode)、代码(code)的含义,可以进一步参考 -ufqi-blog 之前的专页讨论:-R/k2Sl  。 Xdirectory有两个主要组成部分: extra/xdirectory.php 和 class/xdirectory.class.php . 前者负责与 -gMIS 系统的集成,后者负责具体编码及层级的实现。

1) extra/xdirectory.php 负责将层级代码list按一定的缩进规则呈现出来,并响应相应的选择、增加同级和增加下级的点击事件,将相应结果抄送到调用者那里。

2)class/xdirectory.class 主要有三个方法,负责生产list,生产同级代码和生产下级代码。 # get dir list, expand all of directories above the target dir or its same level, “open all to target”
function getList($targetDir, $levelLen){ } # get next dir code, 2c after 2b, 10 after 0z, in base36, i.e. 0-9, a-z
function getNextDir($currentDir, $levelLen, $ilevel, $currentVal){ } # get sub dir under currentDir, a1b200 for a1b2
function getSubDir($currentDir, $levelLen, $ilevel, $currentVal){ }

Xdirectory 默认的层宽度是两位,默认采用的编码是36进制,也即,0-9, a-z , 通常情况下,每层级可以容纳  1296 个元素(36^2, 00…..0z, 10….1z…..zz),能够满足一般情况下的分类分级需求。更大的层宽度,可以考虑3位(46,656个)。

-gMIS 在设计的时候,预留了扩展输入/输出接口,在 extra 目录下,通过表配置中的filed的 inputtype可以指定某个字段的输入类型为 extra 扩展输入,调用 xdirectory 则是 <extrainput>extra/xdirectory.php?tbl=THIS_TABLE&amp;icode=icode&amp;iname=iname&amp;parentcode=THIS_icode</extrainput> Xdirectory 首先被用在 -gMIS 的菜单项管理中,如下图是配置顶部导航菜单的功能模块。 -gmis-menu-setting  

This entry was posted in -gMIS, 编程技术, 计算机技术 and tagged , , , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注