dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #35198
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18070: Dashboard, chart legend name length AI improved.
Merge authors:
Jan Henrik Øverland (janhenrik-overland)
------------------------------------------------------------
revno: 18070 [merge]
committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-01-20 16:23:03 +0100
message:
Dashboard, chart legend name length AI improved.
modified:
dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/dashboard.js
dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/chart.js
dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/map.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-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/dashboard.js'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/dashboard.js 2015-01-20 11:35:02 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/dashboard.js 2015-01-20 15:21:54 +0000
@@ -556,7 +556,7 @@
labelFont: '9px sans-serif'
},
legendStyle: {
- labelMaxLength: 10,
+ //labelMaxLength: 10,
labelFont: 'normal 10px sans-serif',
labelColor: '#222',
labelMarkerSize: 10,
=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/chart.js'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/chart.js 2015-01-15 23:40:16 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/chart.js 2015-01-20 15:20:41 +0000
@@ -1255,6 +1255,26 @@
return array.length;
};
+ support.prototype.array.getMaxLength = function(array, suppressWarning) {
+ if (!Ext.isArray(array)) {
+ if (!suppressWarning) {
+ console.log('support.prototype.array.getLength: not an array');
+ }
+
+ return null;
+ }
+
+ var maxLength = 0;
+
+ for (var i = 0; i < array.length; i++) {
+ if (Ext.isString(array[i]) && array[i].length > maxLength) {
+ maxLength = array[i].length;
+ }
+ }
+
+ return maxLength;
+ };
+
support.prototype.array.sort = function(array, direction, key) {
// accepts [number], [string], [{prop: number}], [{prop: string}]
@@ -2302,6 +2322,7 @@
getDefaultStore,
getDefaultNumericAxis,
getDefaultCategoryAxis,
+ getFormatedSeriesTitle,
getDefaultSeriesTitle,
getPieSeriesTitle,
getDefaultSeries,
@@ -2716,6 +2737,53 @@
return axis;
};
+ getFormatedSeriesTitle = function(titles) {
+ var itemLength = ns.dashboard ? 23 : 30,
+ charLength = ns.dashboard ? 5 : 6,
+ numberOfItems = titles.length,
+ numberOfChars,
+ totalItemLength = numberOfItems * itemLength,
+ minLength = 5,
+ maxLength = support.prototype.array.getMaxLength(titles),
+ fallbackLength = 10,
+ maxWidth = ns.app.centerRegion.getWidth(),
+ width,
+ validateTitles;
+
+ getValidatedTitles = function(titles, len) {
+ var numberOfItems = titles.length,
+ newTitles,
+ fallbackTitles;
+
+ fallbackLength = len < fallbackLength ? len : fallbackLength;
+
+ for (var i = len, width; i >= minLength; i--) {
+ newTitles = [];
+
+ for (var j = 0, title, numberOfChars, newTitle; j < titles.length; j++) {
+ title = titles[j];
+
+ newTitles.push(title.length > i ? (title.slice(0, i) + '..') : title);
+ }
+
+ numberOfChars = newTitles.join('').length;
+ width = totalItemLength + (numberOfChars * charLength);
+
+ if (i === fallbackLength) {
+ fallbackTitles = Ext.clone(newTitles);
+ }
+
+ if (width < maxWidth) {
+ return newTitles;
+ }
+ }
+
+ return fallbackTitles;
+ };
+
+ return getValidatedTitles(titles, maxLength);
+ };
+
getDefaultSeriesTitle = function(store) {
var a = [];
@@ -2727,17 +2795,17 @@
id = failSafeColumnIdMap[store.rangeFields[i]];
name = xResponse.metaData.names[id];
- if (Ext.isString(name) && Ext.isObject(xLayout.legendStyle) && Ext.isNumber(xLayout.legendStyle.labelMaxLength)) {
- var mxl = parseInt(xLayout.legendStyle.labelMaxLength);
+ //if (Ext.isString(name) && Ext.isObject(xLayout.legendStyle) && Ext.isNumber(xLayout.legendStyle.labelMaxLength)) {
+ //var mxl = parseInt(xLayout.legendStyle.labelMaxLength);
- name = name.length > mxl ? name.substr(0, mxl) + '..' : name;
- }
+ //name = name.length > mxl ? name.substr(0, mxl) + '..' : name;
+ //}
a.push(name);
}
}
- return a;
+ return getFormatedSeriesTitle(a);
};
getPieSeriesTitle = function(store) {
@@ -2747,23 +2815,20 @@
return xLayout.legendStyle.labelNames;
}
else {
- var id = store.domainFields[0],
- name;
+ var id = store.domainFields[0];
store.each( function(r) {
- name = r.data[id];
-
- if (Ext.isString(name) && Ext.isObject(xLayout.legendStyle) && Ext.isNumber(xLayout.legendStyle.labelMaxLength)) {
- var mxl = parseInt(xLayout.legendStyle.labelMaxLength);
-
- name = name.length > mxl ? name.substr(0, mxl) + '..' : name;
- }
-
- a.push(name);
+ a.push(r.data[id]);
+
+ //if (Ext.isString(name) && Ext.isObject(xLayout.legendStyle) && Ext.isNumber(xLayout.legendStyle.labelMaxLength)) {
+ //var mxl = parseInt(xLayout.legendStyle.labelMaxLength);
+
+ //name = name.length > mxl ? name.substr(0, mxl) + '..' : name;
+ //}
});
}
- return a;
+ return getFormatedSeriesTitle(a);
};
getDefaultSeries = function(store) {
=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/map.js'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/map.js 2015-01-19 14:29:05 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/plugin/map.js 2015-01-20 15:20:41 +0000
@@ -6985,8 +6985,7 @@
region: 'center',
map: gis.olmap,
bodyStyle: 'border: 1px solid #d0d0d0',
- width: el.getWidth() - eastWidth,
- height: el.getHeight()
+ width: el.getWidth() - eastWidth
}));
// east