Merge authors: Jan Henrik Ă˜verland (janhenrik-overland) ------------------------------------------------------------ revno: 13837 [merge] committer: Jan Henrik Overland <janhenrik.overl...@gmail.com> branch nick: dhis2 timestamp: Fri 2014-01-24 03:11:06 +0100 message: PT, supports relative sorting identifiers. modified: dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/app.js dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js
-- lp:dhis2 https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk Your team DHIS 2 developers is subscribed to branch lp:dhis2. To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/app.js' --- dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/app.js 2014-01-23 19:56:40 +0000 +++ dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/app.js 2014-01-24 02:09:28 +0000 @@ -2116,31 +2116,29 @@ } }; - //web.events.setColumnHeaderMouseHandlers = function(xLayout, response) { web.events.setColumnHeaderMouseHandlers = function(layout, xLayout, xResponse) { - if (Ext.isArray(xLayout.sortableIdObjects)) { - for (var i = 0, obj, el; i < xLayout.sortableIdObjects.length; i++) { - obj = xLayout.sortableIdObjects[i]; + if (Ext.isArray(xResponse.sortableIdObjects)) { + for (var i = 0, obj, el; i < xResponse.sortableIdObjects.length; i++) { + obj = xResponse.sortableIdObjects[i]; el = Ext.get(obj.uuid); el.dom.layout = layout; + el.dom.xLayout = xLayout; el.dom.xResponse = xResponse; el.dom.metaDataId = obj.id; el.dom.onColumnHeaderMouseClick = web.events.onColumnHeaderMouseClick; el.dom.onColumnHeaderMouseOver = web.events.onColumnHeaderMouseOver; el.dom.onColumnHeaderMouseOut = web.events.onColumnHeaderMouseOut; - //el.dom.setAttribute('onclick', 'this.onColumnHeaderMouseClick(this.xLayout, this.response, this.metaDataId)'); - el.dom.setAttribute('onclick', 'this.onColumnHeaderMouseClick(this.layout, this.xResponse, this.metaDataId)'); + el.dom.setAttribute('onclick', 'this.onColumnHeaderMouseClick(this.layout, this.xLayout, this.xResponse, this.metaDataId)'); el.dom.setAttribute('onmouseover', 'this.onColumnHeaderMouseOver(this)'); el.dom.setAttribute('onmouseout', 'this.onColumnHeaderMouseOut(this)'); } } }; - //web.events.onColumnHeaderMouseClick = function(xLayout, response, id) { - web.events.onColumnHeaderMouseClick = function(layout, xResponse, id) { - if (layout.sorting && layout.sorting.id === id) { + web.events.onColumnHeaderMouseClick = function(layout, xLayout, xResponse, id) { + if (xLayout.sorting && xLayout.sorting.id === id) { layout.sorting.direction = support.prototype.str.toggleDirection(layout.sorting.direction); } else { @@ -2151,8 +2149,6 @@ } web.pivot.createTable(layout, null, xResponse, false); - - //ns.core.web.pivot.sort(xLayout, response, id); }; web.events.onColumnHeaderMouseOver = function(el) { @@ -2321,7 +2317,7 @@ getHtml(xLayout, xResponse); } - web.pivot.sort(xLayout, xResponse); + web.pivot.sort(xLayout, xResponse, xColAxis || ns.app.xColAxis); xLayout = getXLayout(api.layout.Layout(xLayout)); } else { @@ -2338,6 +2334,8 @@ ns.app.xLayout = xLayout; ns.app.response = response; ns.app.xResponse = xResponse; + ns.app.xColAxis = xColAxis; + ns.app.xRowAxis = xRowAxis; ns.app.uuidDimUuidsMap = table.uuidDimUuidsMap; ns.app.uuidObjectMap = Ext.applyIf((xColAxis ? xColAxis.uuidObjectMap : {}), (xRowAxis ? xRowAxis.uuidObjectMap : {})); @@ -2356,36 +2354,6 @@ console.log("app", ns.app); } }; - - web.pivot.sort = function(xLayout, xResponse) { - var xResponse = Ext.clone(xResponse), - id = xLayout.sorting.id, - dim = xLayout.rows[0], - valueMap = xResponse.idValueMap, - direction = xLayout.sorting ? xLayout.sorting.direction : 'DESC', - layout; - - dim.ids = []; - - // collect values - for (var i = 0, item, key, value; i < dim.items.length; i++) { - item = dim.items[i]; - key = id + item.id; - value = parseFloat(valueMap[key]); - - item.value = Ext.isNumber(value) ? value : (Number.MAX_VALUE * -1); - } - - // sort - support.prototype.array.sort(dim.items, direction, 'value'); - - // new id order - for (var i = 0; i < dim.items.length; i++) { - dim.ids.push(dim.items[i].id); - } - - return xLayout; - }; }()); }; === modified file 'dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js' --- dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js 2014-01-23 19:55:42 +0000 +++ dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js 2014-01-24 02:09:28 +0000 @@ -443,7 +443,7 @@ layout.parentGraphMap = Ext.isObject(config.parentGraphMap) ? config.parentGraphMap : null; - layout.sorting = Ext.isObject(config.sorting) && Ext.isString(config.sorting.id) && Ext.isString(config.sorting.direction) ? config.sorting : null; + layout.sorting = Ext.isObject(config.sorting) && Ext.isDefined(config.sorting.id) && Ext.isString(config.sorting.direction) ? config.sorting : null; layout.reportingPeriod = Ext.isObject(config.reportParams) && Ext.isBoolean(config.reportParams.paramReportingPeriod) ? config.reportParams.paramReportingPeriod : (Ext.isBoolean(config.reportingPeriod) ? config.reportingPeriod : false); layout.organisationUnit = Ext.isObject(config.reportParams) && Ext.isBoolean(config.reportParams.paramOrganisationUnit) ? config.reportParams.paramOrganisationUnit : (Ext.isBoolean(config.organisationUnit) ? config.organisationUnit : false); @@ -856,10 +856,10 @@ dimensionNameIdsMap: {}, // for param string - dimensionNameSortedIdsMap: {}, + dimensionNameSortedIdsMap: {} // sort table by column - sortableIdObjects: [] + //sortableIdObjects: [] }; Ext.applyIf(xLayout, layout); @@ -1818,6 +1818,53 @@ // pivot web.pivot = {}; + web.pivot.sort = function(xLayout, xResponse, xColAxis) { + var xResponse = Ext.clone(xResponse), + id = xLayout.sorting.id, + dim = xLayout.rows[0], + valueMap = xResponse.idValueMap, + direction = xLayout.sorting ? xLayout.sorting.direction : 'DESC', + layout; + + dim.ids = []; + + // relative id? + if ((Ext.isString(id) && id.toLowerCase() === 'total') || id === 0) { + id = 'total_'; + } + else if (Ext.isNumber(parseInt(id))) { + id = xColAxis.ids[parseInt(id) - 1]; + + if (!id) { + return xLayout; + } + } + + // collect values + for (var i = 0, item, key, value; i < dim.items.length; i++) { + item = dim.items[i]; + key = id + item.id; + value = parseFloat(valueMap[key]); + + item.value = Ext.isNumber(value) ? value : (Number.MAX_VALUE * -1); + } + + // sort + support.prototype.array.sort(dim.items, direction, 'value'); + + // new id order + for (var i = 0; i < dim.items.length; i++) { + dim.ids.push(dim.items[i].id); + } + + // update id + if (id !== xLayout.sorting.id) { + xLayout.sorting.id = id; + } + + return xLayout; + }; + web.pivot.getHtml = function(xLayout, xResponse, xColAxis, xRowAxis) { var getRoundedHtmlValue, getTdHtml, @@ -1852,6 +1899,8 @@ isLegendSet = Ext.isObject(xLayout.legendSet) && Ext.isArray(xLayout.legendSet.mapLegends) && xLayout.legendSet.mapLegends.length, htmlArray; + xResponse.sortableIdObjects = []; + getRoundedHtmlValue = function(value, dec) { dec = dec || 2; return parseFloat(support.prototype.number.roundIf(value, 2)).toString(); @@ -1902,7 +1951,7 @@ if (Ext.isString(metaDataId)) { cls += ' td-sortable'; - xLayout.sortableIdObjects.push({ + xResponse.sortableIdObjects.push({ id: metaDataId, uuid: config.uuid }); @@ -1996,6 +2045,8 @@ for (var j = 0, obj, spanCount = 0, condoId, totalId; j < xColAxis.size; j++) { spanCount++; + condoId = null; + totalId = null; obj = xColAxis.objects.all[i][j]; obj.type = 'dimension';
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp