Browse Source

Fixed #1076: hiding remainder grid line at the end of a month

flowchartTest
jos 9 years ago
parent
commit
2ce1f12e3f
1 changed files with 36 additions and 24 deletions
  1. +36
    -24
      lib/timeline/component/TimeAxis.js

+ 36
- 24
lib/timeline/component/TimeAxis.js View File

@ -217,37 +217,40 @@ TimeAxis.prototype._repaintLabels = function () {
dom.majorTexts = []; dom.majorTexts = [];
dom.minorTexts = []; dom.minorTexts = [];
var cur;
var x = 0;
var current;
var next;
var x;
var xNext;
var isMajor; var isMajor;
var xPrev = 0;
var width = 0;
var prevLine;
var prevText;
var width;
var line;
var labelMinor;
var xFirstMajorLabel = undefined; var xFirstMajorLabel = undefined;
var max = 0; var max = 0;
var className; var className;
step.first(); step.first();
next = step.getCurrent();
xNext = this.body.util.toScreen(next);
while (step.hasNext() && max < 1000) { while (step.hasNext() && max < 1000) {
max++; max++;
cur = step.getCurrent();
isMajor = step.isMajor(); isMajor = step.isMajor();
className = step.getClassName(); className = step.getClassName();
labelMinor = step.getLabelMinor();
xPrev = x;
x = this.body.util.toScreen(cur);
width = x - xPrev;
if (prevLine) {
prevLine.style.width = width + 'px';
}
if (prevText) {
prevText.style.width = width + 'px';
}
current = next;
x = xNext;
step.next();
next = step.getCurrent();
xNext = this.body.util.toScreen(next);
width = xNext - x;
var labelFits = labelMinor.length * this.props.minorCharWidth < width;
if (this.options.showMinorLabels) {
prevText = this._repaintMinorText(x, step.getLabelMinor(), orientation, className);
if (this.options.showMinorLabels && labelFits) {
this._repaintMinorText(x, labelMinor, orientation, className);
} }
if (isMajor && this.options.showMajorLabels) { if (isMajor && this.options.showMajorLabels) {
@ -257,13 +260,18 @@ TimeAxis.prototype._repaintLabels = function () {
} }
this._repaintMajorText(x, step.getLabelMajor(), orientation, className); this._repaintMajorText(x, step.getLabelMajor(), orientation, className);
} }
prevLine = this._repaintMajorLine(x, orientation, className);
line = this._repaintMajorLine(x, width, orientation, className);
} }
else { else {
prevLine = this._repaintMinorLine(x, orientation, className);
if (labelFits) {
line = this._repaintMinorLine(x, width, orientation, className);
}
else {
if (line) {
line.style.width = (parseInt (line.style.width) + width) + 'px'
}
}
} }
step.next();
} }
// create a major label on the left when needed // create a major label on the left when needed
@ -355,12 +363,13 @@ TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className
/** /**
* Create a minor line for the axis at position x * Create a minor line for the axis at position x
* @param {Number} x * @param {Number} x
* @param {Number} width
* @param {String} orientation "top" or "bottom" (default) * @param {String} orientation "top" or "bottom" (default)
* @param {String} className * @param {String} className
* @return {Element} Returns the created line * @return {Element} Returns the created line
* @private * @private
*/ */
TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) {
TimeAxis.prototype._repaintMinorLine = function (x, width, orientation, className) {
// reuse redundant line // reuse redundant line
var line = this.dom.redundant.lines.shift(); var line = this.dom.redundant.lines.shift();
if (!line) { if (!line) {
@ -379,6 +388,7 @@ TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) {
} }
line.style.height = props.minorLineHeight + 'px'; line.style.height = props.minorLineHeight + 'px';
line.style.left = (x - props.minorLineWidth / 2) + 'px'; line.style.left = (x - props.minorLineWidth / 2) + 'px';
line.style.width = width + 'px';
line.className = 'vis-grid vis-vertical vis-minor ' + className; line.className = 'vis-grid vis-vertical vis-minor ' + className;
@ -388,12 +398,13 @@ TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) {
/** /**
* Create a Major line for the axis at position x * Create a Major line for the axis at position x
* @param {Number} x * @param {Number} x
* @param {Number} width
* @param {String} orientation "top" or "bottom" (default) * @param {String} orientation "top" or "bottom" (default)
* @param {String} className * @param {String} className
* @return {Element} Returns the created line * @return {Element} Returns the created line
* @private * @private
*/ */
TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) {
TimeAxis.prototype._repaintMajorLine = function (x, width, orientation, className) {
// reuse redundant line // reuse redundant line
var line = this.dom.redundant.lines.shift(); var line = this.dom.redundant.lines.shift();
if (!line) { if (!line) {
@ -412,6 +423,7 @@ TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) {
} }
line.style.left = (x - props.majorLineWidth / 2) + 'px'; line.style.left = (x - props.majorLineWidth / 2) + 'px';
line.style.height = props.majorLineHeight + 'px'; line.style.height = props.majorLineHeight + 'px';
line.style.width = width + 'px';
line.className = 'vis-grid vis-vertical vis-major ' + className; line.className = 'vis-grid vis-vertical vis-major ' + className;

Loading…
Cancel
Save