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') + } +}