X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-team.js;h=17f0f1f770e2b0a94180d63f48499e22ff43239b;hb=24b694ad5605a6f9d2a662677fbfcf9e6b0b693c;hp=bae55cf4fca8d7049d1fe3b74eb00e694f2a261d;hpb=61e95cf874362f311c783de8dcd736d375aac714;p=mkws-moved-to-github.git diff --git a/src/mkws-team.js b/src/mkws-team.js index bae55cf..17f0f1f 100644 --- a/src/mkws-team.js +++ b/src/mkws-team.js @@ -67,14 +67,24 @@ mkws.makeTeam = function($, teamName) { m_state.sort = config.sort_default; m_state.size = config.perpage_default; + var m_default = $.extend(true, {}, m_state); + var tmp = m_default.filters; + delete m_default.filters; + $.extend(m_default, tmp.fragmentItems()); - that.urlFragment = function () { + that.urlFragment = function(overrides) { var s; - for (var key in m_state) { - if (m_state.hasOwnProperty(key) && - m_state[key] != m_default[key]) { + // Expand the filterSet into a set of key=value properties + var state = $.extend(true, {}, m_state, overrides ? overrides : {}); + var tmp = state.filters; + delete state.filters; + $.extend(state, tmp.fragmentItems()); + + for (var key in state) { + if (state.hasOwnProperty(key) && + state[key] != m_default[key]) { if (!s) { var s = 'mkws'; if (m_teamName !== 'AUTO') s += m_teamName; @@ -83,13 +93,57 @@ mkws.makeTeam = function($, teamName) { s += "@"; } - s += key + '=' + m_state[key]; + // ### how do we need to quote this? + s += key + '=' + state[key]; } } return s; } + // ### what quoting do we need to undo? Complement of previous function + that.parseFragment = function(s) { + var x = {}; + + var list = s.split('@'); + for (var i in list) { + var a = list[i].split('='); + x[a[0]] = a[1]; + } + + return x; + } + + that.handleChanges = function(oldState, newState) { + for (var key in newState) { + var val = newState[key]; + if (newState.hasOwnProperty(key) && + (!oldState || val != oldState[key])) { + that.warn("changed property " + key + ": " + + (oldState ? ("'" + oldState[key] + "'") : "undefined") + + " -> '" + val + "'"); + if (key === 'page') { + that.showPage(parseInt(val)); + } else if (key === 'sort') { + that.set_sortOrder(val); + if (that.submitted()) { + that.reShow(); + } + } else if (key === 'size') { + that.set_perpage(val); + if (that.submitted()) { + that.reShow(); + } + } else if (key.indexOf('xt-') == 0) { + that.limitTarget(key.substring(3), val); + } else if (key.indexOf('xf-') == 0) { + var a = key.split('-'); + that.limitQuery(a[1], a[2]); + } + } + } + }; + // The following PubSub code is modified from the jQuery manual: // http://api.jquery.com/jQuery.Callbacks/ @@ -288,6 +342,7 @@ mkws.makeTeam = function($, teamName) { that.showPage = function(pageNum) { m_state.page = pageNum; m_paz.showPage(m_state.page - 1); + that.warn("fragment: " + that.urlFragment()); }; @@ -295,13 +350,16 @@ mkws.makeTeam = function($, teamName) { if (m_totalRecordCount - m_state.size * m_state.page > 0) { m_paz.showNext(); m_state.page++; + that.warn("fragment: " + that.urlFragment()); } }; that.pagerPrev = function() { - if (m_paz.showPrev() != false) + if (m_paz.showPrev() != false) { m_state.page--; + that.warn("fragment: " + that.urlFragment()); + } }; @@ -376,6 +434,7 @@ mkws.makeTeam = function($, teamName) { that.fetchDetails = function(recId) { that.info("fetchDetails() requesting record '" + recId + "'"); m_paz.record(recId); + that.warn("fragment: " + that.urlFragment()); };