private double getXValue(final Date date) { if (date == null) { return 0.0; } final DateHolder dh = new DateHolder(fromDate); final int days = dh.daysBetween(date); final int fromToDays = getFromToDays(); if (fromToDays == 0) { return 0; } return diagramWidth * days / fromToDays; }
public GanttChartXLabelBarRenderer(final Date fromDate, final Date toDate, final double diagramWidth, final GanttChartStyle style) { this.fromDate = fromDate; this.toDate = toDate; this.diagramWidth = diagramWidth; this.style = style; this.gridScale = style.getXGridScale(); init(); }
private void drawLabelBar(final Document doc, final Element el, final int row, final Date fromDate, final Date toDate, final GanttChartStyle style) { final Element g = SVGHelper.createElement(doc, "g", "transform", "translate(0," + (row * ROW_HEIGHT) + ")"); el.appendChild(g); final Element grid = SVGHelper.createElement(doc, "g", "stroke", "green", "stroke-width", "1", "stroke-dasharray", "5,5"); g.appendChild(grid); final Element g1 = SVGHelper.createElement(doc, "g", "text-anchor", "middle", "font-family", "Verdana", "font-size", "9pt"); g.appendChild(g1); final GanttChartXLabelBarRenderer renderer = new GanttChartXLabelBarRenderer(fromDate, toDate, style.getWidth(), style); renderer.draw(doc, g1, grid, 10); log.info("GanttChartXLabelBarRenderer: fromToDays=" + renderer.fromToDays + ", labelUnit=" + renderer.labelUnit + ", labelScale=" + renderer.labelScale + ", ticksUnit=" + renderer.ticksUnit + ", ticksScale=" + renderer.ticksScale); }
} else if (nonWorkingDayDisplayed == false) { showNonWorkingDays(doc, grid, day.getDate(), toDay.getDate(), xGridHeight); nonWorkingDayDisplayed = true; boolean drawLabel = match(labelScale, labelUnit, dayCounter, wc, mc, qc); boolean drawTick = match(ticksScale, ticksUnit, dayCounter, wc, mc, qc); boolean drawTick2 = match(ticksScale2, ticksUnit2, dayCounter, wc, mc, qc); boolean drawGrid = match(gridScale, gridUnit, dayCounter, wc, mc, qc); if (style.isRelativeTimeValues() == false) { if (labelUnit == GanttXUnit.DAY) { label = String.valueOf(quarterCounter); g1.appendChild(SVGHelper.createText(doc, getXValue(day.getDate()), 22, label, "text-anchor", "middle")); ticks.appendChild(SVGHelper.createLine(doc, getXValue(day.getDate()), 12, getXValue(day.getDate()), 20)); } else if (drawTick == true) { ticks.appendChild(SVGHelper.createLine(doc, getXValue(day.getDate()), 15, getXValue(day.getDate()), 20)); } else if (drawTick2 == true) { ticks.appendChild(SVGHelper.createLine(doc, getXValue(day.getDate()), 18, getXValue(day.getDate()), 20)); grid.appendChild(SVGHelper.createLine(doc, getXValue(day.getDate()), 0, getXValue(day.getDate()), xGridHeight));
private void init() final int numberOfDays = getFromToDays(); // Initialize fromToDays. final double numberOfWeeks = 0.25 * numberOfDays; final double numberOfMonths = 0.033 * numberOfDays; if (style.isRelativeTimeValues() == true) { labelScale = getScale(numberOfQuarters, 50, labelUnit); } else { labelScale = getScale(numberOfQuarters, 100, labelUnit); if (style.isRelativeTimeValues() == true) { labelScale = getScale(numberOfUnits, 50, labelUnit); } else { labelScale = getScale(numberOfUnits, 100, labelUnit);
/** * @param doc * @param g * @param day * @param toDate Last day of diagram. * @param lastNonWorkingDay * @param height */ private void showNonWorkingDays(final Document doc, final Element g, final Date day, final Date toDate, final double height) { if (g == null) { return; } final DayHolder dh = new DayHolder(day); final double x1 = getXValue(day); for (int i = 0; i < 100; i++) { // End-less loop protection. dh.add(Calendar.DAY_OF_MONTH, 1); if (dh.isWorkingDay() == true || dh.before(toDate) == false) { break; } } final double x2 = getXValue(dh.getDate()); g.appendChild(SVGHelper.createRect(doc, x1, 0, x2 - x1, height, SVGColor.LIGHT_GRAY, SVGColor.NONE)); }
final Element grid = SVGHelper.createElement(doc, "g", "stroke", "gray", "stroke-width", "1");// , "stroke-dasharray", "5,5"); diagram.appendChild(grid); final GanttChartXLabelBarRenderer xLabelBarRenderer = new GanttChartXLabelBarRenderer(fromDate, toDate, getDiagramWidth(), style); xLabelBarRenderer.draw(doc, g1, grid, getDiagramHeight());