3204 Show the remaining targets
This commit is contained in:
parent
2a0eb66b2f
commit
671cf74104
core/src/main/java/se/su/dsv/scipro/reviewing
view/src/main/java/se/su/dsv/scipro/admin/pages
@ -29,4 +29,14 @@ public interface ReviewerCapacityService {
|
||||
List<TargetHistory> getTargetHistory(User reviewer, Year year);
|
||||
|
||||
record TargetHistory(Year year, int springTarget, int autumnTarget, int completedInSpring, int completedInAutumn) {}
|
||||
|
||||
/**
|
||||
* Remaining targets are the set target by the administrators minus the number of assigned and completed reviews.
|
||||
* @param reviewer the reviewer
|
||||
* @param year year to get the remaining targets for
|
||||
* @return the remaining targets for the given reviewer and year
|
||||
*/
|
||||
RemainingTargets getRemainingTargets(User reviewer, Year year);
|
||||
|
||||
record RemainingTargets(int spring, int autumn) {}
|
||||
}
|
@ -100,7 +100,7 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
|
||||
int completedInSpring = decisionRepository.countDecisions(reviewer,
|
||||
startOfSpring(reviewerTarget.getYear()), endOfSpring(reviewerTarget.getYear()));
|
||||
int completedInAutumn = decisionRepository.countDecisions(reviewer,
|
||||
startOfAutumn(reviewerTarget.getYear()), endOfAutumn(reviewerTarget));
|
||||
startOfAutumn(reviewerTarget.getYear()), endOfAutumn(reviewerTarget.getYear()));
|
||||
return new TargetHistory(
|
||||
Year.of(reviewerTarget.getYear()),
|
||||
reviewerTarget.getSpring(),
|
||||
@ -112,6 +112,14 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RemainingTargets getRemainingTargets(User reviewer, Year year) {
|
||||
Target target = getTarget(reviewer, year);
|
||||
int springDecisions = decisionRepository.countDecisions(reviewer, startOfSpring(year.getValue()), endOfSpring(year.getValue()));
|
||||
int autumnReviews = decisionRepository.countDecisions(reviewer, startOfAutumn(year.getValue()), endOfAutumn(year.getValue()));
|
||||
return new RemainingTargets(target.spring() - springDecisions, target.autumn() - autumnReviews);
|
||||
}
|
||||
|
||||
private Optional<ReviewerTarget> getTarget(User reviewer, LocalDate date) {
|
||||
return reviewerTargetRepository.getReviewerTarget(reviewer, Year.from(date));
|
||||
}
|
||||
@ -182,12 +190,12 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
|
||||
}
|
||||
else {
|
||||
return decisionRepository.countDecisions(reviewer,
|
||||
startOfAutumn(fromDate.getYear()), LocalDate.of(fromDate.getYear(), Month.DECEMBER, 31));
|
||||
startOfAutumn(fromDate.getYear()), endOfAutumn(fromDate.getYear()));
|
||||
}
|
||||
}
|
||||
|
||||
private static LocalDate endOfAutumn(ReviewerTarget reviewerTarget) {
|
||||
return LocalDate.of(reviewerTarget.getYear(), Month.DECEMBER, 31);
|
||||
private static LocalDate endOfAutumn(int year) {
|
||||
return LocalDate.of(year, Month.DECEMBER, 31);
|
||||
}
|
||||
|
||||
private static LocalDate startOfAutumn(int year) {
|
||||
|
@ -75,11 +75,15 @@
|
||||
<label class="form-label" wicket:for="springTarget">Spring</label>
|
||||
<input type="number" class="form-control form-control-sm" min="0" wicket:id="springTarget">
|
||||
<small class="text-muted"><span wicket:id="springHours"></span> hours</small>
|
||||
<br>
|
||||
<small class="text-muted">Remaining targets: <span wicket:id="remainingSpring">-3</span></small>
|
||||
</div>
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label class="form-label" wicket:for="autumnTarget">Autumn</label>
|
||||
<input type="number" class="form-control form-control-sm" min="0" wicket:id="autumnTarget">
|
||||
<small class="text-muted"><span wicket:id="autumnHours"></span> hours</small>
|
||||
<br>
|
||||
<small class="text-muted">Remaining targets: <span wicket:id="remainingAutumn">-3</span></small>
|
||||
</div>
|
||||
<div class="col mb-3">
|
||||
<label class="form-label" wicket:for="note">Note</label>
|
||||
|
@ -21,6 +21,7 @@ import se.su.dsv.scipro.data.DetachableServiceModel;
|
||||
import se.su.dsv.scipro.profile.UserLabel;
|
||||
import se.su.dsv.scipro.profile.UserProfileImage;
|
||||
import se.su.dsv.scipro.reviewing.ReviewerCapacityService;
|
||||
import se.su.dsv.scipro.reviewing.ReviewerCapacityService.RemainingTargets;
|
||||
import se.su.dsv.scipro.reviewing.ReviewerCapacityService.Target;
|
||||
import se.su.dsv.scipro.reviewing.ReviewerCapacityService.TargetHistory;
|
||||
import se.su.dsv.scipro.springdata.services.UnitService;
|
||||
@ -194,6 +195,14 @@ public class AdminReviewerCapacityManagementPage extends AbstractAdminProjectPag
|
||||
autumnTargetField.add(AjaxFormComponentUpdatingBehavior.onUpdate("change", target -> target.add(autumnHours)));
|
||||
add(autumnTargetField);
|
||||
|
||||
IModel<RemainingTargets> remainingTargets = LoadableDetachableModel.of(() ->
|
||||
reviewerCapacityService.getRemainingTargets(
|
||||
reviewer.getObject(),
|
||||
selectedPeriod.getObject()));
|
||||
|
||||
add(new Label("remainingSpring", remainingTargets.map(RemainingTargets::spring)));
|
||||
add(new Label("remainingAutumn", remainingTargets.map(RemainingTargets::autumn)));
|
||||
|
||||
note = LoadableDetachableModel.of(() ->
|
||||
reviewerCapacityService.getTarget(reviewer.getObject(), selectedPeriod.getObject()).note());
|
||||
TextArea<String> noteField = new TextArea<>("note", note);
|
||||
|
Loading…
x
Reference in New Issue
Block a user