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.
114 lines
2.3 KiB
114 lines
2.3 KiB
<template>
|
|
<div class="v-data-footer">
|
|
<v-edit-dialog
|
|
large
|
|
persistent
|
|
@save="changePageNumber"
|
|
>
|
|
<span>{{ value }} of {{ length }}</span>
|
|
<template v-slot:input>
|
|
<div class="mt-4 title">
|
|
Move Page
|
|
</div>
|
|
</template>
|
|
<template v-slot:input>
|
|
<v-text-field
|
|
v-model="newPage"
|
|
:rules="rules"
|
|
label="Edit"
|
|
single-line
|
|
counter
|
|
autofocus
|
|
/>
|
|
</template>
|
|
</v-edit-dialog>
|
|
<v-tooltip bottom>
|
|
<template v-slot:activator="{ on }">
|
|
<v-btn
|
|
v-shortkey.once="['arrowleft']"
|
|
:disabled="value===1"
|
|
text
|
|
fab
|
|
small
|
|
v-on="on"
|
|
@shortkey="prevPage"
|
|
@click="prevPage"
|
|
>
|
|
<v-icon>mdi-chevron-left</v-icon>
|
|
</v-btn>
|
|
</template>
|
|
<span>←</span>
|
|
</v-tooltip>
|
|
<v-tooltip bottom>
|
|
<template v-slot:activator="{ on }">
|
|
<v-btn
|
|
v-shortkey.once="['arrowright']"
|
|
:disabled="value===length || length===0"
|
|
text
|
|
fab
|
|
small
|
|
v-on="on"
|
|
@shortkey="nextPage"
|
|
@click="nextPage"
|
|
>
|
|
<v-icon>mdi-chevron-right</v-icon>
|
|
</v-btn>
|
|
</template>
|
|
<span>→</span>
|
|
</v-tooltip>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
props: {
|
|
value: {
|
|
type: Number,
|
|
default: 1,
|
|
required: true
|
|
},
|
|
length: {
|
|
type: Number,
|
|
default: 1,
|
|
required: true
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
editedPage: null,
|
|
rules: [
|
|
v => (v && parseInt(v, 10) > 0 && parseInt(v, 10) <= this.length) || 'Invalid page number!'
|
|
]
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
newPage: {
|
|
get() {
|
|
return this.value
|
|
},
|
|
set(newValue) {
|
|
const value = parseInt(newValue, 10)
|
|
this.editedPage = value
|
|
}
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
changePageNumber() {
|
|
if (!this.editedPage || this.editedPage < 0 || this.editedPage > this.length) {
|
|
return
|
|
}
|
|
this.$emit('input', this.editedPage)
|
|
},
|
|
prevPage() {
|
|
const page = Math.max(this.value - 1, 1)
|
|
this.$emit('input', page)
|
|
},
|
|
nextPage() {
|
|
const page = Math.min(this.value + 1, this.length)
|
|
this.$emit('input', page)
|
|
}
|
|
}
|
|
}
|
|
</script>
|