From 55c5244959e7799fcd9f27a1701eddcae07c910f Mon Sep 17 00:00:00 2001 From: inadcl Date: Fri, 18 Nov 2022 08:42:38 +0100 Subject: [PATCH 1/2] added a filter to monitor or unmonitor deppending of the actual status --- .../MalDataApprovalDefaultRepository.ts | 21 ++++++++++++++----- .../entities/MalDataApprovalItem.ts | 1 + .../DataApprovalViewModel.ts | 2 ++ .../data-approval-list/DataApprovalList.tsx | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/data/reports/mal-data-approval/MalDataApprovalDefaultRepository.ts b/src/data/reports/mal-data-approval/MalDataApprovalDefaultRepository.ts index 74ff106c..318016b0 100644 --- a/src/data/reports/mal-data-approval/MalDataApprovalDefaultRepository.ts +++ b/src/data/reports/mal-data-approval/MalDataApprovalDefaultRepository.ts @@ -136,7 +136,8 @@ type SqlField = | "lastupdatedvalue" | "lastdateofsubmission" | "lastdateofapproval" - | "diff"; + | "diff" + | "notificationActive"; const fieldMapping: Record = { dataSetUid: "datasetuid", @@ -153,6 +154,7 @@ const fieldMapping: Record = { lastDateOfSubmission: "lastdateofsubmission", lastDateOfApproval: "lastdateofapproval", modificationCount: "diff", + notificationActive: "notificationActive", }; export class MalDataApprovalDefaultRepository implements MalDataApprovalRepository { @@ -231,7 +233,11 @@ export class MalDataApprovalDefaultRepository implements MalDataApprovalReposito paging_to_download ) .getData(); + + const monitoring:Monitoring[]|void = + await this.getMonitoring(Namespaces.MONITORING) + const monitoringlist = monitoring?? [] const { rows } = await sqlViews .query( getSqlViewId(config, SQL_VIEW_DATA_DUPLICATION_NAME), @@ -248,8 +254,7 @@ export class MalDataApprovalDefaultRepository implements MalDataApprovalReposito paging_to_download ) .getData(); - - return mergeHeadersAndData(options, periods, headerRows, rows); + return mergeHeadersAndData(options, periods, headerRows, rows, monitoringlist); // A data value is not associated to a specific data set, but we can still map it // through the data element (1 data value -> 1 data element -> N data sets). } @@ -741,7 +746,8 @@ function mergeHeadersAndData( options: MalDataApprovalOptions, selectablePeriods: string[], headers: SqlViewGetData["rows"], - data: SqlViewGetData["rows"] + data: SqlViewGetData["rows"], + monitoring: Monitoring[] ) { const { sorting, paging, orgUnitIds, periods, approvalStatus, completionStatus } = options; // ? const activePeriods = periods.length > 0 ? periods : selectablePeriods; @@ -756,7 +762,11 @@ function mergeHeadersAndData( const filterOrgUnitIds = orgUnitIds.length > 0 ? orgUnitIds : undefined; for (const period of activePeriods) { - for (const header of headers) { + for (const header of headers) { + const hasMonitoring = monitoring.filter((monitor) => { + return monitor.orgUnit === header.orgunituid && monitor.period === period; + })[0]; + if (filterOrgUnitIds !== undefined && filterOrgUnitIds.indexOf(header.orgunituid) === -1) { continue; } @@ -777,6 +787,7 @@ function mergeHeadersAndData( lastDateOfSubmission: datavalue?.lastdateofsubmission, lastDateOfApproval: datavalue?.lastdateofapproval, modificationCount: datavalue?.diff, + notificationActive: hasMonitoring?hasMonitoring.monitoring:false, }; rows.push(row); } diff --git a/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts b/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts index 12e4f1dc..a47d185e 100644 --- a/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts +++ b/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts @@ -13,6 +13,7 @@ export interface MalDataApprovalItem { lastDateOfSubmission: string | undefined; lastDateOfApproval: string | undefined; modificationCount: string | undefined; + notificationActive: boolean; } export interface MalDataApprovalItemIdentifier { diff --git a/src/webapp/reports/mal-data-approval/DataApprovalViewModel.ts b/src/webapp/reports/mal-data-approval/DataApprovalViewModel.ts index 5ee48024..ed14d8f2 100644 --- a/src/webapp/reports/mal-data-approval/DataApprovalViewModel.ts +++ b/src/webapp/reports/mal-data-approval/DataApprovalViewModel.ts @@ -21,6 +21,7 @@ export interface DataApprovalViewModel { lastDateOfSubmission: Date | undefined; lastDateOfApproval: Date | undefined; modificationCount: string | undefined; + notificationActive: boolean; } export function getDataApprovalViews(_config: Config, items: MalDataApprovalItem[]): DataApprovalViewModel[] { @@ -45,6 +46,7 @@ export function getDataApprovalViews(_config: Config, items: MalDataApprovalItem ? toDate(item.lastDateOfApproval, { timeZone: "UTC" }) : undefined, modificationCount: item.modificationCount, + notificationActive: item.notificationActive }; }); } diff --git a/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx b/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx index c15586c3..37a9c7bd 100644 --- a/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx +++ b/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx @@ -255,7 +255,7 @@ export const DataApprovalList: React.FC = React.memo(() => { reload(); }, - isActive: rows => _.every(rows, row => row.lastUpdatedValue) && isMalAdmin, + isActive: rows => _.every(rows, row => row.lastUpdatedValue && !row.notificationActive) && isMalAdmin, }, { name: "deactivate", @@ -280,7 +280,7 @@ export const DataApprovalList: React.FC = React.memo(() => { reload(); }, - isActive: rows => _.every(rows, row => row.lastUpdatedValue) && isMalAdmin, + isActive: rows => _.every(rows, row => row.notificationActive) && isMalAdmin, }, { name: "getDiff", From 833ef1828d13dd2251d3e4386e778df6393bf156 Mon Sep 17 00:00:00 2001 From: inadcl Date: Wed, 23 Nov 2022 08:20:04 +0100 Subject: [PATCH 2/2] add undefined if workflowid is empty and fix notification button --- .../reports/mal-data-approval/entities/MalDataApprovalItem.ts | 4 ++-- .../mal-data-approval/data-approval-list/DataApprovalList.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts b/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts index a47d185e..685fe6c4 100644 --- a/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts +++ b/src/domain/reports/mal-data-approval/entities/MalDataApprovalItem.ts @@ -20,7 +20,7 @@ export interface MalDataApprovalItemIdentifier { dataSet: string; orgUnit: string; period: string; - workflow: string; + workflow: string | undefined; } export interface Monitoring { @@ -30,7 +30,7 @@ export interface Monitoring { } export function getDataDuplicationItemId(dataSet: MalDataApprovalItem): string { - return [dataSet.dataSetUid, dataSet.approvalWorkflowUid, dataSet.period, dataSet.orgUnitUid].join("-"); + return [dataSet.dataSetUid, dataSet.approvalWorkflowUid ?? "undefined", dataSet.period, dataSet.orgUnitUid].join("-"); } export function parseDataDuplicationItemId(string: string): MalDataApprovalItemIdentifier | undefined { diff --git a/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx b/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx index 37a9c7bd..ce2b7b58 100644 --- a/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx +++ b/src/webapp/reports/mal-data-approval/data-approval-list/DataApprovalList.tsx @@ -255,7 +255,7 @@ export const DataApprovalList: React.FC = React.memo(() => { reload(); }, - isActive: rows => _.every(rows, row => row.lastUpdatedValue && !row.notificationActive) && isMalAdmin, + isActive: rows => _.every(rows, row => !row.notificationActive) && isMalAdmin, }, { name: "deactivate",