footer.html.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <script>
  2. $('#showData > tbody').addClass('load-indicator loading');
  3. $.get(createLink('transfer', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=0&pagerID=<?php echo $pagerID;?>'), function(data)
  4. {
  5. $('#showData > tbody').append(data);
  6. if($('#showData tbody').find('tr').hasClass('showmore') === false) $('#showData tfoot').removeClass('hidden');
  7. $('#showData tbody').find('.picker-select').picker({chosenMode: true});
  8. $('.form-date').datetimepicker({minView: 2, format: "yyyy-mm-dd"});
  9. $('.form-datetime').datetimepicker('update');
  10. $('#showData > tbody').removeClass('load-indicator loading');
  11. if(typeof(getTbodyLoaded) == 'function') getTbodyLoaded();
  12. })
  13. window.addEventListener('scroll', this.handleScroll);
  14. function handleScroll(e)
  15. {
  16. var relative = 500; // 相对距离
  17. $('tr.showmore').each(function()
  18. {
  19. var $showmore = $(this);
  20. var offsetTop = $showmore[0].offsetTop;
  21. if(offsetTop == 0) return true;
  22. if(getScrollTop() + getWindowHeight() >= offsetTop - relative)
  23. {
  24. throttle(loadData($showmore), 250)
  25. }
  26. })
  27. }
  28. function loadData($showmore)
  29. {
  30. $showmore.removeClass('showmore');
  31. var lastID = $showmore.attr('data-id');
  32. var url = createLink('transfer', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=' + lastID + '&pagerID=<?php echo $pagerID;?>');
  33. $.get(url, function(data)
  34. {
  35. $showmore.after(data);
  36. if($('#showData tbody').find('tr').hasClass('showmore') === false) $('#showData tfoot').removeClass('hidden');
  37. $('#showData tbody').find('.picker-select').picker({chosenMode: true}).removeClass('nopicker');
  38. $('.form-date').datetimepicker({minView: 2, format: "yyyy-mm-dd"});
  39. $('.form-datetime').datetimepicker('update');
  40. })
  41. }
  42. function throttle(fn, threshhold)
  43. {
  44. var last;
  45. var timer;
  46. threshhold || (threshhold = 250);
  47. return function()
  48. {
  49. var context = this;
  50. var args = arguments;
  51. var now = +new Date()
  52. if (last && now < last + threshhold)
  53. {
  54. clearTimeout(timer);
  55. timer = setTimeout(function ()
  56. {
  57. last = now
  58. fn.apply(context, args)
  59. }, threshhold)
  60. }
  61. else
  62. {
  63. last = now
  64. fn.apply(context, args)
  65. }
  66. }
  67. }
  68. function getScrollTop()
  69. {
  70. return scrollTop = document.body.scrollTop + document.documentElement.scrollTop
  71. }
  72. function getWindowHeight()
  73. {
  74. return document.compatMode == "CSS1Compat" ? windowHeight = document.documentElement.clientHeight : windowHeight = document.body.clientHeight
  75. }
  76. $('#showData').on('mouseenter', '.picker', function(e){
  77. var myPicker = $(this);
  78. var field = myPicker.prev().attr('data-field');
  79. var id = myPicker.prev().attr('id');
  80. var name = myPicker.prev().attr('name');
  81. var index = Number(name.replace(/[^\d]/g, " "));
  82. var value = myPicker.prev().val();
  83. if($('#' + id).attr('isInit')) return;
  84. $.ajaxSettings.async = false;
  85. $.get(createLink('transfer', 'ajaxGetOptions', 'model=<?php echo $model;?>&field=' + field + '&value=' + value + '&index=' + index), function(data)
  86. {
  87. $('#' + id).parent().html(data);
  88. $('#' + id).picker({chosenMode: true});
  89. $('#' + id).attr('isInit', true);
  90. $('#' + id).attr('data-field', field);
  91. });
  92. $.ajaxSettings.async = true;
  93. })
  94. $(function()
  95. {
  96. $('#showData > tbody').addClass('load-indicator loading');
  97. $.get(createLink('transfer', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=0&pagerID=<?php echo $pagerID;?>'), function(data)
  98. {
  99. $('#showData > tbody').append(data);
  100. if($('#showData tbody').find('tr').hasClass('showmore') === false) $('#showData tfoot').removeClass('hidden');
  101. $('#showData tbody').find('.picker-select').picker({chosenMode: true});
  102. $('.form-date').datetimepicker({minView: 2, format: "yyyy-mm-dd"});
  103. $('.form-datetime').datetimepicker('update');
  104. $('#showData > tbody').removeClass('load-indicator loading');
  105. if($('#showData tr.text-top').length == allCount) $('#showData tfoot').removeClass('hidden');
  106. if(typeof(getTbodyLoaded) == 'function') getTbodyLoaded();
  107. })
  108. $.fixedTableHead('#showData');
  109. $("#showData th").each(function()
  110. {
  111. if(requiredFields.indexOf(this.id) !== -1) $("#" + this.id).addClass('required');
  112. });
  113. });
  114. function delItem(val)
  115. {
  116. $(val).parents('tr').remove();
  117. }
  118. </script>
  119. <?php include $app->getModuleRoot() . 'common/view/footer.html.php';?>