LeftTree.js 6.4 KB

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