implemented display of projects in time record list

This commit is contained in:
2025-08-29 20:50:28 +02:00
parent 5240217653
commit 9300ba8401
5 changed files with 29 additions and 771 deletions

View File

@@ -8,6 +8,7 @@ public class Constants {
public static final String CHILDREN = "children";
public static final String CONFIG_DATABASE = "umbrella.modules.time.database";
public static final String PROJECTS = "projects";
public static final String TABLE_TASK_TIMES = "task_times";
public static final String TABLE_TIMES = "times";
public static final String TASK_ID = "task_id";

View File

@@ -4,10 +4,10 @@ package de.srsoftware.umbrella.time;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Paths.*;
import static de.srsoftware.umbrella.core.Util.mapValues;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
import static de.srsoftware.umbrella.core.model.Time.State.Started;
import static de.srsoftware.umbrella.time.Constants.*;
import static java.util.stream.Collectors.toMap;
import static java.util.stream.Collectors.toSet;
import com.sun.net.httpserver.HttpExchange;
@@ -20,8 +20,6 @@ import de.srsoftware.umbrella.core.api.*;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.*;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
public class TimeModule extends BaseHandler implements TimeService {
@@ -195,14 +193,10 @@ public class TimeModule extends BaseHandler implements TimeService {
times.putAll(timeDb.listUserTimes(user.id(), showClosed));
taskIds = times.values().stream().map(Time::taskIds).flatMap(Collection::stream).collect(toSet());
var tasks = taskService().load(taskIds);
var result = new HashMap<Long,Map<String,Object>>();
for (var entry : times.entrySet()) {
var time = entry.getValue();
var map = time.toMap();
map.remove(TASK_IDS);
map.put(TASKS,time.taskIds().stream().map(tasks::get).filter(Objects::nonNull).collect(toMap(Task::id,Task::name)));
result.put(entry.getKey(),map);
}
var result = new HashMap<String,Object>();
result.put(TIMES,mapValues(times));
result.put(TASKS,mapValues(tasks));
result.put(PROJECTS,mapValues(projects));
return sendContent(ex,result);
}