view.ui.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. window.reloadPage = function(e)
  2. {
  3. let $this = $(e.target);
  4. $.getJSON($this.attr('href'), function(response)
  5. {
  6. if(response.message)
  7. {
  8. zui.Modal.alert(response.message).then(() => response.locate ? loadPage(response.locate) : loadCurrentPage());
  9. }
  10. else
  11. {
  12. response.locate ? loadPage(response.locate) : loadCurrentPage();
  13. }
  14. });
  15. return false;
  16. };
  17. window.linkData = function(e)
  18. {
  19. let $this = $(e.target);
  20. let linkType = $(this).val();
  21. if(!linkType) return false;
  22. $('#linkTypeBox').modal('hide', 'fit');
  23. loadUnlinkData(linkType, 'browse', $this.find('option:selected').text());
  24. };
  25. window.unlinkData = function(obj)
  26. {
  27. let $this = $(obj);
  28. let url = $this.attr('href');
  29. zui.Modal.confirm($this.data('confirm')).then((res) => {
  30. if(!res) return false;
  31. $.getJSON(url, function(response)
  32. {
  33. if(response.result == 'success')
  34. {
  35. loadCurrentPage();
  36. return false;
  37. }
  38. zui.Modal.alert(response.message);
  39. })
  40. });
  41. return false;
  42. };
  43. $(document).ready(function()
  44. {
  45. if(linkType) $('a[href=#' + linkType + ']').trigger('click');
  46. if(viewMode == 'bysearch') loadUnlinkData(linkType, 'bysearch');
  47. })
  48. window.loadAllPrevData = function()
  49. {
  50. $('.prevField').each(function()
  51. {
  52. loadPrevData($(this));
  53. });
  54. $('.prevTR').each(function()
  55. {
  56. loadPrevData($(this), 0, 'tr');
  57. });
  58. }
  59. function loadUnlinkData(linkType, mode, tabTitle)
  60. {
  61. tabTitle = typeof tabTitle === 'undefined' ? '' : tabTitle;
  62. var pane = $('#' + linkType).length == 1 ? linkType : 'common';
  63. var $navTab = $('a[href=#' + pane + ']').parent();
  64. if($navTab.hasClass('hidden')) $navTab.removeClass('hidden');
  65. if(!$navTab.hasClass('active')) $navTab.find('a').click();
  66. if(tabTitle) $navTab.find('a').html(tabTitle);
  67. $('#querybox').remove();
  68. var link = loadLink.replace('LINKTYPE', linkType).replace('MODE', mode);
  69. $.get(link, function(data)
  70. {
  71. $('#' + pane).html(data);
  72. $('#' + pane).find('[data-ride=table]').table();
  73. $('#' + pane).removeClass('without-search');
  74. initSearch();
  75. });
  76. }
  77. /**
  78. * Ajax get search form.
  79. *
  80. * @param string $queryBox
  81. * @param callback $callback
  82. * @access public
  83. * @return void
  84. */
  85. function ajaxGetSearchForm($queryBox, callback)
  86. {
  87. if(!$queryBox) $queryBox = $('#querybox');
  88. if($queryBox.html() == '')
  89. {
  90. var module = $queryBox.data('module');
  91. $.get(createLink('search', 'buildOldForm', 'module=' + module), function(data)
  92. {
  93. $queryBox.html(data);
  94. callback && callback();
  95. });
  96. }
  97. }
  98. /**
  99. * Init search form.
  100. *
  101. * @access public
  102. * @return void
  103. */
  104. function initSearch()
  105. {
  106. $searchTab = $('#bysearchTab');
  107. if($searchTab.data('initSearch')) return;
  108. if(!$searchTab.closest('#menu').length)
  109. {
  110. $('#menu>.container>.nav:first').append($searchTab);
  111. }
  112. var $queryBox = $('#querybox');
  113. if(!$queryBox.length)
  114. {
  115. $queryBox = $("<div id='querybox' class='hidden'/>").insertAfter($('#menu'));
  116. }
  117. if(mode == 'bysearch')
  118. {
  119. $('#menu > ul > li.active').removeClass('active');
  120. ajaxGetSearchForm($queryBox);
  121. $searchTab.addClass('active').find('a').attr('href', '#bysearch');
  122. $queryBox.removeClass('hidden');
  123. }
  124. $searchTab.on('click', function()
  125. {
  126. var isSearchTabActive = $searchTab.hasClass('active');
  127. if(isSearchTabActive)
  128. {
  129. var $oldTab = $searchTab.data('oldTab');
  130. if($oldTab)
  131. {
  132. $oldTab.addClass('active');
  133. }
  134. else
  135. {
  136. $searchTab.addClass('selected');
  137. }
  138. }
  139. else
  140. {
  141. $(window).scrollTop(0);
  142. $searchTab.data('oldTab', $('#menu > ul > li.active').removeClass('active'));
  143. ajaxGetSearchForm($queryBox, function()
  144. {
  145. if(!$queryBox.hasClass('hidden')) $queryBox.trigger('querybox.toggle', true);
  146. });
  147. }
  148. $searchTab.toggleClass('active', !isSearchTabActive);
  149. $queryBox.toggleClass('hidden', isSearchTabActive).trigger('querybox.toggle', !isSearchTabActive);
  150. });
  151. $searchTab.data('initSearch', true);
  152. }