Added time to the events
Changed events to take LocalDateTime instead of LocalDate. Added time labels so events now get printed with the time.
This commit is contained in:
parent
3176a5430e
commit
497bfd5038
core/src/main/java/se/su/dsv/scipro/firstmeeting
test-data/src/main/java/se/su/dsv/scipro/testdata/populators
view/src/main/java/se/su/dsv/scipro
@ -61,7 +61,7 @@ public class FirstMeetingServiceImpl
|
||||
.getDate()
|
||||
.toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate(),
|
||||
.toLocalDateTime(),
|
||||
projectFirstMeeting.getRoom(),
|
||||
projectFirstMeeting.getActivity().getActivityPlan().getProject().getTitle(),
|
||||
projectFirstMeeting.getActivity().getActivityPlan().getProject().getId()
|
||||
@ -76,7 +76,7 @@ public class FirstMeetingServiceImpl
|
||||
.map(ideaFirstMeeting ->
|
||||
new MyCalendarEvent(
|
||||
ideaFirstMeeting.getDescription(),
|
||||
ideaFirstMeeting.getFirstMeetingDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(),
|
||||
ideaFirstMeeting.getFirstMeetingDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(),
|
||||
ideaFirstMeeting.getRoom(),
|
||||
ideaFirstMeeting.getIdea().getTitle(),
|
||||
(ideaFirstMeeting.getIdea().getProject() != null)
|
||||
|
@ -1,5 +1,15 @@
|
||||
package se.su.dsv.scipro.firstmeeting;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
|
||||
public record MyCalendarEvent(String title, LocalDate date, String room, String projectTitle, Long projectId) {}
|
||||
public record MyCalendarEvent(String title, LocalDateTime date, String room, String projectTitle, Long projectId) {
|
||||
public LocalTime time() {
|
||||
return date.toLocalTime();
|
||||
}
|
||||
|
||||
public LocalDate day() {
|
||||
return date.toLocalDate();
|
||||
}
|
||||
}
|
||||
|
94
test-data/src/main/java/se/su/dsv/scipro/testdata/populators/CalendarOverviewPopulator.java
vendored
Normal file
94
test-data/src/main/java/se/su/dsv/scipro/testdata/populators/CalendarOverviewPopulator.java
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
package se.su.dsv.scipro.testdata.populators;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import org.springframework.stereotype.Service;
|
||||
import se.su.dsv.scipro.match.FirstMeeting;
|
||||
import se.su.dsv.scipro.match.FirstMeetingRepository;
|
||||
import se.su.dsv.scipro.match.Idea;
|
||||
import se.su.dsv.scipro.match.IdeaService;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.project.ProjectService;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
import se.su.dsv.scipro.testdata.BaseData;
|
||||
import se.su.dsv.scipro.testdata.Factory;
|
||||
import se.su.dsv.scipro.testdata.TestDataPopulator;
|
||||
|
||||
@Service
|
||||
public class CalendarOverviewPopulator implements TestDataPopulator {
|
||||
|
||||
private final ProjectService projectService;
|
||||
private final IdeaService ideaService;
|
||||
private final FirstMeetingRepository firstMeetingRepository;
|
||||
|
||||
public CalendarOverviewPopulator(
|
||||
ProjectService projectService,
|
||||
IdeaService ideaService,
|
||||
FirstMeetingRepository firstMeetingRepository
|
||||
) {
|
||||
this.projectService = projectService;
|
||||
this.ideaService = ideaService;
|
||||
this.firstMeetingRepository = firstMeetingRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populate(BaseData baseData, Factory factory) {
|
||||
// Participants
|
||||
User author = factory.createAuthor("Hilary");
|
||||
User supervisor = factory.createSupervisor("Salieri");
|
||||
|
||||
// Project
|
||||
Project project = new Project();
|
||||
project.setTitle("Calendar project 1");
|
||||
project.setProjectType(baseData.bachelor());
|
||||
project.setCredits(15);
|
||||
project.setResearchArea(baseData.researchArea().researchArea());
|
||||
project.setHeadSupervisor(supervisor);
|
||||
project.addProjectParticipant(author);
|
||||
project.setStartDate(LocalDate.now().minusDays(1));
|
||||
project.setExpectedEndDate(LocalDate.now().plusDays(30));
|
||||
|
||||
projectService.save(project);
|
||||
|
||||
// Idea
|
||||
Idea idea = new Idea();
|
||||
idea.setTitle("Calendar project 1");
|
||||
idea.setDescription("Calendar project 1");
|
||||
idea.setProjectType(baseData.bachelor());
|
||||
idea.setProject(project);
|
||||
idea.setCreator(author);
|
||||
|
||||
ideaService.saveSupervisorIdea(idea, supervisor, baseData.researchArea().keywords(), true);
|
||||
|
||||
// First meeting
|
||||
FirstMeeting firstMeeting = new FirstMeeting();
|
||||
firstMeeting.setRoom("Ethereal room");
|
||||
firstMeeting.setFirstMeetingDate(
|
||||
Date.from(LocalDate.now().plusDays(1).atTime(14, 0).atZone(ZoneId.systemDefault()).toInstant())
|
||||
);
|
||||
|
||||
firstMeeting.setDescription("First meeting with the supervisor");
|
||||
firstMeeting.setIdea(idea);
|
||||
firstMeetingRepository.save(firstMeeting);
|
||||
|
||||
// Idea no project
|
||||
Idea ideaNoProject = new Idea();
|
||||
ideaNoProject.setTitle("Calendar no project");
|
||||
ideaNoProject.setDescription("Calendar no project");
|
||||
ideaNoProject.setProjectType(baseData.bachelor());
|
||||
ideaNoProject.setCreator(supervisor);
|
||||
|
||||
ideaService.saveSupervisorIdea(ideaNoProject, supervisor, baseData.researchArea().keywords(), true);
|
||||
|
||||
// First meeting idea no projct
|
||||
FirstMeeting firstMeetingNoProject = new FirstMeeting();
|
||||
firstMeetingNoProject.setRoom("No project room");
|
||||
firstMeetingNoProject.setFirstMeetingDate(
|
||||
Date.from(LocalDate.now().plusDays(3).atTime(14, 0).atZone(ZoneId.systemDefault()).toInstant())
|
||||
);
|
||||
firstMeetingNoProject.setDescription("First meeting with no project");
|
||||
firstMeetingNoProject.setIdea(ideaNoProject);
|
||||
firstMeetingRepository.save(firstMeetingNoProject);
|
||||
}
|
||||
}
|
@ -1,18 +1,18 @@
|
||||
package se.su.dsv.scipro.components;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.util.convert.ConversionException;
|
||||
import org.apache.wicket.util.convert.IConverter;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* A label that displays a LocalTime in the format HH:mm.
|
||||
*/
|
||||
public class HourMinuteLabel extends Label {
|
||||
|
||||
public HourMinuteLabel(String id, IModel<LocalTime> localTimeIModel) {
|
||||
super(id, localTimeIModel);
|
||||
}
|
||||
@ -27,6 +27,7 @@ public class HourMinuteLabel extends Label {
|
||||
}
|
||||
|
||||
private static class HourMinuteConverter implements IConverter<LocalTime> {
|
||||
|
||||
@Override
|
||||
public LocalTime convertToObject(String value, Locale locale) throws ConversionException {
|
||||
throw new UnsupportedOperationException();
|
||||
|
@ -32,11 +32,13 @@
|
||||
<div wicket:id="calendar-events">
|
||||
<a wicket:id="projectLink" class="d-block">
|
||||
<span wicket:id="eventLabel"></span><br>
|
||||
<span wicket:id="roomLabel"></span>
|
||||
<span wicket:id="roomLabel"></span><br>
|
||||
<span wicket:id="timeLabel"></span>
|
||||
</a>
|
||||
<div wicket:id="eventInfo">
|
||||
<span wicket:id="eventLabel"></span><br>
|
||||
<span wicket:id="roomLabel"></span>
|
||||
<span wicket:id="roomLabel"></span><br>
|
||||
<span wicket:id="timeLabel"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -22,6 +22,7 @@ import org.apache.wicket.markup.repeater.RepeatingView;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||
import se.su.dsv.scipro.components.HourMinuteLabel;
|
||||
import se.su.dsv.scipro.firstmeeting.FirstMeetingService;
|
||||
import se.su.dsv.scipro.firstmeeting.MyCalendarEvent;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
@ -141,7 +142,7 @@ public class MyCalendarPanel extends Panel {
|
||||
|
||||
ListView<MyCalendarEvent> eventView = new ListView<>(
|
||||
"calendar-events",
|
||||
events.map(eventList -> eventList.stream().filter(event -> event.date().equals(day)).toList())
|
||||
events.map(eventList -> eventList.stream().filter(event -> event.day().isEqual(day)).toList())
|
||||
) {
|
||||
@Override
|
||||
protected void populateItem(ListItem<MyCalendarEvent> item) {
|
||||
@ -178,10 +179,13 @@ public class MyCalendarPanel extends Panel {
|
||||
|
||||
Label eventLabel = new Label("eventLabel", item.getModel().map(MyCalendarEvent::title));
|
||||
Label roomLabel = new Label("roomLabel", item.getModel().map(MyCalendarEvent::room));
|
||||
Label timeLabel = new HourMinuteLabel("timeLabel", item.getModel().map(MyCalendarEvent::time));
|
||||
projectLink.add(eventLabel);
|
||||
projectLink.add(roomLabel);
|
||||
projectLink.add(timeLabel);
|
||||
eventInfo.add(new Label("eventLabel", item.getModel().map(MyCalendarEvent::title)));
|
||||
eventInfo.add(new Label("roomLabel", item.getModel().map(MyCalendarEvent::room)));
|
||||
eventInfo.add(new HourMinuteLabel("timeLabel", item.getModel().map(MyCalendarEvent::time)));
|
||||
item.add(projectLink);
|
||||
item.add(eventInfo);
|
||||
}
|
||||
@ -202,18 +206,4 @@ public class MyCalendarPanel extends Panel {
|
||||
cell.add(new AttributeModifier("class", "calendar-cell"));
|
||||
return cell;
|
||||
}
|
||||
|
||||
private static List<MyCalendarEvent> generateSampleEvents(YearMonth yearMonth) {
|
||||
List<MyCalendarEvent> events = new ArrayList<>();
|
||||
events.add(new MyCalendarEvent("event2", yearMonth.atDay(8), "room1", "Project 1", 1l));
|
||||
events.add(new MyCalendarEvent("event1", yearMonth.atDay(3), "room2", "Project 2", 2l));
|
||||
events.add(new MyCalendarEvent("event3", yearMonth.atDay(8), "room1", "Project 3", 3l));
|
||||
events.add(new MyCalendarEvent("event4", yearMonth.atDay(10), "room4", "Project 4", 4l));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "room1", "Project 5", 5l));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "room1", "Project 6", 6l));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "room1", "Project 7", 7l));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "room2", "Project 8", 8l));
|
||||
events.add(new MyCalendarEvent("event5", yearMonth.atDay(16), "rooom2", "Project 9", 9l));
|
||||
return events;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user