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.
207 lines
5.2 KiB
207 lines
5.2 KiB
<template>
|
|
<v-toolbar class="toolbar-control" dense flat>
|
|
<v-row no-gutters>
|
|
<v-btn-toggle>
|
|
<button-review :is-reviewd="isReviewd" @click:review="$emit('click:review')" />
|
|
|
|
<button-filter :value="filterOption" @click:filter="changeFilter" />
|
|
|
|
<button-order :value="orderOption" @click:order="changeOrder" />
|
|
|
|
<button-guideline @click:guideline="dialogGuideline = true" />
|
|
<v-dialog v-model="dialogGuideline">
|
|
<form-guideline :guideline-text="guidelineText" @click:close="dialogGuideline = false" />
|
|
</v-dialog>
|
|
|
|
<button-comment @click:comment="dialogComment = true" />
|
|
<v-dialog v-model="dialogComment">
|
|
<form-comment :example-id="docId" @click:cancel="dialogComment = false" />
|
|
</v-dialog>
|
|
|
|
<button-auto-labeling @click:auto="dialogAutoLabeling = true" />
|
|
<v-dialog v-model="dialogAutoLabeling">
|
|
<form-auto-labeling
|
|
:is-enabled="enableAutoLabeling"
|
|
:error-message="errorMessage"
|
|
@click:cancel="dialogAutoLabeling = false"
|
|
@input="updateAutoLabeling"
|
|
/>
|
|
</v-dialog>
|
|
|
|
<button-clear @click:clear="dialogClear = true" />
|
|
<v-dialog v-model="dialogClear">
|
|
<form-clear-label
|
|
@click:ok="
|
|
$emit('click:clear-label')
|
|
dialogClear = false
|
|
"
|
|
@click:cancel="dialogClear = false"
|
|
/>
|
|
</v-dialog>
|
|
|
|
<button-keyboard-shortcut @click:open="dialogShortcut = true" />
|
|
<v-dialog v-model="dialogShortcut">
|
|
<form-keyboard-shortcut @click:close="dialogShortcut = false" />
|
|
</v-dialog>
|
|
</v-btn-toggle>
|
|
<slot />
|
|
<v-spacer />
|
|
<button-pagination
|
|
:value="page"
|
|
:total="total"
|
|
@click:prev="updatePage(page - 1)"
|
|
@click:next="updatePage(page + 1)"
|
|
@click:first="updatePage(1)"
|
|
@click:last="updatePage(total)"
|
|
@click:jump="updatePage($event)"
|
|
/>
|
|
</v-row>
|
|
</v-toolbar>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import Vue from 'vue'
|
|
import ButtonAutoLabeling from './buttons/ButtonAutoLabeling.vue'
|
|
import ButtonClear from './buttons/ButtonClear.vue'
|
|
import ButtonComment from './buttons/ButtonComment.vue'
|
|
import ButtonFilter from './buttons/ButtonFilter.vue'
|
|
import ButtonGuideline from './buttons/ButtonGuideline.vue'
|
|
import ButtonOrder from './buttons/ButtonOrder.vue'
|
|
import ButtonPagination from './buttons/ButtonPagination.vue'
|
|
import ButtonReview from './buttons/ButtonReview.vue'
|
|
import ButtonKeyboardShortcut from './buttons/ButtonKeyboardShortcut.vue'
|
|
import FormAutoLabeling from './forms/FormAutoLabeling.vue'
|
|
import FormClearLabel from './forms/FormClearLabel.vue'
|
|
import FormComment from './forms/FormComment.vue'
|
|
import FormGuideline from './forms/FormGuideline.vue'
|
|
import FormKeyboardShortcut from './forms/FormKeyboardShortcut.vue'
|
|
|
|
export default Vue.extend({
|
|
components: {
|
|
ButtonAutoLabeling,
|
|
ButtonClear,
|
|
ButtonComment,
|
|
ButtonFilter,
|
|
ButtonGuideline,
|
|
ButtonOrder,
|
|
ButtonKeyboardShortcut,
|
|
ButtonPagination,
|
|
ButtonReview,
|
|
FormAutoLabeling,
|
|
FormClearLabel,
|
|
FormComment,
|
|
FormGuideline,
|
|
FormKeyboardShortcut
|
|
},
|
|
|
|
props: {
|
|
docId: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
enableAutoLabeling: {
|
|
type: Boolean,
|
|
default: false,
|
|
required: true
|
|
},
|
|
guidelineText: {
|
|
type: String,
|
|
default: '',
|
|
required: true
|
|
},
|
|
isReviewd: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
total: {
|
|
type: Number,
|
|
default: 1
|
|
}
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
dialogAutoLabeling: false,
|
|
dialogClear: false,
|
|
dialogComment: false,
|
|
dialogGuideline: false,
|
|
dialogShortcut: false,
|
|
errorMessage: ''
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
page(): number {
|
|
// @ts-ignore
|
|
return parseInt(this.$route.query.page, 10)
|
|
},
|
|
filterOption(): string {
|
|
// @ts-ignore
|
|
return this.$route.query.isChecked
|
|
},
|
|
orderOption(): string {
|
|
// @ts-ignore
|
|
return this.$route.query.ordering
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
updatePage(page: number) {
|
|
this.$router.push({
|
|
query: {
|
|
page: page.toString(),
|
|
isChecked: this.filterOption,
|
|
ordering: this.$route.query.ordering,
|
|
q: this.$route.query.q
|
|
}
|
|
})
|
|
},
|
|
|
|
changeFilter(isChecked: string) {
|
|
this.$router.push({
|
|
query: {
|
|
page: '1',
|
|
isChecked,
|
|
ordering: this.$route.query.ordering,
|
|
q: this.$route.query.q
|
|
}
|
|
})
|
|
},
|
|
|
|
changeOrder(ordering: string) {
|
|
this.$router.push({
|
|
query: {
|
|
page: '1',
|
|
isChecked: this.filterOption,
|
|
q: this.$route.query.q,
|
|
ordering
|
|
}
|
|
})
|
|
},
|
|
|
|
updateAutoLabeling(isEnable: boolean) {
|
|
if (isEnable) {
|
|
this.$emit('update:enable-auto-labeling', true)
|
|
} else {
|
|
this.$emit('update:enable-auto-labeling', false)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
.toolbar-control {
|
|
position: sticky;
|
|
top: 68px;
|
|
z-index: 100;
|
|
}
|
|
|
|
.toolbar-control >>> .v-toolbar__content {
|
|
padding: 0px !important;
|
|
}
|
|
|
|
::v-deep .v-dialog {
|
|
width: 800px;
|
|
}
|
|
</style>
|