diff --git a/frontend/components/containers/annotation/BottomNavigator.vue b/frontend/components/containers/annotation/BottomNavigator.vue
index b7ca22e4..3fcc1078 100644
--- a/frontend/components/containers/annotation/BottomNavigator.vue
+++ b/frontend/components/containers/annotation/BottomNavigator.vue
@@ -24,7 +24,7 @@
mdi-book-open-outline
-->
-
+
Next
mdi-chevron-right
@@ -32,34 +32,15 @@
diff --git a/frontend/components/containers/annotation/Paginator.vue b/frontend/components/containers/annotation/Paginator.vue
index c85a0aaf..bf8c541d 100644
--- a/frontend/components/containers/annotation/Paginator.vue
+++ b/frontend/components/containers/annotation/Paginator.vue
@@ -29,8 +29,8 @@
fab
small
v-on="on"
- @shortkey="nextPage"
- @click="nextPage"
+ @shortkey="nextPage(total)"
+ @click="nextPage(total)"
>
mdi-chevron-right
@@ -42,35 +42,16 @@
diff --git a/frontend/store/pagination.js b/frontend/store/pagination.js
new file mode 100644
index 00000000..bf1f4904
--- /dev/null
+++ b/frontend/store/pagination.js
@@ -0,0 +1,55 @@
+export const state = () => ({
+ limit: 10,
+ page: 1,
+ projectId: null
+})
+
+export const getters = {
+ offset(state) {
+ return Math.floor((state.page - 1) / state.limit) * state.limit
+ },
+ current(state) {
+ return (state.page - 1) % state.limit
+ },
+ page(state) {
+ return state.page
+ },
+ limit(state) {
+ return state.limit
+ }
+}
+
+export const mutations = {
+ updatePage(state, page) {
+ state.page = page
+ },
+ savePage(state) {
+ const checkpoint = {}
+ checkpoint[state.projectId] = state.page
+ localStorage.setItem('checkpoint', JSON.stringify(checkpoint))
+ },
+ loadPage(state) {
+ const checkpoint = JSON.parse(localStorage.getItem('checkpoint'))
+ state.page = checkpoint[state.projectId] ? checkpoint[state.projectId] : 1
+ },
+ setProjectId(state, projectId) {
+ state.projectId = projectId
+ }
+}
+
+export const actions = {
+ prevPage({ commit, state }) {
+ const page = Math.max(state.page - 1, 1)
+ commit('updatePage', page)
+ commit('savePage')
+ },
+ nextPage({ commit, state }, total) {
+ const page = Math.min(state.page + 1, total)
+ commit('updatePage', page)
+ commit('savePage')
+ },
+ initPage({ commit }, payload) {
+ commit('setProjectId', payload.projectId)
+ commit('loadPage')
+ }
+}