A Twitch.tv viewer reward and games system.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
6.0 KiB

  1. doctype html
  2. html(lang="en")
  3. head
  4. title= title
  5. link(rel='stylesheet', href='/lib/uikit/css/uikit.almost-flat.min.css')
  6. link(rel='stylesheet', href='/css/app.css')
  7. script(src='/lib/jquery.js')
  8. script(src='/lib/uikit/js/uikit.min.js')
  9. // Favicon stuff
  10. link(rel='apple-touch-icon', sizes='57x57', href='/apple-touch-icon-57x57.png')
  11. link(rel='apple-touch-icon', sizes='114x114', href='/apple-touch-icon-114x114.png')
  12. link(rel='apple-touch-icon', sizes='72x72', href='/apple-touch-icon-72x72.png')
  13. link(rel='apple-touch-icon', sizes='144x144', href='/apple-touch-icon-144x144.png')
  14. link(rel='apple-touch-icon', sizes='60x60', href='/apple-touch-icon-60x60.png')
  15. link(rel='apple-touch-icon', sizes='120x120', href='/apple-touch-icon-120x120.png')
  16. link(rel='apple-touch-icon', sizes='76x76', href='/apple-touch-icon-76x76.png')
  17. link(rel='apple-touch-icon', sizes='152x152', href='/apple-touch-icon-152x152.png')
  18. link(rel='icon', type='image/png', href='/favicon-196x196.png', sizes='196x196')
  19. link(rel='icon', type='image/png', href='/favicon-160x160.png', sizes='160x160')
  20. link(rel='icon', type='image/png', href='/favicon-96x96.png', sizes='96x96')
  21. link(rel='icon', type='image/png', href='/favicon-16x16.png', sizes='16x16')
  22. link(rel='icon', type='image/png', href='/favicon-32x32.png', sizes='32x32')
  23. meta(name='msapplication-TileColor', content='#da532c')
  24. meta(name='msapplication-TileImage', content='/mstile-144x144.png')
  25. body
  26. div.uk-grid
  27. div.uk-width-1-1
  28. div.uk-grid
  29. div.uk-width-1-4
  30. img(src='/img/#{logo}')
  31. div.uk-width-2-4
  32. // bigimagelogo
  33. h1.uk-text-center #{title}<br/>#{slogan}
  34. div.uk-width-1-4
  35. img.flip(src='/img/#{logo}')
  36. div.uk-width-1-1
  37. nav.uk-navbar
  38. ul.uk-navbar-nav.uk-navbar-center
  39. li: a(href='http://www.twitch.tv/#{title}'): img(src='/img/twitch.png', alt='Stream')
  40. li: a(href='/') Home
  41. li: a(href='/ladder') Ladder
  42. li: a(href='#') Chat Stats
  43. li: a(href='http://www.twitter.com/#{twitter}'): img(src='/img/twitter.gif', alt='Twitter')
  44. div.uk-width-1-1
  45. div.uk-container.uk-container-center
  46. div.uk-grid
  47. br
  48. br
  49. div.uk-width-1-1
  50. div.uk-panel.uk-panel-box
  51. div.uk-badge.uk-float-right
  52. form.uk-search
  53. input(class='uk-search-field', type='search', placeholder='Search...')
  54. button(class='uk-close', type='reset')
  55. table.uk-table.uk-table-hover.uk-table-striped
  56. caption Potato Farmer Ladder Rankings
  57. thead
  58. tr
  59. th Rank
  60. th Viewer
  61. th Potatoes
  62. tbody
  63. ul.uk-pagination
  64. script.
  65. var perPage = 50,
  66. data = !{JSON.stringify(rows)};
  67. $(document).ready(function(){
  68. // Live search of the ladder listings
  69. $('.uk-search-field').keyup(function() {
  70. var query = $(this).val();
  71. if(query.length > 2) {
  72. var temp = $('.uk-active').attr('page');
  73. $('.uk-active').removeClass('uk-active').empty().append('<a>'+temp+'</a>');
  74. $('table > tbody').empty();
  75. data.forEach(function(element, index, array) {
  76. if(element.user.search(new RegExp(query, 'i')) != -1) {
  77. $('table > tbody').append($('<tr></tr>').append('<td>'+index+'</td><td>'+element.user+'</td><td>'+element.points+'</td>'));
  78. }
  79. });
  80. }
  81. });
  82. // Create pagination buttons
  83. for(var i = 1; i <= Math.ceil(data.length/perPage); i++) {
  84. var button = $('<li page='+i+'></li>').append('<a>'+i+'</a>');
  85. button.on('click', function(){
  86. //get page
  87. var z = $(this).attr('page');
  88. // cleanup
  89. var temp = $('.uk-active').attr('page');
  90. $('.uk-active').removeClass('uk-active').empty().append('<a>'+temp+'</a>');
  91. $('table > tbody').empty();
  92. $(this).addClass('uk-active').empty().append('<span>'+z+'</span>');
  93. // slice(a, b): a = (n*(x-1))+1, b = n*x where n = perPage and x=curerntPage (skip +1 at end of a for splice)
  94. var a = (perPage*(z-1)),
  95. b = perPage*z;
  96. data.slice(a, b).forEach(function(element, index, array){
  97. $('table > tbody').append($('<tr></tr>').append('<td>'+(a+index+1)+'</td><td>'+element.user+'</td><td>'+element.points+'</td>'));
  98. });
  99. });
  100. $('.uk-pagination').append(button);
  101. }
  102. // When search input is cleared, go back to first page
  103. $('.uk-close').on('click', function(){
  104. $('ul.uk-pagination > li').first().click();
  105. });
  106. // Show the first page when we load up
  107. $('ul.uk-pagination > li').first().click();
  108. });