main-min.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. BUI.use(["bui/menu", "bui/tab"], function(h, l) {
  2. var k = BUI.app("PageUtil");
  3. var p = "dl-selected",
  4. c = "ks-hidden",
  5. y = "dl-last",
  6. x = "dl-hover",
  7. n = "nav-item",
  8. s = "dl-second-slib",
  9. f = "dl-tab-item",
  10. t = "dl-collapse",
  11. v = "dl-hide-current",
  12. u = "data-index",
  13. j = 145;
  14. function g(z) {
  15. window.topManager = z
  16. }
  17. function b(z, A) {
  18. if (z.indexOf("?") !== -1) {
  19. return z + "&" + A
  20. } else {
  21. return z + "?" + A
  22. }
  23. }
  24. function i(B, E, H, F, A) {
  25. var I = this,
  26. C = new h.SideMenu(H),
  27. D = new l.NavTab(E),
  28. J = $(H.render),
  29. z = J.next("." + s + "-con"),
  30. G = J.parents("." + f);
  31. if (z) {
  32. z.on("click", function() {
  33. G.toggleClass(t)
  34. });
  35. z.parent().height(E.height+45);
  36. }
  37. if (F) {
  38. G.addClass(t)
  39. }
  40. C.on("menuclick", function(L) {
  41. var K = L.item;
  42. if (K) {
  43. I.tab.addTab({
  44. id: K.get("id"),
  45. title: K.get("text"),
  46. href: K.get("href"),
  47. closeable: K.get("closeable"),
  48. icon:K.get("icon")
  49. }, true)
  50. }
  51. });
  52. C.on("itemselected", function(L) {
  53. var K = L.item;
  54. if (K) {
  55. e(B, K.get("id"))
  56. }
  57. });
  58. D.on("activeChange", function(L) {
  59. var K = L.item;
  60. if (K) {
  61. I.menu.setSelectedByField(K.get("id"))
  62. } else {
  63. I.menu.clearSelection()
  64. }
  65. });
  66. I.tab = D;
  67. I.menu = C;
  68. I.homePage = A;
  69. D.render();
  70. C.render()
  71. }
  72. function e(A, z) {
  73. z = z || "";
  74. var B = "#" + A;
  75. if (z) {
  76. B += "/" + z
  77. }
  78. location.hash = B
  79. }
  80. function d() {
  81. var D = location.hash,
  82. C = 0,
  83. z = "",
  84. A = D.indexOf("/"),
  85. B = null;
  86. if (!D) {
  87. return null
  88. }
  89. if (A >= 0) {
  90. C = D.substring(1, A);
  91. z = D.substring(A + 1);
  92. B = r(z);
  93. if (B) {
  94. z = z.replace("?" + B, "")
  95. }
  96. } else {
  97. C = D.substring(1)
  98. }
  99. return {
  100. moduleId: C,
  101. pageId: z,
  102. search: B
  103. }
  104. }
  105. function r(z) {
  106. var A = z.indexOf("?");
  107. if (A >= 0) {
  108. return z.substring(A + 1)
  109. }
  110. return null
  111. }
  112. function m(z) {
  113. if (!$.isArray(z)) {
  114. return
  115. }
  116. var A = q(z);
  117. while (A !== -1) {
  118. z.splice(A, 1);
  119. A = q(z)
  120. }
  121. return z
  122. }
  123. function q(A) {
  124. var z = -1;
  125. $.each(A, function(B, C) {
  126. if (C === null || C === undefined) {
  127. z = B;
  128. return false
  129. }
  130. });
  131. return z
  132. }
  133. function a() {
  134. var z = BUI.viewportHeight(),
  135. A = 70;
  136. return z - A
  137. }
  138. function o(z) {
  139. var A = $(z);
  140. if (A.hasClass(n)) {
  141. return z
  142. }
  143. return A.parent("." + n)[0]
  144. }
  145. var w = function(z) {
  146. m(z);
  147. w.superclass.constructor.call(this, z);
  148. this._init();
  149. g(this)
  150. };
  151. w.ATTRS = {
  152. currentModelIndex: {},
  153. hideItmes: {
  154. value: []
  155. },
  156. hideList: {},
  157. modules: {
  158. value: []
  159. },
  160. modulesConfig: {},
  161. navList: {
  162. valueFn: function() {
  163. return $("#J_Nav")
  164. }
  165. },
  166. navContent: {
  167. valueFn: function() {
  168. return $("#J_NavContent")
  169. }
  170. },
  171. navItems: {
  172. valueFn: function() {
  173. return $("#J_Nav").children("." + n)
  174. }
  175. },
  176. navTabs: {
  177. valueFn: function() {
  178. return this.get("navContent").children("." + f)
  179. }
  180. },
  181. urlSuffix: {
  182. value: ".html"
  183. }
  184. };
  185. BUI.extend(w, BUI.Base);
  186. BUI.augment(w, {
  187. openPage: function(O) {
  188. var J = this,
  189. E = O.moduleId || J._getCurrentModuleId(),
  190. C = O.id,
  191. L = O.title || "\u65b0\u7684\u6807\u7b7e\u9875",
  192. B = O.href,
  193. N = O.isClose,
  194. D = O.closeable,
  195. A = O.reload,
  196. P = O.search,
  197. IO=O.icon;
  198. var G = J._getModule(E);
  199. if (G) {
  200. var H = G.tab,
  201. F = G.menu,
  202. z = F.getItem(C),
  203. K = H.getActivedItem(),
  204. M = K ? K.get("id") : null,
  205. I = J._getModuleIndex(E);
  206. if (E != J._getCurrentModuleId()) {
  207. J._setModuleSelected(I)
  208. }
  209. if (z) {
  210. J._setPageSelected(I, C, A, P)
  211. } else {
  212. H.addTab({
  213. id: C,
  214. title: L,
  215. href: B,
  216. sourceId: M,
  217. icon:IO,
  218. closeable: D
  219. }, A)
  220. } if (N) {
  221. K.close()
  222. }
  223. }
  224. },
  225. closePage: function(A, z) {
  226. this.operatePage(z, A, "close")
  227. },
  228. reloadPage: function(A, z) {
  229. this.operatePage(z, A, "reload")
  230. },
  231. setPageTitle: function(A, B, z) {
  232. this.operatePage(z, B, "setTitle", [A])
  233. },
  234. operatePage: function(E, G, F, A) {
  235. E = E || this._getCurrentModuleId();
  236. A = A || [];
  237. var z = this,
  238. B = z._getModule(E);
  239. if (B) {
  240. var C = B.tab,
  241. D = G ? C.getItemById(G) : C.getActivedItem();
  242. if (D && D[F]) {
  243. D[F].apply(D, A)
  244. }
  245. }
  246. },
  247. _createModule: function(E) {
  248. var z = this,
  249. C = z._getModuleConfig(E),
  250. B = z.get("modules");
  251. if (!C) {
  252. return null
  253. }
  254. var E = C.id,
  255. A = "#J_" + E + "Tab",
  256. D = "#J_" + E + "Tree";
  257. module = new i(E, {
  258. render: A,
  259. height: a() - 5
  260. }, {
  261. render: D,
  262. items: C.menu,
  263. height: a() - 5
  264. }, C.collapsed, C.homePage);
  265. B[E] = module;
  266. return module
  267. },
  268. _hideHideList: function() {
  269. this.get("hideList").hide()
  270. },
  271. _init: function() {
  272. var z = this;
  273. z._initDom();
  274. z._initNavItems();
  275. z._initEvent()
  276. },
  277. _initNavItems: function() {
  278. var I = this,
  279. C = I.get("navItems"),
  280. B = I.get("hideItmes");
  281. if (C.length === 0) {
  282. return
  283. }
  284. $('<div class="nav-item-mask"></div>').appendTo($(C));
  285. var G = C.length,
  286. K = BUI.viewportWidth(),
  287. H = j,
  288. F = H * G,
  289. z = 0;
  290. if (F <= K) {
  291. return
  292. }
  293. $.each(C, function(L, M) {
  294. $(M).attr(u, L);
  295. $(M).removeClass(y)
  296. });
  297. z = parseInt(K / H);
  298. var A = C[z - 1];
  299. I._setLastItem(A);
  300. B.push($(A).clone()[0]);
  301. for (var E = z; E < G; E++) {
  302. var J = $(C[E]),
  303. D = null;
  304. D = J.clone()[0];
  305. B.push(D);
  306. J.addClass(c)
  307. }
  308. I._initHideList()
  309. },
  310. _initHideList: function() {
  311. var B = this,
  312. A = B.get("hideList"),
  313. z = B.get("hideItmes");
  314. if (A) {
  315. return
  316. }
  317. var D = '<ul class="dl-hide-list ks-hidden"></ul>',
  318. C = $(D).appendTo("body");
  319. A = C;
  320. $.each(z, function(E, F) {
  321. $(F).appendTo(A)
  322. });
  323. B.set("hideList", A);
  324. B._initHideListEvent()
  325. },
  326. _initHideListEvent: function() {
  327. var A = this,
  328. z = A.get("hideList");
  329. if (z == null) {
  330. return
  331. }
  332. z.on("mouseleave", function() {
  333. A._hideHideList()
  334. });
  335. z.on("click", function(E) {
  336. var D = o(E.target),
  337. C = null,
  338. B = 0;
  339. if (D) {
  340. C = $(D);
  341. B = C.attr(u);
  342. A._setModuleSelected(B);
  343. A._hideHideList()
  344. }
  345. })
  346. },
  347. _initContents: function() {
  348. var z = this,
  349. B = z.get("modulesConfig"),
  350. A = z.get("navContent");
  351. A.children().remove();
  352. $.each(B, function(D, E) {
  353. var F = E.id,hTip=$(".nav-item").eq(D).find("span").html(),
  354. C = ['<li class="dl-tab-item ks-hidden"><div class="dl-second-nav"></div><div class="dl_nav_titles"><i class="im-home3"></i><span>', hTip, '</span></div><div class="dl-second-tree" id="J_', F, 'Tree"></div><div class="', s, '-con"><div class="', s, '"></div></div></div><div class="dl-inner-tab" id="J_', F, 'Tab"></div></li>'].join("");
  355. new $(C).appendTo(A)
  356. })
  357. },
  358. _initDom: function() {
  359. var z = this;
  360. z._initContents();
  361. z._initLocation()
  362. },
  363. _initEvent: function() {
  364. var z = this,
  365. A = z.get("navItems");
  366. A.each(function(B, C) {
  367. var C = $(C);
  368. C.on("click", function() {
  369. var D = $(this);
  370. if (D.hasClass(p)) {
  371. return
  372. }
  373. z._setModuleSelected(B, D)
  374. }).on("mouseenter", function() {
  375. $(this).addClass(x)
  376. }).on("mouseleave", function() {
  377. $(this).removeClass(x)
  378. })
  379. });
  380. z._initNavListEvent()
  381. },
  382. _initNavListEvent: function() {
  383. var A = this,
  384. z = A.get("hideList"),
  385. B = A.get("navList");
  386. B.on("mouseover", function(E) {
  387. var D = o(E.target),
  388. C = $(D),
  389. F = null;
  390. if (C && C.hasClass(y) && z) {
  391. F = C.offset();
  392. F.top += 37;
  393. F.left += 2;
  394. A._showHideList(F)
  395. }
  396. }).on("mouseout", function(D) {
  397. var C = D.toElement;
  398. if (C && z && !$.contains(z[0], C) && C !== z[0]) {
  399. A._hideHideList()
  400. }
  401. })
  402. },
  403. _initLocation: function() {
  404. var z = this,
  405. D = d();
  406. if (D) {
  407. var B = D.pageId,
  408. E = D.search,
  409. C = z._getModuleIndex(D.moduleId);
  410. z._setModuleSelected(C);
  411. z._setPageSelected(C, B, true, E)
  412. } else {
  413. var A = z.get("currentModelIndex"),
  414. F = z._getModuleId(A);
  415. if (A == null) {
  416. z._setModuleSelected(0)
  417. } else {
  418. e(F)
  419. }
  420. }
  421. },
  422. _getModule: function(B) {
  423. var z = this,
  424. A = z.get("modules")[B];
  425. if (!A) {
  426. A = z._createModule(B)
  427. }
  428. return A
  429. },
  430. _getModuleIndex: function(B) {
  431. var A = this,
  432. z = 0;
  433. $.each(A.get("modulesConfig"), function(D, C) {
  434. if (C.id === B) {
  435. z = D;
  436. return false
  437. }
  438. });
  439. return z
  440. },
  441. _getModuleConfig: function(B) {
  442. var A = this,
  443. z = null;
  444. $.each(A.get("modulesConfig"), function(D, C) {
  445. if (C.id === B) {
  446. z = C;
  447. return false
  448. }
  449. });
  450. return z
  451. },
  452. _getModuleId: function(z) {
  453. var A = this.get("modulesConfig");
  454. if (A[z]) {
  455. return A[z].id
  456. } else {
  457. return z
  458. }
  459. },
  460. _getCurrentPageId: function() {
  461. var z = this,
  462. D = z._getCurrentModuleId(),
  463. B = z._getModule(D),
  464. A = "";
  465. if (B) {
  466. var C = B.menu.getSelected();
  467. if (C) {
  468. A = C.get("id")
  469. }
  470. }
  471. return A
  472. },
  473. _getCurrentModuleId: function() {
  474. return this._getModuleId(this.get("currentModelIndex"))
  475. },
  476. _isModuleInitial: function(z) {
  477. return !!this.get("modules")[z]
  478. },
  479. _setLastItem: function(D) {
  480. var z = this,
  481. A = z.get("lastShowItem");
  482. if (A === D) {
  483. return
  484. }
  485. var B = null,
  486. C = $(A);
  487. itemEl = $(D);
  488. if (A) {
  489. B = C.find("." + v);
  490. C.removeClass(y);
  491. C.addClass(c)
  492. }
  493. itemEl.addClass(y);
  494. itemEl.removeClass(c);
  495. if (!B) {
  496. B = $('<span class="icon icon-white icon-caret-down ' + v + '">&nbsp;&nbsp;</span>')
  497. }
  498. B.appendTo(itemEl.children(".nav-item-inner"));
  499. z.set("lastShowItem", D)
  500. },
  501. _setModuleSelected: function(F, E) {
  502. var H = this,
  503. D = H.get("navItems"),
  504. B = H.get("navTabs"),
  505. G = H.get("currentModelIndex");
  506. if (G !== F) {
  507. var z = H._getModuleId(F),
  508. A = null,
  509. C = H.get("lastShowItem"),
  510. I = true;
  511. if (!H._isModuleInitial(z)) {
  512. I = false
  513. }
  514. A = H._getModule(z);
  515. E = E || $(H.get("navItems")[F]);
  516. if (E.hasClass(c) && C) {
  517. H._setLastItem(E[0]);
  518. H._setSelectHideItem(F)
  519. }
  520. D.removeClass(p);
  521. E.addClass(p);
  522. B.addClass(c);
  523. $(B[F]).removeClass(c);
  524. G = F;
  525. H.set("currentModelIndex", G);
  526. curPageId = H._getCurrentPageId();
  527. e(z, curPageId);
  528. if (!curPageId && A.homePage) {
  529. H._setPageSelected(F, A.homePage)
  530. }
  531. }
  532. },
  533. _setPageSelected: function(E, F, G, K) {
  534. var H = this,
  535. B = H._getModuleId(E) || E,
  536. C = H._getModule(B);
  537. if (C && F) {
  538. C.menu.setSelectedByField(F);
  539. var J = C.menu.getSelected(),
  540. D = C.tab,
  541. A = "",
  542. z = -1;
  543. if (J && J.get("id") === F) {
  544. A = J.get("href");
  545. A = K ? (b(A, K)) : A;
  546. C.tab.addTab({
  547. id: J.get("id"),
  548. title: J.get("text"),
  549. closeable: J.get("closeable"),
  550. href: A
  551. }, !!G)
  552. } else {
  553. if (F) {
  554. var I = F.replace("-", "/");
  555. if (I.indexOf("/") === -1) {
  556. I = B + "/" + I
  557. }
  558. if ((z = F.indexOf(".")) === -1) {
  559. I += H.get("urlSuffix")
  560. }
  561. A = K ? (I + "?" + K) : I;
  562. D.addTab({
  563. id: F,
  564. title: "",
  565. href: A
  566. }, !!G)
  567. }
  568. }
  569. }
  570. },
  571. _showHideList: function(B) {
  572. var A = this,
  573. z = A.get("hideList");
  574. z.css("left", B.left);
  575. z.css("top", B.top);
  576. z.show()
  577. },
  578. _setSelectHideItem: function(D) {
  579. var B = this,
  580. A = B.get("hideList"),
  581. z = B.get("hideItmes"),
  582. E = null,
  583. C = null,
  584. G = null,
  585. F = null;
  586. BUI.each(z, function(I) {
  587. var H = $(I);
  588. if (H.attr(u) == D) {
  589. C = I
  590. }
  591. if (H.hasClass(y)) {
  592. E = I
  593. }
  594. });
  595. if (E !== C) {
  596. if (E) {
  597. F = $(E).find(".dl-hide-current");
  598. $(E).removeClass(y)
  599. }
  600. $(C).addClass(y);
  601. if (!F) {
  602. F = new Node('<span class="dl-hide-current">&nbsp;&nbsp;</span>')
  603. }
  604. G = $(C);
  605. F.appendTo(G.children(".nav-item-inner"));
  606. G.prependTo(A)
  607. }
  608. }
  609. });
  610. k.MainPage = w
  611. });