dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #27785
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 13837: PT, supports relative sorting identifiers.
Merge authors:
Jan Henrik Øverland (janhenrik-overland)
------------------------------------------------------------
revno: 13837 [merge]
committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
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';