diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/types.ts b/src/Bundle/ChillDocStoreBundle/Resources/public/types.ts index ee6b2bf98..a6ce41512 100644 --- a/src/Bundle/ChillDocStoreBundle/Resources/public/types.ts +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/types.ts @@ -62,6 +62,16 @@ export interface StoredObjectStatusChange { type: string; } +export interface StoredObjectVersionWithPointInTime extends StoredObjectVersionPersisted { + "point-in-times": StoredObjectPointInTime[]; +} + +export interface StoredObjectPointInTime { + id: number; + byUser: User | null; + reason: 'keep-before-conversion'|'keep-by-user'; +} + /** * Function executed by the WopiEditButton component. */ diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/DocumentActionButtonsGroup.vue b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/DocumentActionButtonsGroup.vue index 66546f2a5..614dc7a78 100644 --- a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/DocumentActionButtonsGroup.vue +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/DocumentActionButtonsGroup.vue @@ -16,6 +16,9 @@
  • +
  • + +
  • @@ -40,6 +43,7 @@ import { WopiEditButtonExecutableBeforeLeaveFunction } from "../types"; import DesktopEditButton from "ChillDocStoreAssets/vuejs/StoredObjectButton/DesktopEditButton.vue"; +import HistoryButton from "ChillDocStoreAssets/vuejs/StoredObjectButton/HistoryButton.vue"; interface DocumentActionButtonsGroupConfig { storedObject: StoredObject, @@ -126,7 +130,11 @@ const isConvertibleToPdf = computed(() => { && is_extension_viewable(props.storedObject.currentVersion.type) && props.storedObject.currentVersion.type !== 'application/pdf' && props.storedObject.currentVersion.persisted !== false; -}) +}); + +const isHistoryViewable = computed(() => { + return props.storedObject.status === 'ready'; +}); const checkForReady = function(): void { if ( diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton.vue b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton.vue new file mode 100644 index 000000000..108256909 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonList.vue b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonList.vue new file mode 100644 index 000000000..fccdb6a0d --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonList.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonListItem.vue b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonListItem.vue new file mode 100644 index 000000000..c60d62302 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonListItem.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonModal.vue b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonModal.vue new file mode 100644 index 000000000..13b994be2 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonModal.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/api.ts b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/api.ts new file mode 100644 index 000000000..b48394826 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/api.ts @@ -0,0 +1,8 @@ +import {StoredObject, StoredObjectVersion, StoredObjectVersionWithPointInTime} from "../../../types"; +import {fetchResults, makeFetch} from "../../../../../../ChillMainBundle/Resources/public/lib/api/apiMethods"; + +export const get_versions = async (storedObject: StoredObject): Promise => { + const versions = await fetchResults(`/api/1.0/doc-store/stored-object/${storedObject.uuid}/versions`); + + return versions.sort((a: StoredObjectVersionWithPointInTime, b: StoredObjectVersionWithPointInTime) => a.version - b.version); +}