mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 03:29:02 +01:00 
			
		
		
		
	feat(tasks): mark tasks as completed
This commit is contained in:
		
							parent
							
								
									d4ef15212f
								
							
						
					
					
						commit
						7c0b43db85
					
				| @ -75,6 +75,7 @@ export default class BTask extends AbstractBeccaEntity<BOption> { | |||||||
|             parentNoteId: this.parentNoteId, |             parentNoteId: this.parentNoteId, | ||||||
|             title: this.title, |             title: this.title, | ||||||
|             dueDate: this.dueDate, |             dueDate: this.dueDate, | ||||||
|  |             isDone: this.isDone, | ||||||
|             isDeleted: this.isDeleted, |             isDeleted: this.isDeleted, | ||||||
|             utcDateModified: this.utcDateModified |             utcDateModified: this.utcDateModified | ||||||
|         }; |         }; | ||||||
|  | |||||||
| @ -5,3 +5,7 @@ export async function createNewTask(title: string) { | |||||||
|         title |         title | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | export async function toggleTaskDone(taskId: string) { | ||||||
|  |     await server.post(`tasks/${taskId}/toggle`); | ||||||
|  | } | ||||||
|  | |||||||
| @ -48,12 +48,19 @@ const TPL = ` | |||||||
|             border-bottom: 1px solid var(--main-background-color); |             border-bottom: 1px solid var(--main-background-color); | ||||||
|             padding: 0.5em 1em; |             padding: 0.5em 1em; | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         .note-detail-task-list .task-container li .check { | ||||||
|  |             margin-right: 0.5em; | ||||||
|  |         } | ||||||
|     </style> |     </style> | ||||||
| </div> | </div> | ||||||
| `;
 | `;
 | ||||||
| 
 | 
 | ||||||
| function buildTask(task: FTask) { | function buildTask(task: FTask) { | ||||||
|     return `<li class="task">${task.title}</li>`; |     return `\ | ||||||
|  | <li class="task"> | ||||||
|  |     <input type="checkbox" class="check" data-task-id="${task.taskId}" /> ${task.title} | ||||||
|  | </li>`;
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default class TaskListWidget extends TypeWidget { | export default class TaskListWidget extends TypeWidget { | ||||||
| @ -73,6 +80,17 @@ export default class TaskListWidget extends TypeWidget { | |||||||
|                 this.#createNewTask(String(this.$addNewTask.val())); |                 this.#createNewTask(String(this.$addNewTask.val())); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|  | 
 | ||||||
|  |         this.$taskContainer.on("change", "input", (e) => { | ||||||
|  |             const target = e.target as HTMLInputElement; | ||||||
|  |             const taskId = target.dataset.taskId; | ||||||
|  | 
 | ||||||
|  |             if (!taskId) { | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             taskService.toggleTaskDone(taskId); | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async #createNewTask(title: string) { |     async #createNewTask(title: string) { | ||||||
|  | |||||||
| @ -8,3 +8,12 @@ export function getTasks() { | |||||||
| export function createNewTask(req: Request) { | export function createNewTask(req: Request) { | ||||||
|     return tasksService.createNewTask(req.body); |     return tasksService.createNewTask(req.body); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | export function toggleTaskDone(req: Request) { | ||||||
|  |     const { taskId } = req.params; | ||||||
|  |     if (!taskId) { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return tasksService.toggleTaskDone(taskId); | ||||||
|  | } | ||||||
|  | |||||||
| @ -282,6 +282,7 @@ function register(app: express.Application) { | |||||||
| 
 | 
 | ||||||
|     apiRoute(GET, "/api/tasks", tasksRoute.getTasks); |     apiRoute(GET, "/api/tasks", tasksRoute.getTasks); | ||||||
|     apiRoute(PST, "/api/tasks", tasksRoute.createNewTask); |     apiRoute(PST, "/api/tasks", tasksRoute.createNewTask); | ||||||
|  |     apiRoute(PST, "/api/tasks/:taskId/toggle", tasksRoute.toggleTaskDone); | ||||||
| 
 | 
 | ||||||
|     // in case of local electron, local calls are allowed unauthenticated, for server they need auth
 |     // in case of local electron, local calls are allowed unauthenticated, for server they need auth
 | ||||||
|     const clipperMiddleware = isElectron ? [] : [auth.checkEtapiToken]; |     const clipperMiddleware = isElectron ? [] : [auth.checkEtapiToken]; | ||||||
|  | |||||||
| @ -19,3 +19,9 @@ export function createNewTask(params: CreateTaskParams) { | |||||||
|         task |         task | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | export function toggleTaskDone(taskId: string) { | ||||||
|  |     const task = becca.tasks[taskId]; | ||||||
|  |     task.isDone = !task.isDone; | ||||||
|  |     task.save(); | ||||||
|  | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran