Basic Task deletion
This commit is contained in:
@@ -122,7 +122,6 @@
|
|||||||
hint="Add a boat, if applicable"
|
hint="Add a boat, if applicable"
|
||||||
v-model="modifiedTask.boat"
|
v-model="modifiedTask.boat"
|
||||||
use-input
|
use-input
|
||||||
emit-value
|
|
||||||
input-debounce="250"
|
input-debounce="250"
|
||||||
:options="boatList"
|
:options="boatList"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
@@ -172,7 +171,6 @@ const defaultTask = <Task>{
|
|||||||
volunteers_required: 0,
|
volunteers_required: 0,
|
||||||
status: 'ready',
|
status: 'ready',
|
||||||
depends_on: [],
|
depends_on: [],
|
||||||
boat: '',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const { taskId } = props;
|
const { taskId } = props;
|
||||||
@@ -210,7 +208,7 @@ function filterTasks(val: string, update: (cb: () => void) => void): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function filterTags(
|
function filterTags(
|
||||||
optionVar: Ref<SkillTag[] | TaskTag[] | undefined>,
|
optionVar: Ref<(SkillTag | TaskTag)[] | undefined>,
|
||||||
optionSrc: SkillTag[] | TaskTag[],
|
optionSrc: SkillTag[] | TaskTag[],
|
||||||
val: string,
|
val: string,
|
||||||
update: (cb: () => void) => void
|
update: (cb: () => void) => void
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
color="primary"
|
color="primary"
|
||||||
:disable="loading"
|
:disable="loading"
|
||||||
label="Delete task(s)"
|
label="Delete task(s)"
|
||||||
@click="deleteTask"
|
@click="deleteTasks"
|
||||||
/>
|
/>
|
||||||
<q-space />
|
<q-space />
|
||||||
<q-input
|
<q-input
|
||||||
@@ -137,8 +137,12 @@ const taskStore = useTaskStore();
|
|||||||
taskStore.fetchTaskTags();
|
taskStore.fetchTaskTags();
|
||||||
taskStore.fetchSkillTags();
|
taskStore.fetchSkillTags();
|
||||||
|
|
||||||
function deleteTask() {
|
function deleteTasks() {
|
||||||
return;
|
selected.value.map((task: Task) => {
|
||||||
|
console.log('Deleting Task: ' + task.$id);
|
||||||
|
taskStore.deleteTask(task);
|
||||||
|
return;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const filter = ref('');
|
const filter = ref('');
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { AppwriteIds, databases, ID } from 'src/boot/appwrite';
|
import { AppwriteIds, databases, ID } from 'src/boot/appwrite';
|
||||||
import type { Models } from 'appwrite';
|
import type { Models } from 'appwrite';
|
||||||
|
import { Boat } from './boat';
|
||||||
|
|
||||||
export const TASKSTATUS = ['ready', 'complete', 'waiting', 'archived'];
|
export const TASKSTATUS = ['ready', 'complete', 'waiting', 'archived'];
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ export interface Task extends Partial<Models.Document> {
|
|||||||
volunteers_required: number;
|
volunteers_required: number;
|
||||||
status: string;
|
status: string;
|
||||||
depends_on: Task[];
|
depends_on: Task[];
|
||||||
boat: string;
|
boat?: Boat;
|
||||||
} // TODO: convert some of these strings into objects.
|
} // TODO: convert some of these strings into objects.
|
||||||
|
|
||||||
export interface TaskTag extends Models.Document {
|
export interface TaskTag extends Models.Document {
|
||||||
@@ -89,11 +90,30 @@ export const useTaskStore = defineStore('tasks', {
|
|||||||
console.error('Failed to fetch skill tags', error);
|
console.error('Failed to fetch skill tags', error);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async deleteTask(task: Task | string) {
|
||||||
|
const docId = typeof task === 'string' ? task : task.$id;
|
||||||
|
if (docId === undefined) {
|
||||||
|
console.error('No document ID provided to deleteTask!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const response = await databases.deleteDocument(
|
||||||
|
AppwriteIds.databaseId,
|
||||||
|
AppwriteIds.collectionIdTask,
|
||||||
|
docId
|
||||||
|
);
|
||||||
|
this.tasks = this.tasks.filter((task) => docId !== task.$id);
|
||||||
|
} catch (error) {
|
||||||
|
// Need some better error handling, here.
|
||||||
|
console.error('Failed to delete task:', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
async addTask(task: Task) {
|
async addTask(task: Task) {
|
||||||
const newTask = <Models.Document>{ ...task };
|
const newTask = <Models.Document>{ ...task };
|
||||||
newTask.required_skills = task.required_skills.map((s) => s['$id']);
|
newTask.required_skills = task.required_skills.map((s) => s['$id']);
|
||||||
newTask.tags = task.tags.map((s) => s['$id']);
|
newTask.tags = task.tags.map((s) => s['$id']);
|
||||||
newTask.depends_on = task.depends_on.map((d) => d['$id']);
|
newTask.depends_on = task.depends_on.map((d) => d['$id']);
|
||||||
|
newTask.boat = task.boat?.$id;
|
||||||
try {
|
try {
|
||||||
const response = await databases.createDocument(
|
const response = await databases.createDocument(
|
||||||
AppwriteIds.databaseId,
|
AppwriteIds.databaseId,
|
||||||
|
|||||||
Reference in New Issue
Block a user