mirror of https://github.com/doccano/doccano.git
pythonannotation-tooldatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learning
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.
139 lines
4.1 KiB
139 lines
4.1 KiB
<template>
|
|
<layout-text v-if="example.id">
|
|
<template #header>
|
|
<toolbar-laptop
|
|
:doc-id="example.id"
|
|
:enable-auto-labeling.sync="enableAutoLabeling"
|
|
:guideline-text="project.guideline"
|
|
:is-reviewd="example.isConfirmed"
|
|
:total="totalExample"
|
|
class="d-none d-sm-block"
|
|
@click:clear-label="clearTeacherList(project.id, example.id)"
|
|
@click:review="confirm(project.id)"
|
|
>
|
|
<button-label-switch
|
|
class="ms-2"
|
|
@change="labelComponent=$event"
|
|
/>
|
|
</toolbar-laptop>
|
|
<toolbar-mobile
|
|
:total="totalExample"
|
|
class="d-flex d-sm-none"
|
|
/>
|
|
</template>
|
|
<template #content>
|
|
<v-card
|
|
v-shortkey="shortKeys"
|
|
@shortkey="annotateOrRemoveLabel(project.id, example.id, $event.srcKey)"
|
|
>
|
|
<v-card-title>
|
|
<component
|
|
:is="labelComponent"
|
|
:labels="labels"
|
|
:annotations="teacherList"
|
|
:single-label="project.singleClassClassification"
|
|
@add="annotateLabel(project.id, example.id, $event)"
|
|
@remove="removeTeacher(project.id, example.id, $event)"
|
|
/>
|
|
</v-card-title>
|
|
<v-divider />
|
|
<v-card-text
|
|
class="title highlight"
|
|
style="white-space: pre-wrap;"
|
|
v-text="example.text"
|
|
/>
|
|
</v-card>
|
|
</template>
|
|
<template #sidebar>
|
|
<list-metadata :metadata="example.meta" />
|
|
</template>
|
|
</layout-text>
|
|
</template>
|
|
|
|
<script>
|
|
import { toRefs, useContext, useFetch, ref, watch } from '@nuxtjs/composition-api'
|
|
import LabelGroup from '@/components/tasks/textClassification/LabelGroup'
|
|
import LabelSelect from '@/components/tasks/textClassification/LabelSelect'
|
|
import LayoutText from '@/components/tasks/layout/LayoutText'
|
|
import ListMetadata from '@/components/tasks/metadata/ListMetadata'
|
|
import ToolbarLaptop from '@/components/tasks/toolbar/ToolbarLaptop'
|
|
import ToolbarMobile from '@/components/tasks/toolbar/ToolbarMobile'
|
|
import ButtonLabelSwitch from '@/components/tasks/toolbar/buttons/ButtonLabelSwitch'
|
|
import { useExampleItem } from '@/composables/useExampleItem'
|
|
import { useLabelList } from '@/composables/useLabelList'
|
|
import { useProjectItem } from '@/composables/useProjectItem'
|
|
import { useTeacherList } from '@/composables/useTeacherList'
|
|
|
|
export default {
|
|
|
|
components: {
|
|
ButtonLabelSwitch,
|
|
LabelGroup,
|
|
LabelSelect,
|
|
LayoutText,
|
|
ListMetadata,
|
|
ToolbarLaptop,
|
|
ToolbarMobile
|
|
},
|
|
layout: 'workspace',
|
|
|
|
validate({ params, query }) {
|
|
return /^\d+$/.test(params.id) && /^\d+$/.test(query.page)
|
|
},
|
|
|
|
setup() {
|
|
const { app, params, query } = useContext()
|
|
const projectId = params.value.id
|
|
const { state: projectState, getProjectById } = useProjectItem()
|
|
const { state: exampleState, confirm, getExample } = useExampleItem()
|
|
const {
|
|
state: teacherState,
|
|
annotateLabel,
|
|
annotateOrRemoveLabel,
|
|
autoLabel,
|
|
clearTeacherList,
|
|
getTeacherList,
|
|
removeTeacher
|
|
} = useTeacherList(app.$services.textClassification)
|
|
const enableAutoLabeling = ref(false)
|
|
const { state: labelState, getLabelList, shortKeys } = useLabelList(app.$services.categoryType)
|
|
const labelComponent = ref('label-group')
|
|
|
|
getLabelList(projectId)
|
|
getProjectById(projectId)
|
|
|
|
const { fetch } = useFetch(async() => {
|
|
await getExample(
|
|
projectId,
|
|
query.value
|
|
)
|
|
if (enableAutoLabeling.value) {
|
|
try {
|
|
await autoLabel(projectId, exampleState.example.id)
|
|
} catch(e) {
|
|
enableAutoLabeling.value = false
|
|
alert(e.response.data.detail)
|
|
}
|
|
} else {
|
|
await getTeacherList(projectId, exampleState.example.id)
|
|
}
|
|
})
|
|
watch(query, fetch)
|
|
|
|
return {
|
|
...toRefs(labelState),
|
|
...toRefs(projectState),
|
|
...toRefs(teacherState),
|
|
...toRefs(exampleState),
|
|
confirm,
|
|
annotateLabel,
|
|
annotateOrRemoveLabel,
|
|
clearTeacherList,
|
|
enableAutoLabeling,
|
|
labelComponent,
|
|
removeTeacher,
|
|
shortKeys,
|
|
}
|
|
}
|
|
}
|
|
</script>
|