main-min.js 18 KB

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