@@ -915,17 +915,64 @@ export default {
915
915
getIsPublishedBase (item ) {
916
916
return item .status === pkp .const .STATUS_PUBLISHED ;
917
917
},
918
+ /**
919
+ * Gets pubObject's versions/publications. Considers only latest minor versions. Assumes original object is submission.
920
+ *
921
+ * @param {Object} item Item being mapped
922
+ * @returns {Object} Modified mapped item
923
+ */
918
924
getVersions (item ) {
925
+ var latestMinorPublications = [];
926
+ item .publications ? .forEach ((publication ) => {
927
+ // There could be unassigned publications, without stage, major and minor
928
+ if (publication .versionStage == null ) {
929
+ if (! (' unassigned' in latestMinorPublications)) {
930
+ latestMinorPublications[' unassigned' ] = [];
931
+ }
932
+ latestMinorPublications[' unassigned' ].push (publication);
933
+ return ;
934
+ }
935
+ if (! (publication .versionStage in latestMinorPublications)) {
936
+ latestMinorPublications[publication .versionStage ] = [];
937
+ }
938
+ if (
939
+ ! (
940
+ publication .versionMajor in
941
+ latestMinorPublications[publication .versionStage ]
942
+ )
943
+ ) {
944
+ latestMinorPublications[publication .versionStage ][
945
+ publication .versionMajor
946
+ ] = publication;
947
+ return ;
948
+ }
949
+ if (
950
+ publication .versionMinor >
951
+ latestMinorPublications[publication .versionStage ][
952
+ publication .versionMajor
953
+ ].versionMinor
954
+ ) {
955
+ latestMinorPublications[publication .versionStage ][
956
+ publication .versionMajor
957
+ ] = publication;
958
+ }
959
+ });
919
960
return (
920
- item .publications ? .map ((publication ) => {
921
- return {
922
- id: publication .id ,
923
- isCurrentVersion: item .currentPublicationId === publication .id ,
924
- versionNumber: publication .versionString ,
925
- urlPublished: publication .urlPublished ,
926
- datePublished: publication .datePublished ,
927
- };
928
- }) || []
961
+ item .publications
962
+ ? .filter ((publication ) =>
963
+ latestMinorPublications[
964
+ publication .versionStage ?? ' unassigned'
965
+ ].includes (publication),
966
+ )
967
+ .map ((publication ) => {
968
+ return {
969
+ id: publication .id ,
970
+ isCurrentVersion: item .currentPublicationId === publication .id ,
971
+ versionNumber: publication .versionString ,
972
+ urlPublished: publication .urlPublished ,
973
+ datePublished: publication .datePublished ,
974
+ };
975
+ }) || []
929
976
);
930
977
},
931
978
/**
0 commit comments