You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
1.7 KiB

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,
}
}