Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
- https://github.com/ObeoNetwork/pepper/issues/18[#18] Enhance the ergonomy of contextual menu in Gantt
- https://github.com/ObeoNetwork/pepper/issues/49[#49] Rework the detail views of Task and Workpackage
- https://github.com/ObeoNetwork/pepper/issues/55[#55] Link detail view updates with Gantt view
- https://github.com/ObeoNetwork/pepper/issues/52[#52] Change task creation in Gantt
Change task creation in Gantt from creating a sibling task to a child task.


=== Bug fixes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,25 +131,35 @@ public void createTask(EObject context) {
Task task = PepperFactory.eINSTANCE.createTask();
task.setName(NEW_TASK);
if (context instanceof AbstractTask abstractTask) {
// The new task follows the context task and has the same duration as the context task.
if (abstractTask.getEndTime() != null && abstractTask.getStartTime() != null) {
if (abstractTask.getEndTime().equals(abstractTask.getStartTime())) {
// If the task is a Milestone
task.setStartTime(abstractTask.getEndTime());
task.setEndTime(Instant.ofEpochSecond(2 * abstractTask.getEndTime().getEpochSecond() - abstractTask.getStartTime().getEpochSecond()));
// The new task follows the last sub-task.
Optional<Task> optionalTask = abstractTask.getSubTasks().stream().reduce((first, second) -> second)
.filter(filteredTask -> filteredTask.getEndTime() != null && filteredTask.getStartTime() != null);

if (optionalTask.isPresent()) {
Task lastTask = optionalTask.get();
if (lastTask.getEndTime().equals(lastTask.getStartTime())) {
// If the last task is a Milestone
task.setStartTime(lastTask.getEndTime());
task.setEndTime(lastTask.getEndTime());
} else {
task.setStartTime(abstractTask.getEndTime().plus(1, ChronoUnit.MINUTES));
task.setEndTime(Instant.ofEpochSecond(2 * abstractTask.getEndTime().getEpochSecond() - abstractTask.getStartTime().getEpochSecond()).plus(1, ChronoUnit.MINUTES));
task.setStartTime(lastTask.getEndTime().plus(1, ChronoUnit.MINUTES));
task.setEndTime(Instant.ofEpochSecond(2 * lastTask.getEndTime().getEpochSecond() - lastTask.getStartTime().getEpochSecond()).plus(1, ChronoUnit.MINUTES));
}
} else {
if (abstractTask.getEndTime() != null && abstractTask.getStartTime() != null) {
task.setStartTime(abstractTask.getStartTime());
task.setEndTime(abstractTask.getEndTime());
}
}

EObject parent = context.eContainer();
if (parent instanceof Workpackage workpackage) {
int index = workpackage.getOwnedTasks().indexOf(context);
workpackage.getOwnedTasks().add(index + 1, task);
} else if (parent instanceof AbstractTask parentTask) {
int index = parentTask.getSubTasks().indexOf(context);
parentTask.getSubTasks().add(index + 1, task);
abstractTask.getSubTasks().add(task);
int levelLayer = 1;
var parent = context.eContainer();
while (!(parent instanceof Workpackage)) {
levelLayer++;
parent = parent.eContainer();
}
if (levelLayer == 4) {
this.feedbackMessageService.addFeedbackMessage(new Message("This view does not display more than 4 levels of tasks.", MessageLevel.WARNING));
}
} else if (context instanceof Workpackage workpackage) {
long epochSecondStartTime = Instant.now().getEpochSecond();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,14 +313,14 @@ public void createTask() {
assertThat(workpackage.getOwnedTasks()).hasSize(2);

service.createTask(task1);
assertThat(workpackage.getOwnedTasks()).hasSize(3);
assertThat(workpackage.getOwnedTasks().get(1).getStartTime()).isEqualTo(Instant.parse(DATE2024_01_02_T00_00_00));
assertThat(workpackage.getOwnedTasks().get(1).getEndTime()).isEqualTo(Instant.parse(DATE2024_01_02_T23_59_00));

service.createTask(task11);
assertThat(task1.getSubTasks()).hasSize(2);
assertThat(task1.getSubTasks().get(1).getStartTime()).isEqualTo(Instant.parse(DATE2024_01_02_T00_00_00));
assertThat(task1.getSubTasks().get(1).getEndTime()).isEqualTo(Instant.parse(DATE2024_01_02_T23_59_00));

service.createTask(task11);
assertThat(task11.getSubTasks()).hasSize(1);
assertThat(task11.getSubTasks().get(0).getStartTime()).isEqualTo(task11.getStartTime());
assertThat(task11.getSubTasks().get(0).getEndTime()).isEqualTo(task11.getEndTime());
}

@Test
Expand Down
Loading