feat(tasks): filter by parent note

This commit is contained in:
Elian Doran 2025-02-19 22:13:13 +02:00
parent bb822126cd
commit c0d3e8d834
No known key found for this signature in database
6 changed files with 12 additions and 12 deletions

View File

@ -217,9 +217,7 @@ export default class Becca {
} }
getTasks(): BTask[] { getTasks(): BTask[] {
return Object return Object.values(this.tasks);
.values(this.tasks)
.filter((task) => !task.isDone);
} }
getTask(taskId: string): BTask | null { getTask(taskId: string): BTask | null {

View File

@ -372,8 +372,8 @@ class FrocaImpl implements Froca {
}); });
} }
async getTasks() { async getTasks(parentNoteId: string) {
const taskRows = await server.get<FTaskRow[]>(`tasks`); const taskRows = await server.get<FTaskRow[]>(`tasks/${parentNoteId}`);
return this.processTaskRow(taskRows); return this.processTaskRow(taskRows);
} }

View File

@ -108,13 +108,13 @@ export default class TaskListWidget extends TypeWidget {
async doRefresh(note: FNote) { async doRefresh(note: FNote) {
this.$widget.show(); this.$widget.show();
if (!this.note) { if (!this.note || !this.noteId) {
return; return;
} }
this.$taskContainer.html(""); this.$taskContainer.html("");
const tasks = await froca.getTasks(); const tasks = await froca.getTasks(this.noteId);
for (const task of tasks) { for (const task of tasks) {
this.$taskContainer.append($(buildTask(task))); this.$taskContainer.append($(buildTask(task)));
} }

View File

@ -1,8 +1,9 @@
import type { Request } from "express"; import type { Request } from "express";
import * as tasksService from "../../services/tasks.js"; import * as tasksService from "../../services/tasks.js";
export function getTasks() { export function getTasks(req: Request) {
return tasksService.getTasks(); const { parentNoteId } = req.params;
return tasksService.getTasks(parentNoteId);
} }
export function createNewTask(req: Request) { export function createNewTask(req: Request) {

View File

@ -280,7 +280,7 @@ function register(app: express.Application) {
apiRoute(PATCH, "/api/etapi-tokens/:etapiTokenId", etapiTokensApiRoutes.patchToken); apiRoute(PATCH, "/api/etapi-tokens/:etapiTokenId", etapiTokensApiRoutes.patchToken);
apiRoute(DEL, "/api/etapi-tokens/:etapiTokenId", etapiTokensApiRoutes.deleteToken); apiRoute(DEL, "/api/etapi-tokens/:etapiTokenId", etapiTokensApiRoutes.deleteToken);
apiRoute(GET, "/api/tasks", tasksRoute.getTasks); apiRoute(GET, "/api/tasks/:parentNoteId", tasksRoute.getTasks);
apiRoute(PST, "/api/tasks", tasksRoute.createNewTask); apiRoute(PST, "/api/tasks", tasksRoute.createNewTask);
apiRoute(PST, "/api/tasks/:taskId/toggle", tasksRoute.toggleTaskDone); apiRoute(PST, "/api/tasks/:taskId/toggle", tasksRoute.toggleTaskDone);

View File

@ -1,8 +1,9 @@
import becca from "../becca/becca.js"; import becca from "../becca/becca.js";
import BTask from "../becca/entities/btask.js"; import BTask from "../becca/entities/btask.js";
export function getTasks() { export function getTasks(parentNoteId: string) {
return becca.getTasks(); return becca.getTasks()
.filter((task) => task.parentNoteId === parentNoteId && !task.isDone);
} }
interface CreateTaskParams { interface CreateTaskParams {