From: Mike Taylor Date: Wed, 19 Mar 2014 15:56:36 +0000 (+0000) Subject: Move pager code into its own object. X-Git-Tag: 1.0.0~1303 X-Git-Url: http://git.indexdata.com/?a=commitdiff_plain;h=61b3773a2c551e9a7114a2057b2e2fb601db7e4d;p=mkws-moved-to-github.git Move pager code into its own object. To support this add three new accessor methods to the team object: perpage, totalRecordCount, currentPage --- diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 3f8c84c..04dca89 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -164,6 +164,8 @@ function widget($, team, type, node) { promoteStat(); } else if (type === 'Termlists') { promoteTermlists(); + } else if (type === 'Pager') { + promotePager(); } else { // ### Handle other types here } @@ -276,6 +278,68 @@ function widget($, team, type, node) { } }); } + + + function promotePager() { + team.queue("pager").subscribe(function(data) { + if (node) { + $(node).html(drawPager(data)) + } + + function drawPager(data) { + var s = '
' + M('Displaying') + ': ' + + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + + ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' + + data.total + ')
'; + + //client indexes pages from 1 but pz2 from 0 + var onsides = 6; + var pages = Math.ceil(team.totalRecordCount() / team.perpage()); + var currentPage = team.currentPage(); + + var firstClkbl = (currentPage - onsides > 0) + ? currentPage - onsides + : 1; + + var lastClkbl = firstClkbl + 2*onsides < pages + ? firstClkbl + 2*onsides + : pages; + + var prev = '<< ' + M('Prev') + ' | '; + if (currentPage > 1) + prev = '' + +'<< ' + M('Prev') + ' | '; + + var middle = ''; + for(var i = firstClkbl; i <= lastClkbl; i++) { + var numLabel = i; + if(i == currentPage) + numLabel = '' + i + ''; + + middle += ' ' + + numLabel + ' '; + } + + var next = ' | ' + M('Next') + ' >>'; + if (pages - currentPage > 0) + next = ' | ' + + M('Next') + ' >>'; + + var predots = ''; + if (firstClkbl > 1) + predots = '...'; + + var postdots = ''; + if (lastClkbl < pages) + postdots = '...'; + + s += '
' + + prev + predots + middle + postdots + next + '
'; + + return s; + } + }); + } } @@ -290,7 +354,6 @@ function widget($, team, type, node) { function team($, teamName) { var that = {}; var m_teamName = teamName; - that.name = function() { return m_teamName; } var m_submitted = false; var m_query; // initially undefined var m_sortOrder; // will be set below @@ -308,6 +371,10 @@ function team($, teamName) { var m_paz; // will be initialised below var m_template = {}; + that.name = function() { return m_teamName; } + that.perpage = function() { return m_perpage; } + that.totalRecordCount = function() { return m_totalRecordCount; } + that.currentPage = function() { return m_currentPage; } var debug = function (s) { var now = $.now(); @@ -372,10 +439,7 @@ function team($, teamName) { debug("show"); m_totalRecordCount = data.merged; - var pager = findnode(".mkwsPager"); - if (pager.length) { - pager.html(drawPager(data)) - } + queue("pager").publish(data); var results = findnode(".mkwsRecords"); if (!results.length) @@ -422,60 +486,6 @@ function team($, teamName) { } - function drawPager (data) - { - var s = '
' + M('Displaying') + ': ' - + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + - ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' - + data.total + ')
'; - - //client indexes pages from 1 but pz2 from 0 - var onsides = 6; - var pages = Math.ceil(m_totalRecordCount / m_perpage); - - var firstClkbl = (m_currentPage - onsides > 0) - ? m_currentPage - onsides - : 1; - - var lastClkbl = firstClkbl + 2*onsides < pages - ? firstClkbl + 2*onsides - : pages; - - var prev = '<< ' + M('Prev') + ' | '; - if (m_currentPage > 1) - prev = '' - +'<< ' + M('Prev') + ' | '; - - var middle = ''; - for(var i = firstClkbl; i <= lastClkbl; i++) { - var numLabel = i; - if(i == m_currentPage) - numLabel = '' + i + ''; - - middle += ' ' - + numLabel + ' '; - } - - var next = ' | ' + M('Next') + ' >>'; - if (pages - m_currentPage > 0) - next = ' | ' - + M('Next') + ' >>'; - - var predots = ''; - if (firstClkbl > 1) - predots = '...'; - - var postdots = ''; - if (lastClkbl < pages) - postdots = '...'; - - s += '
' - + prev + predots + middle + postdots + next + '
'; - - return s; - } - - //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////