import { reactive } from '@nuxtjs/composition-api' export const useTeacherList = (service: any) => { const state = reactive({ teacherList: [] }) const getTeacherList = async (projectId: string, exampleId: number) => { state.teacherList = await service.list(projectId, exampleId) } const removeTeacher = async (projectId: string, exampleId: number, teacherId: number) => { await service.delete(projectId, exampleId, teacherId) await getTeacherList(projectId, exampleId) } const annotateLabel = async (projectId: string, exampleId: number, labelId: number) => { await service.create(projectId, exampleId, labelId) await getTeacherList(projectId, exampleId) } const clearTeacherList = async (projectId: string, exampleId: number) => { await service.clear(projectId, exampleId) await getTeacherList(projectId, exampleId) } const autoLabel = async (projectId: string, exampleId: number) => { await service.autoLabel(projectId, exampleId) await getTeacherList(projectId, exampleId) } const annotateOrRemoveLabel = async (projectId: string, exampleId: number, srcKey: string) => { const labelId = parseInt(srcKey, 10) // @ts-ignore const annotation = state.teacherList.find((item) => item.label === labelId) if (annotation) { // @ts-ignore await removeTeacher(projectId, exampleId, annotation.id) } else { await annotateLabel(projectId, exampleId, labelId) } } return { state, getTeacherList, annotateLabel, annotateOrRemoveLabel, removeTeacher, clearTeacherList, autoLabel } }