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.
127 lines
2.8 KiB
127 lines
2.8 KiB
<template>
|
|
<div class="v-data-footer">
|
|
<v-edit-dialog
|
|
large
|
|
persistent
|
|
@save="changePage"
|
|
>
|
|
<span>{{ page }} of {{ total }}</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']"
|
|
text
|
|
:disabled="page===1"
|
|
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']"
|
|
text
|
|
:disabled="page===total"
|
|
fab
|
|
small
|
|
v-on="on"
|
|
@shortkey="nextPage(total)"
|
|
@click="nextPage(total)"
|
|
>
|
|
<v-icon>mdi-chevron-right</v-icon>
|
|
</v-btn>
|
|
</template>
|
|
<span>→</span>
|
|
</v-tooltip>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import Vue from 'vue'
|
|
import { mapState, mapActions, mapMutations, mapGetters } from 'vuex'
|
|
Vue.use(require('vue-shortkey'))
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
editedPage: null,
|
|
rules: [
|
|
value => (value && parseInt(value, 10) > 0 && parseInt(value, 10) <= this.total) || 'Invalid page number!'
|
|
]
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
...mapState('documents', ['items', 'total']),
|
|
...mapGetters('pagination', ['current', 'limit', 'offset', 'page']),
|
|
newPage: {
|
|
get: function () {
|
|
return this.page
|
|
},
|
|
set: function (newValue) {
|
|
const value = parseInt(newValue, 10)
|
|
this.editedPage = value
|
|
}
|
|
}
|
|
},
|
|
|
|
watch: {
|
|
offset() {
|
|
this.updateSearchOptions({
|
|
limit: this.limit,
|
|
offset: this.offset
|
|
})
|
|
this.getDocumentList({
|
|
projectId: this.$route.params.id
|
|
})
|
|
},
|
|
current() {
|
|
this.setCurrent(this.current)
|
|
}
|
|
},
|
|
|
|
created() {
|
|
this.initPage({
|
|
projectId: this.$route.params.id
|
|
})
|
|
this.getDocumentList({
|
|
projectId: this.$route.params.id
|
|
})
|
|
},
|
|
|
|
methods: {
|
|
...mapActions('documents', ['getDocumentList']),
|
|
...mapActions('pagination', ['prevPage', 'nextPage', 'initPage', 'movePage']),
|
|
...mapMutations('documents', ['setCurrent', 'updateSearchOptions']),
|
|
changePage() {
|
|
if (!this.editedPage || this.editedPage < 0 || this.editedPage > this.total) {
|
|
return
|
|
}
|
|
this.movePage(this.editedPage)
|
|
}
|
|
}
|
|
}
|
|
</script>
|