1
0
mirror of https://github.com/octoleo/plantuml.git synced 2025-01-03 07:12:29 +00:00

Merge pull request #518 from nicerloop/gantt-scale-compress

Add compress parameter to print scale command in gantt diagram
This commit is contained in:
arnaudroques 2021-04-02 19:28:28 +02:00 committed by GitHub
commit 33ba37318c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 12 deletions

View File

@ -118,6 +118,7 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
private final Map<Day, String> nameDays = new HashMap<Day, String>(); private final Map<Day, String> nameDays = new HashMap<Day, String>();
private PrintScale printScale = PrintScale.DAILY; private PrintScale printScale = PrintScale.DAILY;
private Integer compress;
private Day today; private Day today;
private double totalHeightWithoutFooter; private double totalHeightWithoutFooter;
private Day min = Day.create(0); private Day min = Day.create(0);
@ -176,6 +177,17 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
this.printScale = printScale; this.printScale = printScale;
} }
public void setCompress(int compress) {
this.compress = compress;
}
private int getCompress() {
if (this.compress != null) {
return this.compress;
}
return printScale.getCompress();
}
private boolean isHidden(Task task) { private boolean isHidden(Task task) {
if (printStart == null || task instanceof TaskSeparator) { if (printStart == null || task instanceof TaskSeparator) {
return false; return false;
@ -235,13 +247,13 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
if (openClose.getCalendar() == null) { if (openClose.getCalendar() == null) {
return new TimeHeaderSimple(min, max); return new TimeHeaderSimple(min, max);
} else if (printScale == PrintScale.WEEKLY) { } else if (printScale == PrintScale.WEEKLY) {
return new TimeHeaderWeekly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek); return new TimeHeaderWeekly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek, getCompress());
} else if (printScale == PrintScale.MONTHLY) { } else if (printScale == PrintScale.MONTHLY) {
return new TimeHeaderMonthly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek); return new TimeHeaderMonthly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek, getCompress());
} else if (printScale == PrintScale.QUARTERLY) { } else if (printScale == PrintScale.QUARTERLY) {
return new TimeHeaderQuarterly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek); return new TimeHeaderQuarterly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek, getCompress());
} else if (printScale == PrintScale.YEARLY) { } else if (printScale == PrintScale.YEARLY) {
return new TimeHeaderYearly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek); return new TimeHeaderYearly(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek, getCompress());
} else { } else {
return new TimeHeaderDaily(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek, return new TimeHeaderDaily(openClose.getCalendar(), min, max, openClose, colorDays, colorDaysOfWeek,
nameDays, printStart, printEnd); nameDays, printStart, printEnd);

View File

@ -41,7 +41,9 @@ import net.sourceforge.plantuml.command.SingleLineCommand2;
import net.sourceforge.plantuml.command.regex.IRegex; import net.sourceforge.plantuml.command.regex.IRegex;
import net.sourceforge.plantuml.command.regex.RegexConcat; import net.sourceforge.plantuml.command.regex.RegexConcat;
import net.sourceforge.plantuml.command.regex.RegexLeaf; import net.sourceforge.plantuml.command.regex.RegexLeaf;
import net.sourceforge.plantuml.command.regex.RegexOptional;
import net.sourceforge.plantuml.command.regex.RegexOr; import net.sourceforge.plantuml.command.regex.RegexOr;
import net.sourceforge.plantuml.command.regex.RegexPartialMatch;
import net.sourceforge.plantuml.command.regex.RegexResult; import net.sourceforge.plantuml.command.regex.RegexResult;
import net.sourceforge.plantuml.project.GanttDiagram; import net.sourceforge.plantuml.project.GanttDiagram;
import net.sourceforge.plantuml.project.core.PrintScale; import net.sourceforge.plantuml.project.core.PrintScale;
@ -64,6 +66,11 @@ public class CommandPrintScale extends SingleLineCommand2<GanttDiagram> {
new RegexLeaf("monthly"), // new RegexLeaf("monthly"), //
new RegexLeaf("daily"), // new RegexLeaf("daily"), //
new RegexLeaf("weekly")), // new RegexLeaf("weekly")), //
new RegexOptional(new RegexConcat( //
RegexLeaf.spaceOneOrMore(), //
new RegexLeaf("compress"), //
RegexLeaf.spaceOneOrMore(), //
new RegexLeaf("COMPRESS", "(\\d+)"))), //
RegexLeaf.end()); // RegexLeaf.end()); //
} }
@ -72,6 +79,10 @@ public class CommandPrintScale extends SingleLineCommand2<GanttDiagram> {
final String scaleString = arg.get("SCALE", 0); final String scaleString = arg.get("SCALE", 0);
final PrintScale scale = PrintScale.fromString(scaleString); final PrintScale scale = PrintScale.fromString(scaleString);
diagram.setPrintScale(scale); diagram.setPrintScale(scale);
RegexPartialMatch compress = arg.get("COMPRESS");
if (compress.size() > 0 && compress.get(0) != null) {
diagram.setCompress(Integer.parseInt(compress.get(0)));
}
return CommandExecutionResult.ok(); return CommandExecutionResult.ok();
} }

View File

@ -61,9 +61,9 @@ public class TimeHeaderMonthly extends TimeHeaderCalendar {
} }
public TimeHeaderMonthly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays, public TimeHeaderMonthly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays,
Map<DayOfWeek, HColor> colorDaysOfWeek) { Map<DayOfWeek, HColor> colorDaysOfWeek, int compress) {
super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek, super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek,
new TimeScaleCompressed(calendar, PrintScale.MONTHLY.getCompress())); new TimeScaleCompressed(calendar, compress));
} }
@Override @Override

View File

@ -61,9 +61,9 @@ public class TimeHeaderQuarterly extends TimeHeaderCalendar {
} }
public TimeHeaderQuarterly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays, public TimeHeaderQuarterly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays,
Map<DayOfWeek, HColor> colorDaysOfWeek) { Map<DayOfWeek, HColor> colorDaysOfWeek, int compress) {
super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek, super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek,
new TimeScaleCompressed(calendar, PrintScale.MONTHLY.getCompress())); new TimeScaleCompressed(calendar, compress));
} }
@Override @Override

View File

@ -61,9 +61,9 @@ public class TimeHeaderWeekly extends TimeHeaderCalendar {
} }
public TimeHeaderWeekly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays, public TimeHeaderWeekly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays,
Map<DayOfWeek, HColor> colorDaysOfWeek) { Map<DayOfWeek, HColor> colorDaysOfWeek, int compress) {
super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek, super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek,
new TimeScaleCompressed(calendar, PrintScale.WEEKLY.getCompress())); new TimeScaleCompressed(calendar, compress));
} }
@Override @Override

View File

@ -61,9 +61,9 @@ public class TimeHeaderYearly extends TimeHeaderCalendar {
} }
public TimeHeaderYearly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays, public TimeHeaderYearly(Day calendar, Day min, Day max, LoadPlanable defaultPlan, Map<Day, HColor> colorDays,
Map<DayOfWeek, HColor> colorDaysOfWeek) { Map<DayOfWeek, HColor> colorDaysOfWeek, int compress) {
super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek, super(calendar, min, max, defaultPlan, colorDays, colorDaysOfWeek,
new TimeScaleCompressed(calendar, PrintScale.MONTHLY.getCompress())); new TimeScaleCompressed(calendar, compress));
} }
@Override @Override