diff options
author | emkael <emkael@tlen.pl> | 2017-09-07 12:12:16 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2017-09-07 12:12:16 +0200 |
commit | 157d38e305f2144e546ec1e964292477cae9516d (patch) | |
tree | 8ccea8e785918952235ed4d4ced8df12af34fc8f /http/res/ranking.js | |
parent | b011fb2daa0f6b8591cbc495ec069b50ff337204 (diff) |
Renaming HTTP resource directories to prefixed names
Diffstat (limited to 'http/res/ranking.js')
-rw-r--r-- | http/res/ranking.js | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/http/res/ranking.js b/http/res/ranking.js deleted file mode 100644 index c493ea3..0000000 --- a/http/res/ranking.js +++ /dev/null @@ -1,312 +0,0 @@ -var ranking = { - - rankingData : {}, - - tableRowTemplate: undefined, - - loadData : function(url, callback) { - $.getJSON(url, function(data) { - ranking.rankingData = data; - callback(); - }); - }, - - playerClick : function(ev) { - if (!$(ev.target).closest('a').size()) { - var row = $(this); - var pid = row.find('td.pid').text(); - if (pid) { - var link = 'players/' + pid.trim() + '.html'; - location.href = link; - } - } - }, - - parseHash : function(hash) { - hash = hash.replace(/^#/, ''); - var hashParams = hash.split(';'); - var params = new Map(); - hashParams.forEach(function(hashParam) { - var param = hashParam.split(':'); - if (param.length > 1) { - params.set(param[0], decodeURI(param[1]).split(',')); - } - }); - return params; - }, - - constructHash : function(params) { - var paramArray = []; - params.forEach(function(value, key) { - paramArray.push(key + ':' + value.join(',')); - }); - return paramArray.join(';'); - }, - - savedParams : new Map(), - - paramChanged: function(params, param) { - var newParam = params.get(param) || []; - var oldParam = ranking.savedParams.get(param) || []; - return (newParam.length != oldParam.length) || (newParam.join(',') != oldParam.join(',')); - }, - - readHash : function(force) { - var params = ranking.parseHash(location.hash); - var allParams = ['age', 'gender', 'region', 'name', 'page', 'pagesize']; - var paramsChanged = false; - if (force) { - paramsChanged = true; - } else { - allParams.forEach(function(param) { - paramsChanged |= ranking.paramChanged(params, param); - }); - } - $('button.btn-primary').removeClass('btn-primary'); - params.forEach(function(values, param) { - values.forEach(function(value) { - $('button[data-filter="' + param + '"][data-value="' + value + '"]').addClass('btn-primary'); - }); - }); - var filtersPresent = false; - allParams.forEach(function(param) { - if ($('button[data-filter="' + param + '"]').size() > 0 - && $('button[data-filter="' + param + '"].btn-primary').size() == 0) { - $('button[data-clear="' + param + '"]').addClass('btn-primary'); - } else { - filtersPresent |= ($('button[data-filter="' + param + '"]').size() > 0); - } - var field = $('input[data-filter-field="' + param + '"]'); - if (field.size() > 0) { - field.val(params.get(param)); - if (field.val().length > 0) { - filtersPresent = true; - } - } - }); - if (filtersPresent) { - $('#filters').collapse(); - } - if (paramsChanged) { - ranking.filterRows(params); - ranking.savedParams = params; - } - $('table.data-table, .filters .panel-body').css('opacity', 1); - ranking.filtersDisabled = false; - }, - - filtersDisabled: false, - - filterRows : function(params) { - $('table.data-table tbody tr').remove(); - var displayRows = []; - ranking.rankingData.forEach(function(row) { - var hidden = false; - params.forEach(function(value, param) { - if (param == 'name') { - if (row['player'].trim().toLowerCase().search(value.join('')) == -1) { - hidden = true; - } - } else if (param.substr(0, 4) != 'page') { - if (value.indexOf(row[param].trim()) == -1) { - hidden = true; - } - } - }); - if (!hidden) { - displayRows.push(row); - } - }); - var allCount = displayRows.length; - var page = params.get('page') || [0]; - page = parseInt(page[0]) || 1; - var pagesize = params.get('pagesize') || [0]; - pagesize = parseInt(pagesize[0]) || parseInt($('select#pagesize').val()); - displayRows = displayRows.slice((page-1) * pagesize, page * pagesize); - displayRows.forEach(function(row) { - $('table.data-table tbody').append(ranking.buildTableRow(row)); - }); - ranking.buildPaginator('#top-paginator', allCount, pagesize, page); - ranking.buildPaginator('#bottom-paginator', allCount, pagesize, page); - $(document).trigger('pagesizeInfo', { 'count': allCount, 'size': pagesize }); - if (page == 1) { - $('table.data-table tbody tr').eq(0).addClass('gold'); - $('table.data-table tbody tr').eq(1).addClass('silver'); - $('table.data-table tbody tr').eq(2).addClass('bronze'); - } - }, - - buildTableRow: function(row) { - var tableRow = ranking.tableRowTemplate.clone(true); - tableRow.find('td.pid').text(row['pid']); - tableRow.find('td.pidlink a').attr( - 'href', - 'https://msc.com.pl/cezar/?p=21&pid=' + row['pid'] - ); - tableRow.find('td.name').text(row['player']); - tableRow.find('td.club').text(row['club']); - ['gender', 'age', 'region'].forEach(function(category) { - tableRow.find('td.' + category).text(row[category]); - var categoryPlace = tableRow.find('td.' + category + '-place'); - categoryPlace.find('.rank').text(row[category + '-place']); - var badge = categoryPlace.find('.change'); - badge.text(row[category + '-change']); - badge.addClass('label-' + row[category + '-change-class']); - if (row[category + '-place'] == 1) { - tableRow.addClass('info'); - } - }); - var scoreCell = tableRow.find('td.ranking span'); - scoreCell.attr('title', row['score']); - scoreCell.text(row['score'].toFixed(2)); - tableRow.find('td.place .rank').text(row['place']); - var badge = tableRow.find('td.place .change'); - badge.text(row['place-change']); - badge.addClass('label-' + row['place-change-class']); - return tableRow; - }, - - buildPaginator: function(selector, count, pagesize, page) { - var box = $(selector); - box.html(''); - var buttonGroup = $('<div>').addClass('btn-group'); - var pages = parseInt(Math.ceil(count / pagesize)); - buttonGroup.attr('data-pages', pages); - buttonGroup.append($('<button>').addClass('btn btn-default paginator-prev').attr('type', 'button').text('<<')); - for (var i = 0; i < pages; i++) { - var pageBtn = $('<button>').addClass('btn btn-default paginator-page').attr('type', 'button').attr('data-page', i+1).text(i+1); - if (i+1 == page) { - pageBtn.addClass('btn-primary'); - } - buttonGroup.append(pageBtn); - } - buttonGroup.append($('<button>').addClass('btn btn-default paginator-next').attr('type', 'button').text('>>')); - box.append(buttonGroup); - }, - - changePage: function() { - $('table.data-table').css('opacity', 0.1); - var btn = $(this); - var page = parseInt(btn.attr('data-page')); - var params = ranking.parseHash(location.hash); - var currentPage = params.get('page'); - currentPage = currentPage ? parseInt(currentPage[0]) : 1; - if (btn.hasClass('paginator-prev')) { - page = currentPage - 1; - } - if (btn.hasClass('paginator-next')) { - page = currentPage + 1; - } - var count = parseInt(btn.closest('[data-pages]').attr('data-pages')); - if (page > 0 && page <= count && page != currentPage) { - params.set('page', [page]); - location.hash = ranking.constructHash(params); - } else { - $('table.data-table').css('opacity', 1); - } - }, - - init : function() { - - $(document).ready(function() { - $(window).on('hashchange', function(ev, params) { - var force = params ? params['force'] : false; - ranking.filtersDisabled = true; - $('table.data-table, .filters .panel-body').css('opacity', 0.1); - ranking.readHash(force); - }); - ranking.tableRowTemplate = $('table.data-table tbody tr').remove(); - ranking.tableRowTemplate.click(ranking.playerClick); - ranking.loadData( - $('table.data-table').attr('data-ranking'), - function() { - $(window).trigger('hashchange', {'force': true}); - } - ); - }); - - var handleParams = function(callback, target, ev) { - if (!ranking.filtersDisabled) { - ranking.filtersDisabled = true; - $('table.data-table, .filters .panel-body').css('opacity', 0.1); - var oldHash = location.hash.replace(/^#/, ''); - var newParams = callback(target, ev); - var newHash = ranking.constructHash(newParams); - if (oldHash != newHash) { - location.hash = newHash; - } else { - $('table.data-table, .filters .panel-body').css('opacity', 1); - ranking.filtersDisabled = false; - } - } - }; - - $('button[data-filter-action]').click(function(ev) { - handleParams(function(target, ev) { - var button = target; - var params = ranking.parseHash(location.hash); - var param = params.get(button.attr('data-filter-action')); - var value = $('input[data-filter-field="' + button.attr('data-filter-action') + '"]').val().trim().toLowerCase(); - if (value.length > 0) { - params.set(button.attr('data-filter-action'), [value]); - params.delete('page'); - } - return params; - }, $(this), ev); - }); - - $('button[data-filter]').click(function(ev) { - handleParams(function(target, ev) { - var button = target; - var params = ranking.parseHash(location.hash); - var param = params.get(button.attr('data-filter')); - var value = button.attr('data-value'); - var index = param ? param.indexOf(value) : -1; - if (index > -1) { - param = param.filter(function(v) { return v != value; }); - } else { - if (!param || !ev.ctrlKey) { - param = []; - } - param.push(value); - } - if (!param.length) { - params.delete(button.attr('data-filter')); - } else { - params.set(button.attr('data-filter'), param); - } - params.delete('page'); - return params; - }, $(this), ev); - }); - - $('button[data-clear]').click(function() { - handleParams(function(target, ev) { - var button = target; - var params = ranking.parseHash(location.hash); - params.delete(button.attr('data-clear')); - params.delete('page'); - return params; - }, $(this)); - }); - - $('select#pagesize').change(function() { - handleParams(function(target, ev) { - var params = ranking.parseHash(location.hash); - params.delete('page'); - params.set('pagesize', [parseInt(target.val())]); - return params; - }, $(this)); - }); - - $(document).on('click', 'button.paginator-prev, button.paginator-next, button.paginator-page', ranking.changePage); - - $(document).on('pagesizeInfo', function(ev, params) { - $('span#paginate-count').text(params.count); - $('select#pagesize').val(params.size); - }); - } - -}; - -ranking.init(); |