← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18393: DV label position fix.

 

Merge authors:
  Jan Henrik Øverland (janhenrik-overland)
------------------------------------------------------------
revno: 18393 [merge]
committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-02-24 17:11:08 +0100
message:
  DV label position fix.
modified:
  dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-visualizer/scripts/app.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-apps/src/main/webapp/dhis-web-visualizer/scripts/app.js'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-visualizer/scripts/app.js	2015-02-24 15:35:20 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-visualizer/scripts/app.js	2015-02-24 16:10:40 +0000
@@ -98,6 +98,78 @@
             }
         });
 
+        Ext.override(Ext.chart.axis.Axis, {
+            drawHorizontalLabels: function() {
+                var me = this,
+                    labelConf = me.label,
+                    floor = Math.floor,
+                    max = Math.max,
+                    axes = me.chart.axes,
+                    position = me.position,
+                    inflections = me.inflections,
+                    ln = inflections.length,
+                    labels = me.labels,
+                    labelGroup = me.labelGroup,
+                    maxHeight = 0,
+                    ratio,
+                    gutterY = me.chart.maxGutter[1],
+                    ubbox, bbox, point, prevX, prevLabel,
+                    projectedWidth = 0,
+                    textLabel, attr, textRight, text,
+                    label, last, x, y, i, firstLabel;
+
+                last = ln - 1;
+                // get a reference to the first text label dimensions
+                point = inflections[0];
+                firstLabel = me.getOrCreateLabel(0, me.label.renderer(labels[0]));
+                ratio = Math.floor(Math.abs(Math.sin(labelConf.rotate && (labelConf.rotate.degrees * Math.PI / 180) || 0)));
+
+                for (i = 0; i < ln; i++) {
+                    point = inflections[i];
+                    text = me.label.renderer(labels[i]) || '';
+                    textLabel = me.getOrCreateLabel(i, text);
+                    bbox = textLabel._bbox;
+                    maxHeight = max(maxHeight, bbox.height + me.dashSize + me.label.padding);
+                    x = floor(point[0] - (ratio? bbox.height : bbox.width) / 2);
+                    if (me.chart.maxGutter[0] == 0) {
+                        if (i == 0 && axes.findIndex('position', 'left') == -1) {
+                            x = point[0];
+                        }
+                        else if (i == last && axes.findIndex('position', 'right') == -1) {
+                            x = point[0] - bbox.width;
+                        }
+                    }
+                    if (position == 'top') {
+                        y = point[1] - (me.dashSize * 2) - me.label.padding - (bbox.height / 2);
+                    }
+                    else {
+                        y = point[1] + (me.dashSize * 2) + me.label.padding + (bbox.height / 2);
+                    }
+
+                    var moveLabels = labelConf.rotate && labelConf.rotate.degrees && !Ext.Array.contains([0,90,180,270,360], labelConf.rotate.degrees),
+                        adjust = Math.floor((textLabel.text.length - 12) * -1 * 0.75),
+                        newX = moveLabels ? point[0] - textLabel._bbox.width + adjust: x;
+
+                    textLabel.setAttributes({
+                        hidden: false,
+                        x: newX,
+                        y: y
+                    }, true);
+
+                    // skip label if there isn't available minimum space
+                    if (i != 0 && (me.intersect(textLabel, prevLabel)
+                        || me.intersect(textLabel, firstLabel))) {
+                        textLabel.hide(true);
+                        continue;
+                    }
+
+                    prevLabel = textLabel;
+                }
+
+                return maxHeight;
+            }
+        });
+
 		// right click handler
 		document.body.oncontextmenu = function() {
 			return false;