LeftTree.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. Namespace.register("U.MD.DK.LL"); //Disk导航命名空间
  2. //#region 导航
  3. /**
  4. * 导航打印(树导航)
  5. * @param {object} 左边一级层级树目录的相关信息
  6. * @param {element} 输出到那个区域
  7. * @param {array} 树目录的class样式数组
  8. * @param {element} 树目录区域
  9. * @param {str} 当前用户ID
  10. **/
  11. U.MD.DK.LL.printLeftTreeDirectory = function (directorys, el, userid, classes) {
  12. var _dtorydiv, //目录元素
  13. _namediv, //名字元素
  14. _frag = $$("div"), //临时块元素
  15. _padding = 3 //左对齐
  16. ;
  17. //判断展开的基本是否大于二级,大于二级则设置padding
  18. if ($(el).Child()[0]) {
  19. _padding = parseInt($(el).Child()[0].style.paddingLeft || 0) + 5;
  20. //如果不展开的处理
  21. if ($($(el).Child()[0]).Child()[0].className.indexOf("U_MD_DK_LTXOSIO") == -1) {
  22. return;
  23. }
  24. }
  25. //如果已经展开的处理
  26. if ($(el).Child()[1]) {
  27. el.removeChild($(el).Child()[1]);
  28. }
  29. //打印所有需要打印的目录信息
  30. for (i = 0; i < directorys.length; i++) {
  31. //得到打印文件夹的图标样式
  32. if ((classes || "").length) {
  33. _Img = classes[i] || classes;
  34. }
  35. else {
  36. if ((directorys[i]["UserDirectoryEncrypt"] && directorys[i]["UserDirectoryEncrypt"] != userid)) {
  37. _Img = "U_MD_DK_LCJ";
  38. }
  39. else {
  40. _Img = "U_MD_DK_LCW";
  41. }
  42. }
  43. //创建左边树目录
  44. _dtorydiv = $$("div", { "id": directorys[i]["UserDirectoryID"] ? "L" + directorys[i]["UserDirectoryID"] : "", "className": "U_MD_DK_LTXOA" }, _frag);
  45. _namediv = $$("div", {
  46. "className": "U_MD_DK_LTXOS",
  47. "style": {
  48. "paddingLeft": _padding + "px"
  49. },
  50. //导航点击事件的处理
  51. "onclick": U.UF.C.closure(function (directoryinfo, el) {
  52. U.UF.EV.stopBubble();
  53. U.MD.DK.LL.leftTreeClick(directoryinfo, el, userid)
  54. }, [directorys[i], _dtorydiv]),
  55. //右键处理
  56. "oncontextmenu": U.UF.C.closure(function (directoryinfo) {
  57. U.UF.EV.stopBubble();
  58. U.UF.EV.stopDefault();
  59. U.MD.DK.RM.rightMenu(this, directoryinfo, US.disk.UserDisk);
  60. }, [directorys[i]])
  61. }, _dtorydiv);
  62. $$("div", {
  63. "className": "U_MD_DK_LTXOSI U_MD_DK_Img"
  64. }, _namediv);
  65. $$("div", { "className": "U_MD_DK_LCOI U_MD_DK_LTXOST U_MD_DK_Img " + _Img }, _namediv);
  66. //文件名
  67. $$("div", {
  68. "className": "U_MD_DK_LTXOSN U_MD_D_Text_Abbreviation",
  69. "innerHTML": directorys[i].UserallDirectoryName,
  70. "ondblclick": U.UF.C.closure(function (directoryinfo) {
  71. U.UF.EV.stopBubble();
  72. U.MD.DK.RE.rename(this, directoryinfo);
  73. }, [directorys[i]])
  74. }, _namediv);
  75. }
  76. el.appendChild(_frag);
  77. }
  78. /**
  79. * 导航点击处理
  80. * @param {object} 左边一级层级树目录的相关信息
  81. * @param {element} 输出到那个区域
  82. * @param {string} 当前用户ID
  83. **/
  84. U.MD.DK.LL.leftTreeClick = function (fileinfo, el, userid) {
  85. var _childel = $(el).Child()[0];
  86. //权限判断
  87. //打开文件夹的图标高亮处理
  88. if ($(_childel).Child()[0].className.indexOf("U_MD_DK_LTXOSIO") > -1) {
  89. $(_childel).Child()[0].className = "U_MD_DK_LTXOSI U_MD_DK_Img"; //图标展开的形式
  90. //打开文件夹处理
  91. var _contentel = $(_childel).next();
  92. _childel.className = "U_MD_DK_LTXOS"//重新设置class
  93. if (_contentel[0]) {
  94. el.removeChild(_contentel[0]); //清除元素
  95. }
  96. }
  97. else {
  98. U.MD.DK.LL.leftTreeHighlight(el); //左边树点击处理
  99. $(_childel).Child()[0].className = "U_MD_DK_LTXOSI U_MD_DK_Img U_MD_DK_LTXOSIO"; //图标展开的形式
  100. }
  101. //打开文件夹处理
  102. U.MD.DK.LE.openFileDirectory(fileinfo, userid);
  103. }
  104. /**
  105. * 导航点击处理
  106. * @param {object} 左边一级层级树目录的相关信息
  107. * @param {element} 输出到那个区域
  108. * @param {string} 当前用户ID
  109. **/
  110. U.MD.DK.LL.leftTreeHighlight = function (el) {
  111. var i,
  112. _childel,
  113. _parentel = el
  114. ;
  115. //递归处理上级高亮处理
  116. do {
  117. _parentel = el.parentNode; //获取高亮元素的上级父亲
  118. _childel = $(_parentel).Child(); //获取该级的所有子节点
  119. //如果在同一个文件夹下只能高亮一个文件目录,这样看起来才能显示当前点击的文件夹
  120. for (i = 0; i < _childel.length; i++) {
  121. $(_childel[i]).Child()[0].className = el == _childel[i] ? "U_MD_DK_LTXOS U_MD_DK_LTXOSO" : "U_MD_DK_LTXOS";
  122. }
  123. } while ((el = _parentel.parentNode) && el.id != "U_MD_DK_LTXO")
  124. }
  125. /**
  126. * 生成导航(面包屑导航)
  127. * @param {array} 所有要追加的导航元素
  128. * @param {element} 导航的元素
  129. * @param {string} 用户的id
  130. */
  131. U.MD.DK.LL.printNavigation = function (navarray, el, userid) {
  132. var i, //用于循环
  133. _frag = $$("frag"), //临时的panel
  134. _click //导航点击事件处理
  135. ;
  136. el.innerText = ""; //清空导航区域
  137. //循环打印导航
  138. for (i = navarray.length - 1; i > -1; i--) {
  139. //创建一个导航, 如果导航是目录的导航,则点击的时候可以跳到指定的导航中
  140. $$("div", { "className": "U_MD_DK_RYBO", "innerHTML": navarray[i]["UserallDirectoryName"],
  141. "onclick": U.UF.C.closure(function (nav) {
  142. U.MD.DK.LE.openFileDirectory(nav, userid);
  143. }, [navarray[i]])
  144. }, _frag);
  145. }
  146. el.appendChild(_frag); //添加导航
  147. //每一次导航追加的时候需要如果超过了大小则需要隐藏前面的导航
  148. var _navchild = $(el).Child(); //导航元素
  149. while (el.scrollHeight > 30) {
  150. _navchild[i].style.display = "none";
  151. }
  152. }
  153. //#endregion