@pega/dx-component-builder-sdk
Version:
Utility for building custom UI components
80 lines (67 loc) • 3.02 kB
text/typescript
function hasNotificationMessages(pConnect) {
return !!pConnect.getValue('caseMessages');
}
function isCaseWideLocalAction(pConnect) {
const { CASE_INFO } = PCore.getConstants();
const actionID = pConnect.getValue(CASE_INFO.ACTIVE_ACTION_ID);
const caseActions = pConnect.getValue(CASE_INFO.CASE_INFO_ACTIONS);
if (caseActions && actionID) {
const activeAction = caseActions.find(caseAction => caseAction.ID === actionID);
return activeAction?.type === 'Case';
}
return false;
}
function getChildCaseAssignments(pConnect) {
const childCases = pConnect.getValue(PCore.getConstants().CASE_INFO.CHILD_ASSIGNMENTS);
let allAssignments: any[] = [];
if (childCases && childCases.length > 0) {
childCases.forEach(({ assignments = [], Name }) => {
const childCaseAssignments = assignments.map((assignment: any) => ({
...assignment,
caseName: Name
}));
allAssignments = allAssignments.concat(childCaseAssignments);
});
}
return allAssignments;
}
export function hasAssignments(pConnect) {
const { CASE_INFO } = PCore.getConstants();
const assignments = pConnect.getValue(CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
const childCasesAssignments = getChildCaseAssignments(pConnect);
return assignments || childCasesAssignments?.length || isCaseWideLocalAction(pConnect);
}
export const showBanner = getPConnect => {
const pConnect = getPConnect;
return hasNotificationMessages(pConnect) || !hasAssignments(pConnect);
};
function getActiveCaseActionName(pConnect) {
const caseActions = pConnect.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ACTIONS);
const activeActionID = pConnect.getValue(PCore.getConstants().CASE_INFO.ACTIVE_ACTION_ID);
const activeAction = caseActions.find(action => action.ID === activeActionID);
return activeAction?.name || '';
}
function showTodo(pConnect) {
const caseViewMode = pConnect.getValue('context_data.caseViewMode');
return caseViewMode !== 'perform';
}
export function getToDoAssignments(pConnect) {
const caseActions = pConnect.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ACTIONS);
const assignmentLabel = pConnect.getValue(PCore.getConstants().CASE_INFO.ASSIGNMENT_LABEL);
const assignments = pConnect.getValue(PCore.getConstants().CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS) || [];
const childCasesAssignments = getChildCaseAssignments(pConnect) || [];
let childCasesAssignmentsCopy = JSON.parse(JSON.stringify(childCasesAssignments));
childCasesAssignmentsCopy = childCasesAssignmentsCopy.map(assignment => {
assignment.isChild = true;
return assignment;
});
const todoAssignments = [...assignments, ...childCasesAssignmentsCopy];
let todoAssignmentsCopy = JSON.parse(JSON.stringify(todoAssignments));
if (caseActions && !showTodo(pConnect)) {
todoAssignmentsCopy = todoAssignmentsCopy.map(assignment => {
assignment.name = getActiveCaseActionName(pConnect) || assignmentLabel;
return assignment;
});
}
return todoAssignmentsCopy;
}