catalog.blade.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. @extends('wap-browser.template')
  2. @section('head')
  3. <link rel="stylesheet" href="/wapbrowser/web/component.css">
  4. <style>
  5. </style>
  6. @endsection
  7. @section('body')
  8. <div class="book-catalog">
  9. @component('wap-browser.component.header',['name'=>$title])
  10. @endcomponent
  11. <div class="spinner-prev" style="height: 30px; overflow: hidden;display:none">
  12. <div class="mint-spinner-snake" style="margin: 0 auto;border-top-color: rgb(38, 162, 255); border-left-color: rgb(38, 162, 255); border-bottom-color: rgb(38, 162, 255); height: 28px; width: 28px;"></div>
  13. </div>
  14. @component('wap-browser.component.catalog',['catalogs'=>[]])
  15. @endcomponent
  16. <div class="spinner-next" style="height: 30px; overflow: hidden;">
  17. <div class="mint-spinner-snake" style="margin: 0 auto;border-top-color: rgb(38, 162, 255); border-left-color: rgb(38, 162, 255); border-bottom-color: rgb(38, 162, 255); height: 28px; width: 28px;"></div>
  18. </div>
  19. </div>
  20. @endsection
  21. @section('foot')
  22. <script>
  23. var last = false,
  24. first = true,
  25. page = 1;
  26. function createCatalogItem(catalog){
  27. var item = document.createElement('a')
  28. item.setAttribute('href', '/reader?bid='+catalog.bid+'&cid='+catalog.chapter_id+'')
  29. item.setAttribute('class', 'book-catalog-item')
  30. if(catalog.chapter_is_vip) {
  31. item.innerHTML = '\
  32. <span class="book-catalog-item__name">'+catalog.chapter_name+'</span>\
  33. <img src="/wapbrowser/web/vip.png" class="book-catalog-item__vip">'
  34. } else {
  35. item.innerHTML = '<span class="book-catalog-item__name">'+catalog.chapter_name+'</span>'
  36. }
  37. return item
  38. }
  39. function showLoading(side,json){
  40. // 下一页
  41. if(side){
  42. if( json.data.meta.last_page === json.data.meta.current_page ) {
  43. last = true
  44. document.querySelector('.spinner-next').style.display = 'none'
  45. } else {
  46. last = false
  47. document.querySelector('.spinner-next').style.display = ''
  48. }
  49. } else {
  50. // 上一页
  51. if( json.data.meta.current_page > 1) {
  52. first = false
  53. document.querySelector('.spinner-prev').style.display = ''
  54. document.documentElement.scrollTop = document.documentElement.clientHeight
  55. } else {
  56. first = true
  57. document.querySelector('.spinner-prev').style.display = 'none'
  58. }
  59. }
  60. }
  61. /*
  62. * append = true 下一页
  63. * append = false 上一页
  64. */
  65. function getCatalogList(append){
  66. var listWrapper = document.querySelector('.book-catalog-list')
  67. var params = {
  68. page: page
  69. }
  70. var url = '/apiCatalog?bid={{ $bid }}&page='+params.page
  71. function cb(data){
  72. getCatalogList.loading = false;
  73. data.data.list.map(function(catalog){
  74. var newEl = createCatalogItem(catalog)
  75. append ? listWrapper.appendChild(newEl) : listWrapper.insertBefore(newEl,listWrapper.children[0])
  76. })
  77. showLoading(append, data)
  78. }
  79. getJSON(url,cb)
  80. getCatalogList.loading = true
  81. }
  82. addEvent(window, 'scroll', function(e) {
  83. if(getCatalogList.loading || last) return
  84. var scrollbottom = Math.max(window.pageYOffset || 0, document.documentElement.scrollTop) + document.documentElement.clientHeight
  85. if(scrollbottom + 50 > document.body.offsetHeight) {
  86. page++
  87. getCatalogList(true)
  88. }
  89. // 加载前一页还不是很完善
  90. if(document.documentElement.scrollTop === 0){
  91. if(first) return
  92. page--
  93. getCatalogList(false)
  94. }
  95. })
  96. getCatalogList(true)
  97. </script>
  98. @endsection