diff --git a/app/src/views/private/components/revisions-drawer-detail/revisions-date-group.vue b/app/src/views/private/components/revisions-drawer-detail/revisions-date-group.vue new file mode 100644 index 0000000000..e6cb49f71e --- /dev/null +++ b/app/src/views/private/components/revisions-drawer-detail/revisions-date-group.vue @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue b/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue index b5093feb85..f761b0a3cc 100644 --- a/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue +++ b/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue @@ -8,28 +8,17 @@ - {{ group.dateFormatted }} - - - - + - - {{ t('count_other_revisions', revisionsCount - 101) }} - - - - - - - + {{ t('revision_delta_created_externally') }} + import { useI18n } from 'vue-i18n'; -import { defineComponent, ref } from 'vue'; +import { defineComponent, ref, watch } from 'vue'; import { Revision, RevisionsByDate } from './types'; import api from '@/api'; import { groupBy, orderBy } from 'lodash'; import { isToday, isYesterday, isThisYear } from 'date-fns'; import formatLocalized from '@/utils/localized-format'; -import RevisionItem from './revision-item.vue'; +import RevisionsDateGroup from './revisions-date-group.vue'; import RevisionsDrawer from './revisions-drawer.vue'; import { unexpectedError } from '@/utils/unexpected-error'; import { abbreviateNumber } from '@/utils/abbreviate-number'; export default defineComponent({ - components: { RevisionItem, RevisionsDrawer }, + components: { RevisionsDrawer, RevisionsDateGroup }, props: { collection: { type: String, @@ -72,13 +61,21 @@ export default defineComponent({ setup(props) { const { t } = useI18n(); - const { revisions, revisionsByDate, loading, refresh, revisionsCount, created } = useRevisions( + const { revisions, revisionsByDate, loading, refresh, revisionsCount, pagesCount, created } = useRevisions( props.collection, props.primaryKey ); const modalActive = ref(false); const modalCurrentRevision = ref(null); + const page = ref(1); + + watch( + () => page.value, + (newPage) => { + refresh(newPage); + } + ); return { t, @@ -91,6 +88,8 @@ export default defineComponent({ openModal, revisionsCount, created, + page, + pagesCount, abbreviateNumber, }; @@ -105,13 +104,15 @@ export default defineComponent({ const loading = ref(false); const revisionsCount = ref(0); const created = ref(); + const pagesCount = ref(0); getRevisions(); - return { created, revisions, revisionsByDate, loading, refresh, revisionsCount }; + return { created, revisions, revisionsByDate, loading, refresh, revisionsCount, pagesCount }; - async function getRevisions() { + async function getRevisions(page = 0) { loading.value = true; + const pageSize = 100; try { const response = await api.get(`/revisions`, { @@ -125,7 +126,8 @@ export default defineComponent({ }, }, sort: '-id', - limit: 100, + limit: pageSize, + page, fields: [ 'id', 'data', @@ -217,15 +219,16 @@ export default defineComponent({ revisionsByDate.value = orderBy(revisionsGrouped, ['date'], ['desc']); revisions.value = orderBy(response.data.data, ['activity.timestamp'], ['desc']); revisionsCount.value = response.data.meta.filter_count; - } catch (err: any) { + pagesCount.value = Math.ceil(revisionsCount.value / pageSize); + } catch (err) { unexpectedError(err); } finally { loading.value = false; } } - async function refresh() { - await getRevisions(); + async function refresh(page = 0) { + await getRevisions(page); } } }, @@ -276,4 +279,8 @@ export default defineComponent({ font-style: italic; } + +.v-pagination { + justify-content: center; +}