Skip to content

Commit c2c1133

Browse files
committed
pkp/pkp-lib#10553 condsider JAV, major and minor versions in DOI management
1 parent 9784c61 commit c2c1133

File tree

4 files changed

+77
-14
lines changed

4 files changed

+77
-14
lines changed

src/components/ListPanel/doi/DoiListPanel.vue

Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -915,17 +915,68 @@ export default {
915915
getIsPublishedBase(item) {
916916
return item.status === pkp.const.STATUS_PUBLISHED;
917917
},
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+
*/
918924
getVersions(item) {
925+
var latestMinorPublications = [];
926+
item.publications?.forEach((publication) => {
927+
if (publication.versionStage == null) {
928+
if (!('unassigned' in latestMinorPublications)) {
929+
latestMinorPublications['unassigned'] = [];
930+
}
931+
latestMinorPublications['unassigned'].push(publication);
932+
return;
933+
}
934+
if (!(publication.versionStage in latestMinorPublications)) {
935+
latestMinorPublications[publication.versionStage] = [];
936+
}
937+
if (
938+
!(
939+
publication.versionMajor in
940+
latestMinorPublications[publication.versionStage]
941+
)
942+
) {
943+
latestMinorPublications[publication.versionStage][
944+
publication.versionMajor
945+
] = publication;
946+
return;
947+
}
948+
if (
949+
publication.versionMinor >
950+
latestMinorPublications[publication.versionStage][
951+
publication.versionMajor
952+
].versionMinor
953+
) {
954+
latestMinorPublications[publication.versionStage][
955+
publication.versionMajor
956+
] = publication;
957+
}
958+
});
919959
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-
}) || []
960+
item.publications
961+
?.filter((publication) =>
962+
latestMinorPublications[
963+
publication.versionStage ?? 'unassigned'
964+
].includes(publication),
965+
)
966+
.map((publication) => {
967+
let versionString = publication.versionString;
968+
if (publication.versionStage == null) {
969+
// to distinguish unassigned versions created on the same day, add publication ID
970+
versionString = publication.id + ' - ' + versionString;
971+
}
972+
return {
973+
id: publication.id,
974+
isCurrentVersion: item.currentPublicationId === publication.id,
975+
versionNumber: versionString,
976+
urlPublished: publication.urlPublished,
977+
datePublished: publication.datePublished,
978+
};
979+
}) || []
929980
);
930981
},
931982
/**

src/components/ListPanel/doi/DoiListPanelOJS.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,16 @@ export default {
1919
originalItem.publications.forEach((publication) => {
2020
const isCurrentVersion =
2121
publication.id === this.getCurrentPublication(originalItem).id;
22-
const versionNumber = publication.versionString;
22+
let versionNumber = publication.versionString;
23+
if (publication.versionStage == null) {
24+
// to distinguish unassigned versions created on the same day, add publication ID
25+
versionNumber = publication.id + ' - ' + versionNumber;
26+
}
2327
2428
if (this.enabledDoiTypes.includes('publication')) {
2529
let doiObject = publication.doiObject;
2630
27-
let updateWithNewDoiEndpoint = `${this.doiApiUrl}/publications/${originalItem.currentPublicationId}`;
31+
let updateWithNewDoiEndpoint = `${this.doiApiUrl}/publications/${publication.id}`;
2832
updateWithNewDoiEndpoint = updateWithNewDoiEndpoint.replace(
2933
/dois/g,
3034
'_dois',

src/components/ListPanel/doi/DoiListPanelOMP.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ export default {
1717
originalItem.publications.forEach((publication) => {
1818
const isCurrentVersion =
1919
publication.id === this.getCurrentPublication(originalItem).id;
20-
const versionNumber = publication.versionString;
20+
let versionNumber = publication.versionString;
21+
if (publication.versionStage == null) {
22+
// to distinguish unassigned versions created on the same day, add publication ID
23+
versionNumber = publication.id + ' - ' + versionNumber;
24+
}
2125
2226
// Submissions
2327
if (this.enabledDoiTypes.includes('publication')) {
2428
let doiObject = publication.doiObject;
2529
26-
let updateWithNewDoiEndpoint = `${this.doiApiUrl}/publications/${originalItem.currentPublicationId}`;
30+
let updateWithNewDoiEndpoint = `${this.doiApiUrl}/publications/${publication.id}`;
2731
updateWithNewDoiEndpoint = updateWithNewDoiEndpoint.replace(
2832
/dois/g,
2933
'_dois',

src/components/ListPanel/doi/DoiListPanelOPS.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ export default {
1717
originalItem.publications.forEach((publication) => {
1818
const isCurrentVersion =
1919
publication.id === this.getCurrentPublication(originalItem).id;
20-
const versionNumber = publication.versionString;
20+
let versionNumber = publication.versionString;
21+
if (publication.versionStage == null) {
22+
// to distinguish unassigned versions created on the same day, add publication ID
23+
versionNumber = publication.id + ' - ' + versionNumber;
24+
}
2125
2226
// Submissions
2327
if (this.enabledDoiTypes.includes('publication')) {

0 commit comments

Comments
 (0)