diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 1b67cd8..d507a4a 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -25,6 +25,7 @@ import Search from "./routes/search/Search.svelte"; import SendDoc from "./routes/document/Send.svelte"; import TagUses from "./routes/tags/TagUses.svelte"; + import TaskList from "./routes/task/Index.svelte"; import User from "./routes/user/User.svelte"; import ViewDoc from "./routes/document/View.svelte"; import ViewPrj from "./routes/project/View.svelte"; @@ -50,34 +51,35 @@ {#if user.name } - - - - - - - - - - - - - - - - - - - - - - - - - - - Not found! - + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not found! + {:else} diff --git a/frontend/src/routes/task/Index.svelte b/frontend/src/routes/task/Index.svelte new file mode 100644 index 0000000..62aefbb --- /dev/null +++ b/frontend/src/routes/task/Index.svelte @@ -0,0 +1,51 @@ + + + + {t('task_list')} + {#if error} + {error} + {/if} + {#if tasks} + + + + + + + + + {#each Object.entries(tasks) as [tid,task]} + + + + + + {/each} + +
{t('title')}{t('project')} / {t('parent_task')}
{task.name}{task.project_id} {task.parent_task_id?tasks[task.parent_task_id]?.name:''}TODO: load projects
+ {/if} +
\ No newline at end of file diff --git a/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java b/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java index 3a4fe20..5fde7a2 100644 --- a/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java +++ b/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java @@ -6,6 +6,7 @@ import static de.srsoftware.tools.jdbc.Condition.*; import static de.srsoftware.tools.jdbc.Query.*; import static de.srsoftware.tools.jdbc.Query.SelectQuery.ALL; import static de.srsoftware.umbrella.core.Constants.*; +import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.databaseException; import static de.srsoftware.umbrella.core.model.Status.OPEN; import static de.srsoftware.umbrella.project.Constants.*; import static de.srsoftware.umbrella.task.Constants.*; @@ -210,6 +211,22 @@ CREATE TABLE IF NOT EXISTS {0} ( } } + @Override + public HashMap listUserTasks(long userId) { + try { + var rs = select(ALL).from(TABLE_TASKS).leftJoin(ID,TABLE_TASKS_USERS,TASK_ID).where(USER_ID,equal(userId)).exec(db); + var map = new HashMap(); + while (rs.next()) { + var task = Task.of(rs); + map.put(task.id(),task); + } + rs.close(); + return map; + } catch (SQLException e) { + throw databaseException("Failed to load tasks of user {0}",userId); + } + } + @Override public Task load(long taskId) throws UmbrellaException { try { diff --git a/task/src/main/java/de/srsoftware/umbrella/task/TaskDb.java b/task/src/main/java/de/srsoftware/umbrella/task/TaskDb.java index fb72371..96e3b72 100644 --- a/task/src/main/java/de/srsoftware/umbrella/task/TaskDb.java +++ b/task/src/main/java/de/srsoftware/umbrella/task/TaskDb.java @@ -18,8 +18,8 @@ public interface TaskDb { HashMap listChildrenOf(Long parentTaskId, UmbrellaUser user, boolean showClosed); HashMap listProjectTasks(Long projectId, Long parentTaskId, boolean noIndex) throws UmbrellaException; HashMap listRootTasks(Long projectId, UmbrellaUser user, boolean showClosed); - HashMap listTasks(Collection projectIds) throws UmbrellaException; + HashMap listUserTasks(long userId); Task load(long taskId) throws UmbrellaException; diff --git a/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java b/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java index a50e034..908b06c 100644 --- a/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java +++ b/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java @@ -103,7 +103,7 @@ public class TaskModule extends BaseHandler implements TaskService { var head = path.pop(); return switch (head) { case PERMISSIONS -> getPermissionList(ex); - case null -> super.doGet(path,ex); + case null -> getUserTasks(user.get(),ex); default -> { var taskId = Long.parseLong(head); head = path.pop(); @@ -201,6 +201,11 @@ public class TaskModule extends BaseHandler implements TaskService { return sendContent(ex,task); } + private boolean getUserTasks(UmbrellaUser user, HttpExchange ex) throws IOException { + var list = taskDb.listUserTasks(user.id()); + return sendContent(ex,mapValues(list)); + } + @Override public HashMap listCompanyTasks(long companyId) throws UmbrellaException { var projectList = projects.listCompanyProjects(companyId,false);