From d733bfda6d5cf165912b54e1389393b1a5f78db0 Mon Sep 17 00:00:00 2001 From: Kenji Tanaka Date: Wed, 10 Apr 2024 14:58:25 -0500 Subject: [PATCH 1/6] :sparkles: feat(deliverables reports): Add SOIL contribution logic in deliverables report generators --- ...liverablesReportingExcelSummaryAction.java | 94 ++++++++++++++++++- .../ExpectedDeliverablesSummaryAction.java | 85 ++++++++++++++++- 2 files changed, 171 insertions(+), 8 deletions(-) diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java index 381bfddf61..2d8fd8d96a 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java @@ -25,6 +25,8 @@ import org.cgiar.ccafs.marlo.data.manager.DeliverableInfoManager; import org.cgiar.ccafs.marlo.data.manager.DeliverableLocationManager; import org.cgiar.ccafs.marlo.data.manager.DeliverableManager; +import org.cgiar.ccafs.marlo.data.manager.DeliverableShfrmPriorityActionManager; +import org.cgiar.ccafs.marlo.data.manager.DeliverableShfrmSubActionManager; import org.cgiar.ccafs.marlo.data.manager.GenderTypeManager; import org.cgiar.ccafs.marlo.data.manager.GlobalUnitManager; import org.cgiar.ccafs.marlo.data.manager.PhaseManager; @@ -48,6 +50,8 @@ import org.cgiar.ccafs.marlo.data.model.DeliverableProgram; import org.cgiar.ccafs.marlo.data.model.DeliverablePublicationMetadata; import org.cgiar.ccafs.marlo.data.model.DeliverableQualityCheck; +import org.cgiar.ccafs.marlo.data.model.DeliverableShfrmPriorityAction; +import org.cgiar.ccafs.marlo.data.model.DeliverableShfrmSubAction; import org.cgiar.ccafs.marlo.data.model.DeliverableUser; import org.cgiar.ccafs.marlo.data.model.DeliverableUserPartnership; import org.cgiar.ccafs.marlo.data.model.DeliverableUserPartnershipPerson; @@ -118,6 +122,8 @@ public class DeliverablesReportingExcelSummaryAction extends BaseSummariesAction private DeliverableLocationManager deliverableLocationManager; private final CrpPpaPartnerManager crpPpaPartnerManager; private final DeliverableInfoManager deliverableInfoManager; + private final DeliverableShfrmPriorityActionManager deliverableShfrmPriorityActionManager; + private final DeliverableShfrmSubActionManager deliverableShfrmSubActionManager; private String showAllYears; private String ppa; @@ -141,7 +147,9 @@ public DeliverablesReportingExcelSummaryAction(APConfig config, GlobalUnitManage DeliverableGeographicScopeManager deliverableGeographicScopeManager, DeliverableGeographicRegionManager deliverableGeographicRegionManager, DeliverableLocationManager deliverableLocationManager, CrpPpaPartnerManager crpPpaPartnerManager, - DeliverableInfoManager deliverableInfoManager) { + DeliverableInfoManager deliverableInfoManager, + DeliverableShfrmPriorityActionManager deliverableShfrmPriorityActionManager, + DeliverableShfrmSubActionManager deliverableShfrmSubActionManager) { super(config, crpManager, phaseManager, projectManager); this.genderTypeManager = genderTypeManager; this.crpPpaPartnerManager = crpPpaPartnerManager; @@ -155,6 +163,8 @@ public DeliverablesReportingExcelSummaryAction(APConfig config, GlobalUnitManage this.deliverableGeographicRegionManager = deliverableGeographicRegionManager; this.deliverableLocationManager = deliverableLocationManager; this.deliverableInfoManager = deliverableInfoManager; + this.deliverableShfrmPriorityActionManager = deliverableShfrmPriorityActionManager; + this.deliverableShfrmSubActionManager = deliverableShfrmSubActionManager; } /** @@ -258,6 +268,14 @@ private MasterReport addi8nParameters(MasterReport masterReport) { masterReport.getParameterValues().put("i8nJustification", this.getText("deliverable.justification")); masterReport.getParameterValues().put("i8nDeliverableDescription", this.getText("deliverable.description")); masterReport.getParameterValues().put("i8nProjectLeadPartner", this.getText("summaries.deliverable.leadPartner")); + masterReport.getParameterValues().put("i8nDeliverablesContributingSHFRM", + "Is this deliverable aligned with the Soil Health and Fertility Road Map (SHFRM) implementation?"); + masterReport.getParameterValues().put("i8nDeliverablesContributingNarrative", + "How this deliverable is expecting to contribute to the SHFRM?"); + masterReport.getParameterValues().put("i8nDeliverablesContributingNarrativeReporting", + "How this deliverable is contributing to the SHFRM?"); + masterReport.getParameterValues().put("i8nDeliverablesActions", + "To which Priority(ies) action is contributing to:"); /* * Reporting @@ -402,7 +420,8 @@ private TypedTableModel getDeliverablesDataReportingTableModel() { "deliv_license_modifications", "volume", "issue", "pages", "journal", "journal_indicators", "acknowledge", "fl_contrib", "project_ID", "project_title", "flagships", "regions", "others_responsibles", "newExceptedFlag", "phaseID", "gender", "youth", "cap", "geographicScope", "region", "country", "status", "isComplete", - "individual", "ppaResponsible", "managingResponsible", "climate", "justification", "description", "articleURL"}, + "individual", "ppaResponsible", "managingResponsible", "climate", "justification", "description", "articleURL", + "isContributing", "contributingNarrative", "shfrmActions", "contributingNarrativeReporting"}, new Class[] {Long.class, String.class, String.class, String.class, String.class, Integer.class, String.class, String.class, String.class, String.class, Integer.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, @@ -411,7 +430,7 @@ private TypedTableModel getDeliverablesDataReportingTableModel() { String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, Long.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, - String.class, String.class, String.class}, + String.class, String.class, String.class, String.class, String.class, String.class, String.class}, 0); if (!deliverableManager.findAll().isEmpty()) { List deliverables = new ArrayList<>(); @@ -1789,6 +1808,72 @@ private TypedTableModel getDeliverablesDataReportingTableModel() { country = ""; } + String isContributing = "", contributingNarrative = "", contributingNarrativeReporting = "", shfrmActions = ""; + + // SOIL Contribution + if (deliverable.getDeliverableInfo() != null + && deliverable.getDeliverableInfo().getContributingShfrm() != null) { + if (deliverable.getDeliverableInfo().getContributingShfrm() == true) { + isContributing = "Yes"; + } else { + isContributing = "No"; + } + } else { + isContributing = ""; + } + + if (isContributing.equals("Yes")) { + + if (deliverable.getDeliverableInfo().getShfrmContributionNarrative() != null) { + contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrative(); + } else { + contributingNarrative = ""; + } + + if (deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR() != null) { + contributingNarrativeReporting = deliverable.getDeliverableInfo().getShfrmContributionNarrativeAR(); + } else { + contributingNarrativeReporting = ""; + } + + List actions = new ArrayList<>(); + List subActions = new ArrayList<>(); + String actionsText = ""; + + try { + actions = deliverableShfrmPriorityActionManager.findByDeliverableAndPhase(deliverable.getId(), + this.getSelectedPhase().getId()); + + if (actions != null && !actions.isEmpty()) { + for (DeliverableShfrmPriorityAction action : actions) { + if (action != null && action.getShfrmPriorityAction() != null + && action.getShfrmPriorityAction().getId() != null + && action.getShfrmPriorityAction().getComposedName() != null) { + actionsText += "
" + action.getShfrmPriorityAction().getComposedName(); + subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(), + this.getSelectedPhase().getId()); + + if (subActions != null && !subActions.isEmpty()) { + actionsText += "
SubActions:
"; + for (DeliverableShfrmSubAction subAction : subActions) { + if (subAction != null && subAction.getShfrmSubAction() != null + && subAction.getShfrmSubAction().getComposedName() != null) { + actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "
"; + } + } + } + } + } + } + shfrmActions = actionsText; + } catch (Exception e) { + LOG.error(e + " error getting shfrm actions and subactions"); + } + } else { + contributingNarrative = ""; + shfrmActions = ""; + contributingNarrativeReporting = ""; + } model.addRow(new Object[] {deliverable.getId(), title, delivType, delivSubType, delivStatus, delivYear, keyOutput, outcomes, leader, fundingSources, delivNewYear, delivNewYearJustification, @@ -1798,7 +1883,8 @@ private TypedTableModel getDeliverablesDataReportingTableModel() { disseminated, restrictedAccess, delivLicenseModifications, volume, issue, pages, journal, journalIndicator, acknowledge, flContrib, projectID, projectTitle, flagships, regions, othersResponsibles, newExceptedFlag, phaseID, gender, youth, cap, geographicScope, region, country, status, isComplete, individual, ppaResponsible, - managingResponsible, climate, justification, description, articleURL}); + managingResponsible, climate, justification, description, articleURL, isContributing, contributingNarrative, + shfrmActions, contributingNarrativeReporting}); } } return model; diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java index f31ea39f07..79870a8078 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java @@ -23,6 +23,8 @@ import org.cgiar.ccafs.marlo.data.manager.DeliverableGeographicRegionManager; import org.cgiar.ccafs.marlo.data.manager.DeliverableInfoManager; import org.cgiar.ccafs.marlo.data.manager.DeliverableLocationManager; +import org.cgiar.ccafs.marlo.data.manager.DeliverableShfrmPriorityActionManager; +import org.cgiar.ccafs.marlo.data.manager.DeliverableShfrmSubActionManager; import org.cgiar.ccafs.marlo.data.manager.GenderTypeManager; import org.cgiar.ccafs.marlo.data.manager.GlobalUnitManager; import org.cgiar.ccafs.marlo.data.manager.PhaseManager; @@ -38,6 +40,8 @@ import org.cgiar.ccafs.marlo.data.model.DeliverableGeographicScope; import org.cgiar.ccafs.marlo.data.model.DeliverableInfo; import org.cgiar.ccafs.marlo.data.model.DeliverableLocation; +import org.cgiar.ccafs.marlo.data.model.DeliverableShfrmPriorityAction; +import org.cgiar.ccafs.marlo.data.model.DeliverableShfrmSubAction; import org.cgiar.ccafs.marlo.data.model.DeliverableUserPartnership; import org.cgiar.ccafs.marlo.data.model.DeliverableUserPartnershipPerson; import org.cgiar.ccafs.marlo.data.model.FundingSourceInfo; @@ -132,6 +136,8 @@ public class ExpectedDeliverablesSummaryAction extends BaseSummariesAction imple private final DeliverableGeographicRegionManager deliverableGeographicRegionManager; private DeliverableLocationManager deliverableLocationManager; private DeliverableInfoManager deliverableInfoManager; + private final DeliverableShfrmPriorityActionManager deliverableShfrmPriorityActionManager; + private final DeliverableShfrmSubActionManager deliverableShfrmSubActionManager; // XLS bytes private byte[] bytesXLSX; // Streams @@ -144,7 +150,9 @@ public ExpectedDeliverablesSummaryAction(APConfig config, GlobalUnitManager crpM ResourceManager resourceManager, ProjectManager projectManager, DeliverableCrossCuttingMarkerManager deliverableCrossCuttingMarkerManager, DeliverableGeographicRegionManager deliverableGeographicRegionManager, - DeliverableLocationManager deliverableLocationManager, DeliverableInfoManager deliverableInfoManager) { + DeliverableLocationManager deliverableLocationManager, DeliverableInfoManager deliverableInfoManager, + DeliverableShfrmPriorityActionManager deliverableShfrmPriorityActionManager, + DeliverableShfrmSubActionManager deliverableShfrmSubActionManager) { super(config, crpManager, phaseManager, projectManager); this.genderTypeManager = genderTypeManager; this.crpProgramManager = crpProgramManager; @@ -154,6 +162,8 @@ public ExpectedDeliverablesSummaryAction(APConfig config, GlobalUnitManager crpM this.deliverableGeographicRegionManager = deliverableGeographicRegionManager; this.deliverableLocationManager = deliverableLocationManager; this.deliverableInfoManager = deliverableInfoManager; + this.deliverableShfrmPriorityActionManager = deliverableShfrmPriorityActionManager; + this.deliverableShfrmSubActionManager = deliverableShfrmSubActionManager; } /** @@ -206,6 +216,14 @@ private MasterReport addi8nParameters(MasterReport masterReport) { this.getText("summaries.board.report.expectedDeliverables.isNewDeliverable")); masterReport.getParameterValues().put("i8nArticleURL", this.getText("summaries.board.report.expectedDeliverables.articleURL")); + masterReport.getParameterValues().put("i8nDeliverablesContributingSHFRM", + "Is this deliverable aligned with the Soil Health and Fertility Road Map (SHFRM) implementation?"); + masterReport.getParameterValues().put("i8nDeliverablesContributingNarrative", + "How this deliverable is expecting to contribute to the SHFRM?"); + masterReport.getParameterValues().put("i8nDeliverablesContributingNarrativeReporting", + "How this deliverable is contributing to the SHFRM?"); + masterReport.getParameterValues().put("i8nDeliverablesActions", + "To which Priority(ies) action is contributing to:"); return masterReport; } @@ -299,12 +317,12 @@ private TypedTableModel getDeliverablesDetailsTableModel() { "flagships", "regions", "individual", "partnersResponsible", "shared", "openFS", "fsWindows", "outcomes", "projectLeadPartner", "managingResponsible", "phaseID", "finishedFS", "gender", "youth", "cap", "climate", "deliverableDescription", "geographicScope", "region", "country", "newDeliverable", "divisions", "hasDivisions", - "articleURL"}, + "articleURL", "isContributing", "contributingNarrative", "shfrmActions"}, new Class[] {Long.class, String.class, Integer.class, String.class, String.class, String.class, String.class, String.class, Long.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, Long.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, - String.class, String.class, Boolean.class, String.class}, + String.class, String.class, Boolean.class, String.class, String.class, Boolean.class, String.class}, 0); Boolean activePPAFilter = ppa != null && !ppa.isEmpty() && !ppa.equals("All") && !ppa.equals("-1"); Boolean addDeliverableRow = true; @@ -1315,12 +1333,71 @@ private TypedTableModel getDeliverablesDetailsTableModel() { divisions = null; } + String isContributing = "", contributingNarrative = "", shfrmActions = ""; + + // SOIL Contribution + if (deliverable.getDeliverableInfo() != null + && deliverable.getDeliverableInfo().getContributingShfrm() != null) { + if (deliverable.getDeliverableInfo().getContributingShfrm() == true) { + isContributing = "Yes"; + } else { + isContributing = "No"; + } + } else { + isContributing = ""; + } + + if (isContributing.equals("Yes")) { + + if (deliverable.getDeliverableInfo().getShfrmContributionNarrative() != null) { + contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrative(); + } else { + contributingNarrative = ""; + } + + List actions = new ArrayList<>(); + List subActions = new ArrayList<>(); + String actionsText = ""; + + try { + actions = deliverableShfrmPriorityActionManager.findByDeliverableAndPhase(deliverable.getId(), + this.getSelectedPhase().getId()); + + if (actions != null && !actions.isEmpty()) { + for (DeliverableShfrmPriorityAction action : actions) { + if (action != null && action.getShfrmPriorityAction() != null + && action.getShfrmPriorityAction().getId() != null + && action.getShfrmPriorityAction().getComposedName() != null) { + actionsText += "
" + action.getShfrmPriorityAction().getComposedName(); + subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(), + this.getSelectedPhase().getId()); + + if (subActions != null && !subActions.isEmpty()) { + actionsText += "
SubActions:
"; + for (DeliverableShfrmSubAction subAction : subActions) { + if (subAction != null && subAction.getShfrmSubAction() != null + && subAction.getShfrmSubAction().getComposedName() != null) { + actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "
"; + } + } + } + } + } + } + shfrmActions = actionsText; + } catch (Exception e) { + LOG.error(e + " error getting shfrm actions and subactions"); + } + } else { + contributingNarrative = ""; + shfrmActions = ""; + } model.addRow(new Object[] {deliverableId, deliverableTitle, completionYear, deliverableType, deliverableSubType, keyOutput, delivStatus, delivNewYear, projectID, projectTitle, projectClusterActivities, flagships, regions, individual, ppaResponsible, shared, openFS, fsWindows, outcomes, projectLeadPartner, managingResponsible, phaseID, finishedFS, gender, youth, cap, climate, deliverableDescription, geographicScope, region, country, - newDeliverable, divisions, hasDivisions, articleURL}); + newDeliverable, divisions, hasDivisions, articleURL, isContributing, contributingNarrative, shfrmActions}); if (deliverablePerYearList.containsKey(completionYear)) { Set deliverableSet = deliverablePerYearList.get(completionYear); From 4b39018a356b518fba2c1e0e18d84618da59a711 Mon Sep 17 00:00:00 2001 From: Kenji Tanaka Date: Wed, 10 Apr 2024 14:59:08 -0500 Subject: [PATCH 2/6] :wrench: chore(deliverables summaries): Enable expected and reported deliverables reports for testing --- .../webapp/WEB-INF/crp/views/summaries/boardSummaries.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/marlo-web/src/main/webapp/WEB-INF/crp/views/summaries/boardSummaries.ftl b/marlo-web/src/main/webapp/WEB-INF/crp/views/summaries/boardSummaries.ftl index 5ecd2787fc..8fec7943fc 100644 --- a/marlo-web/src/main/webapp/WEB-INF/crp/views/summaries/boardSummaries.ftl +++ b/marlo-web/src/main/webapp/WEB-INF/crp/views/summaries/boardSummaries.ftl @@ -193,7 +193,7 @@ [#-- DELIVERABLES REPORTS --] { "slug": "deliverables", "active": !centerGlobalUnit, "title":"summaries.board.options.deliverables", "reportsList": [ { "active": true, - "available": false, + "available": true, "title": "summaries.board.report.expectedDeliverables", "description": "summaries.board.report.expectedDeliverables.description", "namespace": "/projects", @@ -215,7 +215,7 @@ ] }, { "active": true, - "available": false, + "available": true, "title": "summaries.board.report.reportedDeliverables", "description": "summaries.board.report.reportedDeliverables.description", "namespace": "/projects", From 488a2c331114ca3c1cae85cc0e6d9b26bbd8a344 Mon Sep 17 00:00:00 2001 From: Kenji Tanaka Date: Wed, 10 Apr 2024 15:23:38 -0500 Subject: [PATCH 3/6] :sparkles: feat(expected deliverables report): Update prpt file pentaho template --- .../pentaho/crp/ExpectedDeliverables.prpt | Bin 79488 -> 79693 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/marlo-web/src/main/resources/pentaho/crp/ExpectedDeliverables.prpt b/marlo-web/src/main/resources/pentaho/crp/ExpectedDeliverables.prpt index b5cb48f8d023b525fff4ea046644c14dffbdd7cf..e5cda151761b9796835d18e9b5c8549ee86e2994 100644 GIT binary patch delta 6146 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 From 1582e59b41c4f61774b2428a4112acd4584c62bb Mon Sep 17 00:00:00 2001 From: Kenji Tanaka Date: Wed, 10 Apr 2024 16:22:05 -0500 Subject: [PATCH 4/6] :sparkles: feat(reported deliverables summary): Add Soil information in deliverable report --- .../pentaho/crp/ReportingDeliverables.prpt | Bin 88410 -> 88500 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/marlo-web/src/main/resources/pentaho/crp/ReportingDeliverables.prpt b/marlo-web/src/main/resources/pentaho/crp/ReportingDeliverables.prpt index d94563bbd1660be12d16f778910fc6f00c3b90a7..3ef33a59aec9025ca02eac1f787bea54ccb949fb 100644 GIT binary patch delta 13059 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�A{Fo)av|Ad9kPL8~w5K?-vt@M+~1BNWRLkbBxmM-LJ?<(YpRv2F@5jH)3MMWKbZw%yg zn$%;z#AaKqVv0jpRmrf(K=rQ+4ccMfqmxX?6b`A4B~#$Chv*55G?>08rAQifl8jTr z&?RlpHFHluEJp-!Q^PRIAt^g*>#G8Z2yry&hEXV!i_)mSQZdpY8v&YU9T{~C6(wTY zVapQsb~!NOC1_LkSgDft(@46gDCy!10X~b4l!!wb)MHmIhn3)M0)7xd1``mEzc-2! zZXE|r$$EzXGzH>XbiJY!VqQ}I8uErz5R766szTcPSebrUw(V$JW|TWAV3)v}x*FqF zc~`lmE!tF_B%*FD#BUv%-KZO&PEdfpEypnzrg`59qEvDMnibkO9YFAo$jBjLq3;K% zJdL&_>QoR{(O(~q`!A0Trw@P)UP_e4^kfZkVP|9ga|gs;8kEN5s4Jzy_s-#`j`7*b zuqzM6B$mVkWPI(77dmJ_TL!X+6k_@6$uD?Zd^%+pM1ZF3uwGJM@&49ue}gr zJ062=u<5fHKe>p$(m;<7K#pDphMG~B0~ZE>v?-aJPU`~n}pY#-|iJwRBR zYrah=!%eR=A6g&kPFxnN)10GrnP278X!`PaECkg-sZlIv&O zNj+%vn-JB0HFbC)c)7cWCU?lQc{E%OBZ26&3>m>GRU&-aW1lF^bz7a4?@nE+R5MT3 zf)J*L4Y8;tV${6-RL4RPQZfWc4?*8}vhS5MA!>4B8EfBKkv4PYNuWCQI%C<^>{R6h zZ2E~D@(iQ_DO^lmz_TigRfI9N94YBCvSh4_QW1D!!RGfQR_)MGyRy+n#Eoo3#0xCs z*mhl{hUql{R&*PFMhE@MNVZiNVmVFd(%T~@J}XpxE72c6WEoHD;XSRoBFLy;X`ico zNp2+#gZqGiTDvAggyj{+>amt-c=Sq(D^Io^dv*TXx&0>RJtFqh#g78F(bU$d_9(T+1A2*?Hz2nfu-YWhJy)>AJO z0a$-S!zuxAFhlD;vM(X?zaCP#{}=~0KtR-_MgBjd^@kDs2O&!q&{` zPbJ^~PU_$FgCCjtSF1|pQvqQAji;sZ5w9=RRRuu$SCR9f02?F#q}CAt@Kcvn0Pz3J z^v~rVL-?m*{HOohxut@s0?7VeOr!eYtt(Yb6~OXW0sNzgNX<|MF#Y4^-!$6?+xD*} zkb0^LAR+uSXI+C8eu0mbHuAC3{u`vtnM$VyApXY{q1JY3?}r1_59EK3XfxGL4M6q} zs9r-@!|nr+{ju)w{}l}cWH+@@4M6k%%?py;9{tLAC z2ZWQVqYl9RJ85rq01jw9U+TNsM{1*q00{r&_a86+-lNd}%gbr%u{wbCAJD(=wEqSr Rq|#^rC?H`JKc)ooe*k$+@Xi1L delta 12802 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 From 10015a54224f108971e76ceeeaa6f3c51388d527 Mon Sep 17 00:00:00 2001 From: Kenji Tanaka Date: Thu, 11 Apr 2024 16:06:46 -0500 Subject: [PATCH 5/6] :sparkles: feat(Expected deliverable report): Update data formats --- .../pentaho/crp/ExpectedDeliverables.prpt | Bin 79693 -> 79533 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/marlo-web/src/main/resources/pentaho/crp/ExpectedDeliverables.prpt b/marlo-web/src/main/resources/pentaho/crp/ExpectedDeliverables.prpt index e5cda151761b9796835d18e9b5c8549ee86e2994..1862a8ce9ab9fa6a22706fe46cc1bb00219ba7ed 100644 GIT binary patch delta 5410 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 Xoh^Wu@QLBy;SwlH@>U9e1mJ%Frag-R delta 5563 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 Date: Thu, 11 Apr 2024 16:08:14 -0500 Subject: [PATCH 6/6] :sparkles: feat(Deliverable reports): Update priority action format and labels --- ...liverablesReportingExcelSummaryAction.java | 12 ++++---- .../ExpectedDeliverablesSummaryAction.java | 30 ++++++++++++------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java index 2d8fd8d96a..792f4f9fe2 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/DeliverablesReportingExcelSummaryAction.java @@ -1849,16 +1849,16 @@ private TypedTableModel getDeliverablesDataReportingTableModel() { if (action != null && action.getShfrmPriorityAction() != null && action.getShfrmPriorityAction().getId() != null && action.getShfrmPriorityAction().getComposedName() != null) { - actionsText += "
" + action.getShfrmPriorityAction().getComposedName(); + actionsText += "\n " + action.getShfrmPriorityAction().getComposedName(); subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(), this.getSelectedPhase().getId()); if (subActions != null && !subActions.isEmpty()) { - actionsText += "
SubActions:
"; + actionsText += "\n SubActions:\n"; for (DeliverableShfrmSubAction subAction : subActions) { if (subAction != null && subAction.getShfrmSubAction() != null && subAction.getShfrmSubAction().getComposedName() != null) { - actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "
"; + actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "\n"; } } } @@ -1870,9 +1870,9 @@ private TypedTableModel getDeliverablesDataReportingTableModel() { LOG.error(e + " error getting shfrm actions and subactions"); } } else { - contributingNarrative = ""; - shfrmActions = ""; - contributingNarrativeReporting = ""; + contributingNarrative = ""; + shfrmActions = ""; + contributingNarrativeReporting = ""; } model.addRow(new Object[] {deliverable.getId(), title, delivType, delivSubType, delivStatus, delivYear, diff --git a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java index 79870a8078..9d46321585 100644 --- a/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java +++ b/marlo-web/src/main/java/org/cgiar/ccafs/marlo/action/summaries/ExpectedDeliverablesSummaryAction.java @@ -676,13 +676,17 @@ private TypedTableModel getDeliverablesDetailsTableModel() { if (deliverableDissemination.getArticleUrl() != null) { articleURL = deliverableDissemination.getArticleUrl(); } else { - articleURL = ""; + articleURL = "<Not Defined>"; } } else { - articleURL = ""; + articleURL = "<Not Applicable>"; } } else { - articleURL = ""; + articleURL = "<Not Applicable>"; + } + + if (articleURL == null || (articleURL != null && articleURL.isEmpty())) { + articleURL = "Not Defined>"; } LinkedHashSet managingResponsibleList = new LinkedHashSet<>(); @@ -1112,6 +1116,11 @@ private TypedTableModel getDeliverablesDetailsTableModel() { } else { regions = null; } + + if (regions == null) { + regions = "<Not Defined>"; + } + String openFS = ""; String finishedFS = ""; Set fsWindowsSet = new HashSet(); @@ -1349,10 +1358,11 @@ private TypedTableModel getDeliverablesDetailsTableModel() { if (isContributing.equals("Yes")) { - if (deliverable.getDeliverableInfo().getShfrmContributionNarrative() != null) { + if (deliverable.getDeliverableInfo().getShfrmContributionNarrative() != null + && !deliverable.getDeliverableInfo().getShfrmContributionNarrative().isEmpty()) { contributingNarrative = deliverable.getDeliverableInfo().getShfrmContributionNarrative(); } else { - contributingNarrative = ""; + contributingNarrative = ""; } List actions = new ArrayList<>(); @@ -1368,16 +1378,16 @@ private TypedTableModel getDeliverablesDetailsTableModel() { if (action != null && action.getShfrmPriorityAction() != null && action.getShfrmPriorityAction().getId() != null && action.getShfrmPriorityAction().getComposedName() != null) { - actionsText += "
" + action.getShfrmPriorityAction().getComposedName(); + actionsText += "\n " + action.getShfrmPriorityAction().getComposedName(); subActions = deliverableShfrmSubActionManager.findByPriorityActionAndPhase(action.getId(), this.getSelectedPhase().getId()); if (subActions != null && !subActions.isEmpty()) { - actionsText += "
SubActions:
"; + actionsText += "\n SubActions: \n"; for (DeliverableShfrmSubAction subAction : subActions) { if (subAction != null && subAction.getShfrmSubAction() != null && subAction.getShfrmSubAction().getComposedName() != null) { - actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "
"; + actionsText += " ● " + subAction.getShfrmSubAction().getComposedName() + "\n"; } } } @@ -1389,8 +1399,8 @@ private TypedTableModel getDeliverablesDetailsTableModel() { LOG.error(e + " error getting shfrm actions and subactions"); } } else { - contributingNarrative = ""; - shfrmActions = ""; + contributingNarrative = "<Not Applicable>"; + shfrmActions = "<Not Applicable>"; } model.addRow(new Object[] {deliverableId, deliverableTitle, completionYear, deliverableType, deliverableSubType,