vcomply-workflow-engine 7.4.4 → 7.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +185 -45
- package/esm2022/lib/constants/responsibility.mjs +3 -1
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -3
- package/fesm2022/vcomply-workflow-engine.mjs +188 -46
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +23 -1
- package/lib/constants/responsibility.d.ts +2 -0
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -47028,6 +47028,8 @@ const VALIDATION_MESSAGES = {
|
|
|
47028
47028
|
DUE_TIME: "This value does not match the VComply template's format. Use the correct value from the drop-downs in the template.",
|
|
47029
47029
|
ENDS_AFTER_OCCURRENCES_GREATER_THAN_ZERO: 'Must be greater than 0',
|
|
47030
47030
|
ENDS_AFTER_OCCURRENCES_NUMERIC: 'Must be numeric value',
|
|
47031
|
+
WHOLE_NUMBER_NON_NEGATIVE: 'Must be a whole number. Negative and decimal values are not allowed.',
|
|
47032
|
+
POSITIVE_NUMBER: 'Must be a positive number',
|
|
47031
47033
|
ENDS_BY_DATE_INVALID_VALUE: 'The data added in this field is not valid. Select from the dropdown provided in the template.',
|
|
47032
47034
|
ENDS_BY_DATE_INCOMPLETE: 'Ends By Date requires both a day and a month. Please complete both fields or clear both to leave the end date unset.',
|
|
47033
47035
|
ENDS_BY_DATE_PAST: 'The Ends By Date is in the past. This responsibility will be created with no future occurrences.',
|
|
@@ -47086,11 +47088,11 @@ class BulkResponsibilityViewComponent {
|
|
|
47086
47088
|
this.cancel.emit();
|
|
47087
47089
|
}
|
|
47088
47090
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BulkResponsibilityViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47089
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BulkResponsibilityViewComponent, selector: "app-bulk-responsibility-view", inputs: { responsibilityBulkUpload: "responsibilityBulkUpload", fileName: "fileName", defaultOwner: "defaultOwner", loader: "loader", tabType: "tabType", bulkUpload: "bulkUpload", responsibilityType: "responsibilityType" }, outputs: { submitResponsibilityBulkUpload: "submitResponsibilityBulkUpload", cancel: "cancel", selectedTab: "selectedTab" }, usesOnChanges: true, ngImport: i0, template: "<!-- --------------------------------------------------------------------upward is new one-------------------- -->\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- HTML for multiple tabs -->\r\n<ng-container *ngIf=\"responsibilityType === 'multiTab'\">\r\n <ng-template #dropdownErr let-invalid>\r\n <i *ngIf=\"invalid\" class=\"icons\" [appTooltip]=\"VALIDATION_MESSAGES.DROPDOWN\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </ng-template>\r\n <div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{fileName}}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body bulk\" [class.is-horizontally-scrolled]=\"isHorizontallyScrolled\"\r\n (scroll)=\"onGridScroll($event)\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\">#</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\">Responsibility Name <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Program</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\">Program Type</div>\r\n <div class=\"exel-view-column\">Program</div>\r\n <div class=\"exel-view-column\">Program Category</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Entrusted By</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Entrust To <span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Person or Group<span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">All or Any Persons</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Key Responsibility?</div>\r\n <div class=\"exel-view-column\" *ngIf=\"tabType === 'frequency'\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-row\">\r\n <!-- <div class=\"exel-view-column large\">Frequency of Occurrence and Completion Window <span class=\"required\">*</span></div> -->\r\n <div class=\"exel-view-column large\">{{responsibilityBulkUpload?.header.includes('Program') ?\r\n responsibilityBulkUpload?.header[8]?.slice(0, -1) :\r\n responsibilityBulkUpload?.header[5]?.slice(0, -1)}}<span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <ng-container *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-column\">Frequency <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Month)</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\">Due Time</div>\r\n <div class=\"exel-view-column\">Start <span class=\"info-text\">(No. of days before the due\r\n date)</span></div>\r\n <div class=\"exel-view-column\">Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be completed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of\r\n days after the due date. Select \"0\" if the responsibility must be completed on\r\n the due date)</span></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\">Responsibility Ends After Occurences <span\r\n class=\"info-text\">(Number of occurrences)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Month)</span></div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column two-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Responsibility Centre</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\">Responsibility Centre Name</div>\r\n <div class=\"exel-view-column\">Responsibility Centre Type</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Risk Class</div>\r\n <div class=\"exel-view-column\">Objective</div>\r\n <div class=\"exel-view-column\">Notes</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Format & Evidence</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\" [class.three-column]=\"false\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Format</div>\r\n <div class=\"exel-view-column\">Format For Responsibility (link)</div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Evidence</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Assessments or Checkpoints</div> -->\r\n <div class=\"exel-view-column four-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Review of Responsibility</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\">Reviewer</div>\r\n <div class=\"exel-view-column\">Reviewer Type\r\n <span class=\"info-text\">(Specify the type of reviewer flow)</span>\r\n\r\n </div>\r\n\r\n <div class=\"exel-view-column\">Review Start <span class=\"info-text\">(No. of days before the\r\n due date)</span></div>\r\n <div class=\"exel-view-column\">Review Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be reviewed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of days\r\n after the due date. Select \"0\" if the responsibility must be reviewed on the due\r\n date)</span></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Overseer</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Always Notify</div>\r\n <div class=\"exel-view-column\">Notify on Failure</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Overseer</div> -->\r\n\r\n <!-- Collaborator -->\r\n <div class=\"exel-view-column\">Collaborator</div>\r\n\r\n </div>\r\n <div class=\"exel-view-row\" *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\" [class.error]=\"!report?.isValid\">{{i+1}}</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\" [class.error]=\"!report.responsibilityName\">\r\n {{report?.responsibilityName}} <i *ngIf=\"!report.responsibilityName\" class=\"icons\"\r\n [appTooltip]=\"'Enter a name for this responsibility.'\" placement=\"bottom-right\" type=\"white\"\r\n delay=\"0\" [tooltipMandatory]=true></i></div>\r\n <div class=\"exel-view-column multi-column\"\r\n *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\" [class.error]=\"false\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programType === false\">\r\n {{report?.programType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.program === false\">\r\n {{report?.program}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.program === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programCategory === false\">\r\n {{report?.programCategory}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programCategory === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assignor === false\">{{report?.assignor}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assignor === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.assignee || !report?.userValidateWithProgram?.isValidAssignee || (!report?.isValidUser) || report?.dropdownValidation?.assignee === false\">\r\n {{report?.assignee}}\r\n <!-- || (!report?.isValidUser) -->\r\n <i *ngIf=\"!report?.assignee\" class=\"icons\"\r\n [appTooltip]=\"'Select the user responsible for completing this responsibility. '\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.assignee && report?.dropdownValidation?.assignee === false }\"></ng-container>\r\n <i *ngIf=\"(report?.assignee) && report?.dropdownValidation?.assignee !== false && !report?.userValidateWithProgram?.isValidAssignee\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assigneeType === false\">\r\n {{report?.assigneeType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assigneeType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.keyResponsibility === false\">\r\n {{report?.keyResponsibility}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.keyResponsibility === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\" [class.error]=\"!report?.frequency || report?.dropdownValidation?.frequency === false\">{{report?.frequency}}\r\n <i *ngIf=\"!report?.frequency\" class=\"icons\"\r\n [appTooltip]=\"'Select a frequency for this responsibility.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.frequency && report?.dropdownValidation?.frequency === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.day === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.day}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.day === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.month === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.month}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.month === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"\r\n [class.error]=\"!report?.isValidDueTime || report?.dropdownValidation?.dueTime === false\">{{report?.dueTime}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: !report?.isValidDueTime || report?.dropdownValidation?.dueTime === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityWindow}}</div>\r\n <div class=\"exel-view-column\">{{report?.failedAfter}}</div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsAfterOccurrences\">{{report?.endsAfterOccurrences}}\r\n <i *ngIf=\"!report?.isValidEndsAfterOccurrences\" class=\"icons\"\r\n [appTooltip]=\"report?.endsAfterOccurrencesError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateDay\">{{report?.endsByDateDay}}\r\n <i *ngIf=\"!report?.isValidEndsByDateDay\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateDayError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateMonth\">{{report?.endsByDateMonth}}\r\n <i *ngIf=\"!report?.isValidEndsByDateMonth\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateMonthError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenter === false\">\r\n {{report?.responsibilityCenter}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenter === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenterType === false\">\r\n {{report?.responsibilityCenterType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenterType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reportClass === false\">\r\n {{report?.reportClass}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reportClass === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.objective}}</div>\r\n <div class=\"exel-view-column\">{{report?.notes}}</div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.isFormat === false\">{{report?.isFormat}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.isFormat === false }\"></ng-container>\r\n </div>\r\n <a class=\"exel-view-column external-link\" [href]=\"report?.formatForResponsibility\"\r\n target=\"_blank\">{{report?.formatForResponsibility}}</a>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.documentEvidenceRequired === false\">\r\n {{report?.documentEvidenceRequired}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.documentEvidenceRequired === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{report?.assessments}}</div> -->\r\n <div class=\"exel-view-column multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.reviewer === false || (report?.reviewer && (\r\n !report?.userValidateWithProgram?.isValidReviewer ))\">{{report?.reviewer}}\r\n\r\n <!-- <i *ngIf=\"(report?.reviewer && report?.reviewer === report?.assignor)\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Reviewer of this responsibility.':'You cannot be a Reviewer of this responsibility since you are the assignor. ') +'Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewer === false }\"></ng-container>\r\n <i *ngIf=\"report?.reviewer && report?.dropdownValidation?.reviewer !== false && !report?.userValidateWithProgram?.isValidReviewer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reviewerType === false\">\r\n {{report?.reviewerType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewerType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.reviewToBeCompletedWithin}}</div>\r\n <div class=\"exel-view-column\">{{report?.reviewWillBeFailedAfter}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.overseer === false || (report?.overseer && (\r\n !report?.userValidateWithProgram?.isValidOverseer ))\">\r\n {{report?.overseer}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.overseer === false }\"></ng-container>\r\n <i *ngIf=\"(report?.overseer) && report?.dropdownValidation?.overseer !== false && !report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.notifyOnFailure === false || (report?.notifyOnFailure && (\r\n !report?.userValidateWithProgram?.isValidNotifyOnFailure ))\">\r\n {{report?.notifyOnFailure}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.notifyOnFailure === false }\"></ng-container>\r\n <i *ngIf=\"(report?.notifyOnFailure) && report?.dropdownValidation?.notifyOnFailure !== false && !report?.userValidateWithProgram?.isValidNotifyOnFailure\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.collaborator === false\">{{report?.collaborator}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.collaborator === false }\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"exel-view-column\" [class.error]=\"(report?.overseer) && ((report?.overseer === report?.assignee) ||(report?.reviewer === report?.overseer) || (report?.overseer == report?.assignor) || (!report?.userValidateWithProgram?.isValidOverseer))\">\r\n {{report?.overseer}}\r\n <i *ngIf=\"(report?.overseer) && ((report?.reviewer === report?.overseer))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.overseer && (report?.overseer === report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.overseer) && (report?.overseer == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"!report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Selected user is not a valid overseer for selected program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"exel-view-row empty-fill-row\" aria-hidden=\"true\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\"></div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\"></div>\r\n <div class=\"exel-view-column multi-column three-column\" *ngIf=\"hasProgramColumn\">\r\n <div class=\"exel-view-row multi-column three-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column small-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column small-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column four-column\">\r\n <div class=\"exel-view-row multi-column four-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <!-- ------------------------------------------------old code dynamic------------------------------------------------- -->\r\n\r\n <!-- *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\" -->\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-option\">\r\n <button *ngIf=\"bulkUpload?.frequency?.reports?.length\" [class.active]=\"tabType === 'frequency'\"\r\n (click)=\"selectedTab.emit('frequency')\">Frequency Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.ongoing?.reports?.length\" [class.active]=\"tabType === 'ongoing'\"\r\n (click)=\"selectedTab.emit('ongoing')\">Ongoing Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.onCompletion?.reports?.length\" [class.active]=\"tabType === 'onCompletion'\"\r\n (click)=\"selectedTab.emit('onCompletion')\">On Completion Responsibilities</button>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <!-- <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityBulkUpload?.reports?.length}} responsibilities will be\r\n uploaded.</p>\r\n </div> -->\r\n <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityMultiTabBulkUpload?.length}}\r\n {{responsibilityMultiTabBulkUpload?.length > 1 ? 'responsibilities' : 'responsibility'}} will be\r\n uploaded.</p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\" id=\"bulk-resp-cancel\">Cancel</button>\r\n <button (click)=\"submit()\" id=\"bulk-resp-confirm\" [disabled]=\"!isConfirmClickable\"\r\n class=\"blue\">Confirm</button>\r\n <!-- finalResponsibilities < 1 -->\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n</ng-container>\r\n\r\n<!-- --------------------------------------------------------------------upward is new one-------------------- -->", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0;word-break:unset}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-row.multi-column .external-link{color:#1e5dd3;text-decoration:none}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #EB2424!important;padding-right:24px}.bulk-view-body .exel-view-column.error+.error{border-left:none!important}.bulk-view-body .exel-view-column span.required{color:#eb2424;display:contents}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sticky-col{position:sticky;z-index:2;background:#fff}.bulk-view-body .exel-view-column.sticky-col-index{left:0;z-index:3;background:#f1f1f1}.bulk-view-body .exel-view-column.sticky-col-name{left:60px}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-body .exel-view-column.sl-no.error{background:#f5d6d7;border:none;padding-right:10px;border-bottom:1px solid #dcdcdc}.bulk-view-body .exel-view-column.multi-column{padding:0;border:none}.bulk-view-body .exel-view-column.multi-column .exel-view-row{height:100%}.bulk-view-body .exel-view-column.multi-column .exel-view-column{width:50%;min-width:50%}.bulk-view-body .exel-view-column.multi-column .exel-view-column+.exel-view-column{border-left:none}.bulk-view-body.bulk{height:calc(100vh - 142px)}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name{overflow:visible}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name:after{content:\"\";position:absolute;top:-1px;bottom:-1px;right:0;width:8px;pointer-events:none;box-shadow:4px 0 8px #1e5dd326}.bulk-view-body.bulk .exel-view{display:flex;flex-direction:column;width:max-content;min-width:100%;min-height:100%}.bulk-view-body.bulk .exel-view-row{width:max-content;min-width:100%}.bulk-view-body.bulk .exel-view-row.head{position:sticky;top:0;z-index:4}.bulk-view-body.bulk .exel-view-row.head .exel-view-column{min-height:34px}.bulk-view-body.bulk .exel-view-row.head .exel-view-column.sticky-col{background:#f1f1f1;z-index:5}.bulk-view-body.bulk .exel-view-row.head .exel-view-column .info-text{font-size:10px;display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 8px}.bulk-view-body.bulk .exel-view-row.two-column .exel-view-column{min-width:250px!important}.bulk-view-body.bulk .exel-view-row.three-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.four-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.five-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.nine-column .exel-view-column{width:200px;min-width:200px!important}.bulk-view-body.bulk .exel-view-column .exel-view-row .exel-view-column.small-column{width:120px;min-width:120px!important}.bulk-view-body.bulk .exel-view-column.multi-column .exel-view-column{min-width:unset}.bulk-view-body.bulk .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body.bulk .exel-view-column.three-column{width:600px;min-width:600px!important}.bulk-view-body.bulk .exel-view-column.four-column{width:800px;min-width:800px!important}.bulk-view-body.bulk .exel-view-column.five-column{width:1000px;min-width:1000px!important}.bulk-view-body.bulk .exel-view-column.nine-column{width:1800px;min-width:1800px!important}.bulk-view-body.bulk .exel-view .empty-fill-row{flex:1 1 auto;min-height:32px;align-items:stretch}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column{min-height:100%;background-color:#fff;background-image:repeating-linear-gradient(to bottom,#fff 0 31px,#dcdcdc 31px 32px);background-repeat:repeat-y;background-size:100% 32px}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.multi-column{background-image:none;background-color:transparent}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sticky-col-index,.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sl-no{background-color:#f1f1f1;background-image:repeating-linear-gradient(to bottom,#f1f1f1 0 31px,#dcdcdc 31px 32px)}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-row{height:100%;align-items:stretch}.bulk-view-option{background:#fff;border-top:1px solid #f1f1f1;padding:0 20px;position:fixed;width:100%;bottom:50px;display:flex;align-items:center}.bulk-view-option button{background:transparent;border-radius:0;border:none;border-left:1px solid #f1f1f1;color:#747576;font-size:11px;font-weight:500;padding:0 .5rem;margin:0;height:2rem;position:relative}.bulk-view-option button:last-of-type{border-right:1px solid #f1f1f1}.bulk-view-option button.active{color:#1e5dd3}.bulk-view-option button.active:before{background:#fff;content:\"\";position:absolute;top:-1px;left:0;height:1px;width:100%}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e03d259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: LoaderComponent$1, selector: "app-loader" }] }); }
|
|
47091
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BulkResponsibilityViewComponent, selector: "app-bulk-responsibility-view", inputs: { responsibilityBulkUpload: "responsibilityBulkUpload", fileName: "fileName", defaultOwner: "defaultOwner", loader: "loader", tabType: "tabType", bulkUpload: "bulkUpload", responsibilityType: "responsibilityType" }, outputs: { submitResponsibilityBulkUpload: "submitResponsibilityBulkUpload", cancel: "cancel", selectedTab: "selectedTab" }, usesOnChanges: true, ngImport: i0, template: "<!-- --------------------------------------------------------------------upward is new one-------------------- -->\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- HTML for multiple tabs -->\r\n<ng-container *ngIf=\"responsibilityType === 'multiTab'\">\r\n <ng-template #dropdownErr let-invalid>\r\n <i *ngIf=\"invalid\" class=\"icons\" [appTooltip]=\"VALIDATION_MESSAGES.DROPDOWN\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </ng-template>\r\n <div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{fileName}}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body bulk\" [class.is-horizontally-scrolled]=\"isHorizontallyScrolled\"\r\n (scroll)=\"onGridScroll($event)\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\">#</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\">Responsibility Name <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Program</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\">Program Type</div>\r\n <div class=\"exel-view-column\">Program</div>\r\n <div class=\"exel-view-column\">Program Category</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Entrusted By</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Entrust To <span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Person or Group<span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">All or Any Persons</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Key Responsibility?</div>\r\n <div class=\"exel-view-column\" *ngIf=\"tabType === 'frequency'\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-row\">\r\n <!-- <div class=\"exel-view-column large\">Frequency of Occurrence and Completion Window <span class=\"required\">*</span></div> -->\r\n <div class=\"exel-view-column large\">{{responsibilityBulkUpload?.header.includes('Program') ?\r\n responsibilityBulkUpload?.header[8]?.slice(0, -1) :\r\n responsibilityBulkUpload?.header[5]?.slice(0, -1)}}<span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <ng-container *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-column\">Frequency <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Month)</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\">Due Time</div>\r\n <div class=\"exel-view-column\">Start <span class=\"info-text\">(No. of days before the due\r\n date)</span></div>\r\n <div class=\"exel-view-column\">Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be completed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of\r\n days after the due date. Select \"0\" if the responsibility must be completed on\r\n the due date)</span></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\">Responsibility Ends After Occurences <span\r\n class=\"info-text\">(Number of occurrences)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Month)</span></div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column two-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Responsibility Centre</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\">Responsibility Centre Name</div>\r\n <div class=\"exel-view-column\">Responsibility Centre Type</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Risk Class</div>\r\n <div class=\"exel-view-column\">Objective</div>\r\n <div class=\"exel-view-column\">Notes</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Format & Evidence</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\" [class.three-column]=\"false\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Format</div>\r\n <div class=\"exel-view-column\">Format For Responsibility (link)</div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Evidence</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Assessments or Checkpoints</div> -->\r\n <div class=\"exel-view-column four-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Review of Responsibility</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\">Reviewer</div>\r\n <div class=\"exel-view-column\">Reviewer Type\r\n <span class=\"info-text\">(Specify the type of reviewer flow)</span>\r\n\r\n </div>\r\n\r\n <div class=\"exel-view-column\">Review Start <span class=\"info-text\">(No. of days before the\r\n due date)</span></div>\r\n <div class=\"exel-view-column\">Review Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be reviewed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of days\r\n after the due date. Select \"0\" if the responsibility must be reviewed on the due\r\n date)</span></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Overseer</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Always Notify</div>\r\n <div class=\"exel-view-column\">Notify on Failure</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Overseer</div> -->\r\n\r\n <!-- Collaborator -->\r\n <div class=\"exel-view-column\">Collaborator</div>\r\n\r\n </div>\r\n <div class=\"exel-view-row\" *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\" [class.error]=\"!report?.isValid\">{{i+1}}</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\" [class.error]=\"!report.responsibilityName\">\r\n {{report?.responsibilityName}} <i *ngIf=\"!report.responsibilityName\" class=\"icons\"\r\n [appTooltip]=\"'Enter a name for this responsibility.'\" placement=\"bottom-right\" type=\"white\"\r\n delay=\"0\" [tooltipMandatory]=true></i></div>\r\n <div class=\"exel-view-column multi-column\"\r\n *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\" [class.error]=\"false\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programType === false\">\r\n {{report?.programType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.program === false\">\r\n {{report?.program}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.program === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programCategory === false\">\r\n {{report?.programCategory}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programCategory === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assignor === false\">{{report?.assignor}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assignor === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.assignee || !report?.userValidateWithProgram?.isValidAssignee || (!report?.isValidUser) || report?.dropdownValidation?.assignee === false\">\r\n {{report?.assignee}}\r\n <!-- || (!report?.isValidUser) -->\r\n <i *ngIf=\"!report?.assignee\" class=\"icons\"\r\n [appTooltip]=\"'Select the user responsible for completing this responsibility. '\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.assignee && report?.dropdownValidation?.assignee === false }\"></ng-container>\r\n <i *ngIf=\"(report?.assignee) && report?.dropdownValidation?.assignee !== false && !report?.userValidateWithProgram?.isValidAssignee\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assigneeType === false\">\r\n {{report?.assigneeType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assigneeType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.keyResponsibility === false\">\r\n {{report?.keyResponsibility}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.keyResponsibility === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\" [class.error]=\"!report?.frequency || report?.dropdownValidation?.frequency === false\">{{report?.frequency}}\r\n <i *ngIf=\"!report?.frequency\" class=\"icons\"\r\n [appTooltip]=\"'Select a frequency for this responsibility.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.frequency && report?.dropdownValidation?.frequency === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.day === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.day}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.day === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.month === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.month}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.month === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"\r\n [class.error]=\"!report?.isValidDueTime || report?.dropdownValidation?.dueTime === false\">{{report?.dueTime}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: !report?.isValidDueTime || report?.dropdownValidation?.dueTime === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.responsibilityWindowError\">{{report?.responsibilityWindow}}\r\n <i *ngIf=\"report?.responsibilityWindowError\" class=\"icons\"\r\n [appTooltip]=\"report?.responsibilityWindowError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.failedAfterError\">{{report?.failedAfter}}\r\n <i *ngIf=\"report?.failedAfterError\" class=\"icons\"\r\n [appTooltip]=\"report?.failedAfterError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsAfterOccurrences\">{{report?.endsAfterOccurrences}}\r\n <i *ngIf=\"!report?.isValidEndsAfterOccurrences\" class=\"icons\"\r\n [appTooltip]=\"report?.endsAfterOccurrencesError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateDay\">{{report?.endsByDateDay}}\r\n <i *ngIf=\"!report?.isValidEndsByDateDay\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateDayError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateMonth\">{{report?.endsByDateMonth}}\r\n <i *ngIf=\"!report?.isValidEndsByDateMonth\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateMonthError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenter === false\">\r\n {{report?.responsibilityCenter}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenter === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenterType === false\">\r\n {{report?.responsibilityCenterType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenterType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reportClass === false\">\r\n {{report?.reportClass}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reportClass === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.objective}}</div>\r\n <div class=\"exel-view-column\">{{report?.notes}}</div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.isFormat === false\">{{report?.isFormat}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.isFormat === false }\"></ng-container>\r\n </div>\r\n <a class=\"exel-view-column external-link\" [href]=\"report?.formatForResponsibility\"\r\n target=\"_blank\">{{report?.formatForResponsibility}}</a>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.documentEvidenceRequired === false\">\r\n {{report?.documentEvidenceRequired}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.documentEvidenceRequired === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{report?.assessments}}</div> -->\r\n <div class=\"exel-view-column multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.reviewer === false || (report?.reviewer && (\r\n !report?.userValidateWithProgram?.isValidReviewer ))\">{{report?.reviewer}}\r\n\r\n <!-- <i *ngIf=\"(report?.reviewer && report?.reviewer === report?.assignor)\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Reviewer of this responsibility.':'You cannot be a Reviewer of this responsibility since you are the assignor. ') +'Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewer === false }\"></ng-container>\r\n <i *ngIf=\"report?.reviewer && report?.dropdownValidation?.reviewer !== false && !report?.userValidateWithProgram?.isValidReviewer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reviewerType === false\">\r\n {{report?.reviewerType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewerType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.reviewToBeCompletedWithinError\">{{report?.reviewToBeCompletedWithin}}\r\n <i *ngIf=\"report?.reviewToBeCompletedWithinError\" class=\"icons\"\r\n [appTooltip]=\"report?.reviewToBeCompletedWithinError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.reviewWillBeFailedAfterError\">{{report?.reviewWillBeFailedAfter}}\r\n <i *ngIf=\"report?.reviewWillBeFailedAfterError\" class=\"icons\"\r\n [appTooltip]=\"report?.reviewWillBeFailedAfterError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.overseer === false || (report?.overseer && (\r\n !report?.userValidateWithProgram?.isValidOverseer ))\">\r\n {{report?.overseer}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.overseer === false }\"></ng-container>\r\n <i *ngIf=\"(report?.overseer) && report?.dropdownValidation?.overseer !== false && !report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.notifyOnFailure === false || (report?.notifyOnFailure && (\r\n !report?.userValidateWithProgram?.isValidNotifyOnFailure ))\">\r\n {{report?.notifyOnFailure}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.notifyOnFailure === false }\"></ng-container>\r\n <i *ngIf=\"(report?.notifyOnFailure) && report?.dropdownValidation?.notifyOnFailure !== false && !report?.userValidateWithProgram?.isValidNotifyOnFailure\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.collaborator === false\">{{report?.collaborator}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.collaborator === false }\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"exel-view-column\" [class.error]=\"(report?.overseer) && ((report?.overseer === report?.assignee) ||(report?.reviewer === report?.overseer) || (report?.overseer == report?.assignor) || (!report?.userValidateWithProgram?.isValidOverseer))\">\r\n {{report?.overseer}}\r\n <i *ngIf=\"(report?.overseer) && ((report?.reviewer === report?.overseer))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.overseer && (report?.overseer === report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.overseer) && (report?.overseer == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"!report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Selected user is not a valid overseer for selected program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"exel-view-row empty-fill-row\" aria-hidden=\"true\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\"></div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\"></div>\r\n <div class=\"exel-view-column multi-column three-column\" *ngIf=\"hasProgramColumn\">\r\n <div class=\"exel-view-row multi-column three-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column small-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column small-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column four-column\">\r\n <div class=\"exel-view-row multi-column four-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <!-- ------------------------------------------------old code dynamic------------------------------------------------- -->\r\n\r\n <!-- *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\" -->\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-option\">\r\n <button *ngIf=\"bulkUpload?.frequency?.reports?.length\" [class.active]=\"tabType === 'frequency'\"\r\n (click)=\"selectedTab.emit('frequency')\">Frequency Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.ongoing?.reports?.length\" [class.active]=\"tabType === 'ongoing'\"\r\n (click)=\"selectedTab.emit('ongoing')\">Ongoing Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.onCompletion?.reports?.length\" [class.active]=\"tabType === 'onCompletion'\"\r\n (click)=\"selectedTab.emit('onCompletion')\">On Completion Responsibilities</button>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <!-- <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityBulkUpload?.reports?.length}} responsibilities will be\r\n uploaded.</p>\r\n </div> -->\r\n <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityMultiTabBulkUpload?.length}}\r\n {{responsibilityMultiTabBulkUpload?.length > 1 ? 'responsibilities' : 'responsibility'}} will be\r\n uploaded.</p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\" id=\"bulk-resp-cancel\">Cancel</button>\r\n <button (click)=\"submit()\" id=\"bulk-resp-confirm\" [disabled]=\"!isConfirmClickable\"\r\n class=\"blue\">Confirm</button>\r\n <!-- finalResponsibilities < 1 -->\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n</ng-container>\r\n\r\n<!-- --------------------------------------------------------------------upward is new one-------------------- -->", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0;word-break:unset}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-row.multi-column .external-link{color:#1e5dd3;text-decoration:none}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #EB2424!important;padding-right:24px}.bulk-view-body .exel-view-column.error+.error{border-left:none!important}.bulk-view-body .exel-view-column span.required{color:#eb2424;display:contents}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sticky-col{position:sticky;z-index:2;background:#fff}.bulk-view-body .exel-view-column.sticky-col-index{left:0;z-index:3;background:#f1f1f1}.bulk-view-body .exel-view-column.sticky-col-name{left:60px}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-body .exel-view-column.sl-no.error{background:#f5d6d7;border:none;padding-right:10px;border-bottom:1px solid #dcdcdc}.bulk-view-body .exel-view-column.multi-column{padding:0;border:none}.bulk-view-body .exel-view-column.multi-column .exel-view-row{height:100%}.bulk-view-body .exel-view-column.multi-column .exel-view-column{width:50%;min-width:50%}.bulk-view-body .exel-view-column.multi-column .exel-view-column+.exel-view-column{border-left:none}.bulk-view-body.bulk{height:calc(100vh - 142px)}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name{overflow:visible}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name:after{content:\"\";position:absolute;top:-1px;bottom:-1px;right:0;width:8px;pointer-events:none;box-shadow:4px 0 8px #1e5dd326}.bulk-view-body.bulk .exel-view{display:flex;flex-direction:column;width:max-content;min-width:100%;min-height:100%}.bulk-view-body.bulk .exel-view-row{width:max-content;min-width:100%}.bulk-view-body.bulk .exel-view-row.head{position:sticky;top:0;z-index:4}.bulk-view-body.bulk .exel-view-row.head .exel-view-column{min-height:34px}.bulk-view-body.bulk .exel-view-row.head .exel-view-column.sticky-col{background:#f1f1f1;z-index:5}.bulk-view-body.bulk .exel-view-row.head .exel-view-column .info-text{font-size:10px;display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 8px}.bulk-view-body.bulk .exel-view-row.two-column .exel-view-column{min-width:250px!important}.bulk-view-body.bulk .exel-view-row.three-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.four-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.five-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.nine-column .exel-view-column{width:200px;min-width:200px!important}.bulk-view-body.bulk .exel-view-column .exel-view-row .exel-view-column.small-column{width:120px;min-width:120px!important}.bulk-view-body.bulk .exel-view-column.multi-column .exel-view-column{min-width:unset}.bulk-view-body.bulk .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body.bulk .exel-view-column.three-column{width:600px;min-width:600px!important}.bulk-view-body.bulk .exel-view-column.four-column{width:800px;min-width:800px!important}.bulk-view-body.bulk .exel-view-column.five-column{width:1000px;min-width:1000px!important}.bulk-view-body.bulk .exel-view-column.nine-column{width:1800px;min-width:1800px!important}.bulk-view-body.bulk .exel-view .empty-fill-row{flex:1 1 auto;min-height:32px;align-items:stretch}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column{min-height:100%;background-color:#fff;background-image:repeating-linear-gradient(to bottom,#fff 0 31px,#dcdcdc 31px 32px);background-repeat:repeat-y;background-size:100% 32px}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.multi-column{background-image:none;background-color:transparent}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sticky-col-index,.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sl-no{background-color:#f1f1f1;background-image:repeating-linear-gradient(to bottom,#f1f1f1 0 31px,#dcdcdc 31px 32px)}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-row{height:100%;align-items:stretch}.bulk-view-option{background:#fff;border-top:1px solid #f1f1f1;padding:0 20px;position:fixed;width:100%;bottom:50px;display:flex;align-items:center}.bulk-view-option button{background:transparent;border-radius:0;border:none;border-left:1px solid #f1f1f1;color:#747576;font-size:11px;font-weight:500;padding:0 .5rem;margin:0;height:2rem;position:relative}.bulk-view-option button:last-of-type{border-right:1px solid #f1f1f1}.bulk-view-option button.active{color:#1e5dd3}.bulk-view-option button.active:before{background:#fff;content:\"\";position:absolute;top:-1px;left:0;height:1px;width:100%}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e03d259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: LoaderComponent$1, selector: "app-loader" }] }); }
|
|
47090
47092
|
}
|
|
47091
47093
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BulkResponsibilityViewComponent, decorators: [{
|
|
47092
47094
|
type: Component,
|
|
47093
|
-
args: [{ selector: 'app-bulk-responsibility-view', template: "<!-- --------------------------------------------------------------------upward is new one-------------------- -->\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- HTML for multiple tabs -->\r\n<ng-container *ngIf=\"responsibilityType === 'multiTab'\">\r\n <ng-template #dropdownErr let-invalid>\r\n <i *ngIf=\"invalid\" class=\"icons\" [appTooltip]=\"VALIDATION_MESSAGES.DROPDOWN\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </ng-template>\r\n <div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{fileName}}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body bulk\" [class.is-horizontally-scrolled]=\"isHorizontallyScrolled\"\r\n (scroll)=\"onGridScroll($event)\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\">#</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\">Responsibility Name <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Program</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\">Program Type</div>\r\n <div class=\"exel-view-column\">Program</div>\r\n <div class=\"exel-view-column\">Program Category</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Entrusted By</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Entrust To <span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Person or Group<span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">All or Any Persons</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Key Responsibility?</div>\r\n <div class=\"exel-view-column\" *ngIf=\"tabType === 'frequency'\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-row\">\r\n <!-- <div class=\"exel-view-column large\">Frequency of Occurrence and Completion Window <span class=\"required\">*</span></div> -->\r\n <div class=\"exel-view-column large\">{{responsibilityBulkUpload?.header.includes('Program') ?\r\n responsibilityBulkUpload?.header[8]?.slice(0, -1) :\r\n responsibilityBulkUpload?.header[5]?.slice(0, -1)}}<span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <ng-container *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-column\">Frequency <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Month)</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\">Due Time</div>\r\n <div class=\"exel-view-column\">Start <span class=\"info-text\">(No. of days before the due\r\n date)</span></div>\r\n <div class=\"exel-view-column\">Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be completed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of\r\n days after the due date. Select \"0\" if the responsibility must be completed on\r\n the due date)</span></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\">Responsibility Ends After Occurences <span\r\n class=\"info-text\">(Number of occurrences)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Month)</span></div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column two-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Responsibility Centre</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\">Responsibility Centre Name</div>\r\n <div class=\"exel-view-column\">Responsibility Centre Type</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Risk Class</div>\r\n <div class=\"exel-view-column\">Objective</div>\r\n <div class=\"exel-view-column\">Notes</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Format & Evidence</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\" [class.three-column]=\"false\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Format</div>\r\n <div class=\"exel-view-column\">Format For Responsibility (link)</div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Evidence</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Assessments or Checkpoints</div> -->\r\n <div class=\"exel-view-column four-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Review of Responsibility</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\">Reviewer</div>\r\n <div class=\"exel-view-column\">Reviewer Type\r\n <span class=\"info-text\">(Specify the type of reviewer flow)</span>\r\n\r\n </div>\r\n\r\n <div class=\"exel-view-column\">Review Start <span class=\"info-text\">(No. of days before the\r\n due date)</span></div>\r\n <div class=\"exel-view-column\">Review Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be reviewed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of days\r\n after the due date. Select \"0\" if the responsibility must be reviewed on the due\r\n date)</span></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Overseer</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Always Notify</div>\r\n <div class=\"exel-view-column\">Notify on Failure</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Overseer</div> -->\r\n\r\n <!-- Collaborator -->\r\n <div class=\"exel-view-column\">Collaborator</div>\r\n\r\n </div>\r\n <div class=\"exel-view-row\" *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\" [class.error]=\"!report?.isValid\">{{i+1}}</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\" [class.error]=\"!report.responsibilityName\">\r\n {{report?.responsibilityName}} <i *ngIf=\"!report.responsibilityName\" class=\"icons\"\r\n [appTooltip]=\"'Enter a name for this responsibility.'\" placement=\"bottom-right\" type=\"white\"\r\n delay=\"0\" [tooltipMandatory]=true></i></div>\r\n <div class=\"exel-view-column multi-column\"\r\n *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\" [class.error]=\"false\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programType === false\">\r\n {{report?.programType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.program === false\">\r\n {{report?.program}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.program === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programCategory === false\">\r\n {{report?.programCategory}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programCategory === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assignor === false\">{{report?.assignor}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assignor === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.assignee || !report?.userValidateWithProgram?.isValidAssignee || (!report?.isValidUser) || report?.dropdownValidation?.assignee === false\">\r\n {{report?.assignee}}\r\n <!-- || (!report?.isValidUser) -->\r\n <i *ngIf=\"!report?.assignee\" class=\"icons\"\r\n [appTooltip]=\"'Select the user responsible for completing this responsibility. '\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.assignee && report?.dropdownValidation?.assignee === false }\"></ng-container>\r\n <i *ngIf=\"(report?.assignee) && report?.dropdownValidation?.assignee !== false && !report?.userValidateWithProgram?.isValidAssignee\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assigneeType === false\">\r\n {{report?.assigneeType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assigneeType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.keyResponsibility === false\">\r\n {{report?.keyResponsibility}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.keyResponsibility === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\" [class.error]=\"!report?.frequency || report?.dropdownValidation?.frequency === false\">{{report?.frequency}}\r\n <i *ngIf=\"!report?.frequency\" class=\"icons\"\r\n [appTooltip]=\"'Select a frequency for this responsibility.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.frequency && report?.dropdownValidation?.frequency === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.day === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.day}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.day === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.month === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.month}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.month === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"\r\n [class.error]=\"!report?.isValidDueTime || report?.dropdownValidation?.dueTime === false\">{{report?.dueTime}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: !report?.isValidDueTime || report?.dropdownValidation?.dueTime === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityWindow}}</div>\r\n <div class=\"exel-view-column\">{{report?.failedAfter}}</div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsAfterOccurrences\">{{report?.endsAfterOccurrences}}\r\n <i *ngIf=\"!report?.isValidEndsAfterOccurrences\" class=\"icons\"\r\n [appTooltip]=\"report?.endsAfterOccurrencesError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateDay\">{{report?.endsByDateDay}}\r\n <i *ngIf=\"!report?.isValidEndsByDateDay\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateDayError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateMonth\">{{report?.endsByDateMonth}}\r\n <i *ngIf=\"!report?.isValidEndsByDateMonth\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateMonthError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenter === false\">\r\n {{report?.responsibilityCenter}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenter === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenterType === false\">\r\n {{report?.responsibilityCenterType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenterType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reportClass === false\">\r\n {{report?.reportClass}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reportClass === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.objective}}</div>\r\n <div class=\"exel-view-column\">{{report?.notes}}</div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.isFormat === false\">{{report?.isFormat}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.isFormat === false }\"></ng-container>\r\n </div>\r\n <a class=\"exel-view-column external-link\" [href]=\"report?.formatForResponsibility\"\r\n target=\"_blank\">{{report?.formatForResponsibility}}</a>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.documentEvidenceRequired === false\">\r\n {{report?.documentEvidenceRequired}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.documentEvidenceRequired === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{report?.assessments}}</div> -->\r\n <div class=\"exel-view-column multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.reviewer === false || (report?.reviewer && (\r\n !report?.userValidateWithProgram?.isValidReviewer ))\">{{report?.reviewer}}\r\n\r\n <!-- <i *ngIf=\"(report?.reviewer && report?.reviewer === report?.assignor)\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Reviewer of this responsibility.':'You cannot be a Reviewer of this responsibility since you are the assignor. ') +'Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewer === false }\"></ng-container>\r\n <i *ngIf=\"report?.reviewer && report?.dropdownValidation?.reviewer !== false && !report?.userValidateWithProgram?.isValidReviewer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reviewerType === false\">\r\n {{report?.reviewerType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewerType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.reviewToBeCompletedWithin}}</div>\r\n <div class=\"exel-view-column\">{{report?.reviewWillBeFailedAfter}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.overseer === false || (report?.overseer && (\r\n !report?.userValidateWithProgram?.isValidOverseer ))\">\r\n {{report?.overseer}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.overseer === false }\"></ng-container>\r\n <i *ngIf=\"(report?.overseer) && report?.dropdownValidation?.overseer !== false && !report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.notifyOnFailure === false || (report?.notifyOnFailure && (\r\n !report?.userValidateWithProgram?.isValidNotifyOnFailure ))\">\r\n {{report?.notifyOnFailure}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.notifyOnFailure === false }\"></ng-container>\r\n <i *ngIf=\"(report?.notifyOnFailure) && report?.dropdownValidation?.notifyOnFailure !== false && !report?.userValidateWithProgram?.isValidNotifyOnFailure\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.collaborator === false\">{{report?.collaborator}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.collaborator === false }\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"exel-view-column\" [class.error]=\"(report?.overseer) && ((report?.overseer === report?.assignee) ||(report?.reviewer === report?.overseer) || (report?.overseer == report?.assignor) || (!report?.userValidateWithProgram?.isValidOverseer))\">\r\n {{report?.overseer}}\r\n <i *ngIf=\"(report?.overseer) && ((report?.reviewer === report?.overseer))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.overseer && (report?.overseer === report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.overseer) && (report?.overseer == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"!report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Selected user is not a valid overseer for selected program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"exel-view-row empty-fill-row\" aria-hidden=\"true\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\"></div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\"></div>\r\n <div class=\"exel-view-column multi-column three-column\" *ngIf=\"hasProgramColumn\">\r\n <div class=\"exel-view-row multi-column three-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column small-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column small-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column four-column\">\r\n <div class=\"exel-view-row multi-column four-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <!-- ------------------------------------------------old code dynamic------------------------------------------------- -->\r\n\r\n <!-- *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\" -->\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-option\">\r\n <button *ngIf=\"bulkUpload?.frequency?.reports?.length\" [class.active]=\"tabType === 'frequency'\"\r\n (click)=\"selectedTab.emit('frequency')\">Frequency Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.ongoing?.reports?.length\" [class.active]=\"tabType === 'ongoing'\"\r\n (click)=\"selectedTab.emit('ongoing')\">Ongoing Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.onCompletion?.reports?.length\" [class.active]=\"tabType === 'onCompletion'\"\r\n (click)=\"selectedTab.emit('onCompletion')\">On Completion Responsibilities</button>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <!-- <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityBulkUpload?.reports?.length}} responsibilities will be\r\n uploaded.</p>\r\n </div> -->\r\n <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityMultiTabBulkUpload?.length}}\r\n {{responsibilityMultiTabBulkUpload?.length > 1 ? 'responsibilities' : 'responsibility'}} will be\r\n uploaded.</p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\" id=\"bulk-resp-cancel\">Cancel</button>\r\n <button (click)=\"submit()\" id=\"bulk-resp-confirm\" [disabled]=\"!isConfirmClickable\"\r\n class=\"blue\">Confirm</button>\r\n <!-- finalResponsibilities < 1 -->\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n</ng-container>\r\n\r\n<!-- --------------------------------------------------------------------upward is new one-------------------- -->", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0;word-break:unset}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-row.multi-column .external-link{color:#1e5dd3;text-decoration:none}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #EB2424!important;padding-right:24px}.bulk-view-body .exel-view-column.error+.error{border-left:none!important}.bulk-view-body .exel-view-column span.required{color:#eb2424;display:contents}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sticky-col{position:sticky;z-index:2;background:#fff}.bulk-view-body .exel-view-column.sticky-col-index{left:0;z-index:3;background:#f1f1f1}.bulk-view-body .exel-view-column.sticky-col-name{left:60px}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-body .exel-view-column.sl-no.error{background:#f5d6d7;border:none;padding-right:10px;border-bottom:1px solid #dcdcdc}.bulk-view-body .exel-view-column.multi-column{padding:0;border:none}.bulk-view-body .exel-view-column.multi-column .exel-view-row{height:100%}.bulk-view-body .exel-view-column.multi-column .exel-view-column{width:50%;min-width:50%}.bulk-view-body .exel-view-column.multi-column .exel-view-column+.exel-view-column{border-left:none}.bulk-view-body.bulk{height:calc(100vh - 142px)}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name{overflow:visible}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name:after{content:\"\";position:absolute;top:-1px;bottom:-1px;right:0;width:8px;pointer-events:none;box-shadow:4px 0 8px #1e5dd326}.bulk-view-body.bulk .exel-view{display:flex;flex-direction:column;width:max-content;min-width:100%;min-height:100%}.bulk-view-body.bulk .exel-view-row{width:max-content;min-width:100%}.bulk-view-body.bulk .exel-view-row.head{position:sticky;top:0;z-index:4}.bulk-view-body.bulk .exel-view-row.head .exel-view-column{min-height:34px}.bulk-view-body.bulk .exel-view-row.head .exel-view-column.sticky-col{background:#f1f1f1;z-index:5}.bulk-view-body.bulk .exel-view-row.head .exel-view-column .info-text{font-size:10px;display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 8px}.bulk-view-body.bulk .exel-view-row.two-column .exel-view-column{min-width:250px!important}.bulk-view-body.bulk .exel-view-row.three-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.four-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.five-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.nine-column .exel-view-column{width:200px;min-width:200px!important}.bulk-view-body.bulk .exel-view-column .exel-view-row .exel-view-column.small-column{width:120px;min-width:120px!important}.bulk-view-body.bulk .exel-view-column.multi-column .exel-view-column{min-width:unset}.bulk-view-body.bulk .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body.bulk .exel-view-column.three-column{width:600px;min-width:600px!important}.bulk-view-body.bulk .exel-view-column.four-column{width:800px;min-width:800px!important}.bulk-view-body.bulk .exel-view-column.five-column{width:1000px;min-width:1000px!important}.bulk-view-body.bulk .exel-view-column.nine-column{width:1800px;min-width:1800px!important}.bulk-view-body.bulk .exel-view .empty-fill-row{flex:1 1 auto;min-height:32px;align-items:stretch}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column{min-height:100%;background-color:#fff;background-image:repeating-linear-gradient(to bottom,#fff 0 31px,#dcdcdc 31px 32px);background-repeat:repeat-y;background-size:100% 32px}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.multi-column{background-image:none;background-color:transparent}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sticky-col-index,.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sl-no{background-color:#f1f1f1;background-image:repeating-linear-gradient(to bottom,#f1f1f1 0 31px,#dcdcdc 31px 32px)}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-row{height:100%;align-items:stretch}.bulk-view-option{background:#fff;border-top:1px solid #f1f1f1;padding:0 20px;position:fixed;width:100%;bottom:50px;display:flex;align-items:center}.bulk-view-option button{background:transparent;border-radius:0;border:none;border-left:1px solid #f1f1f1;color:#747576;font-size:11px;font-weight:500;padding:0 .5rem;margin:0;height:2rem;position:relative}.bulk-view-option button:last-of-type{border-right:1px solid #f1f1f1}.bulk-view-option button.active{color:#1e5dd3}.bulk-view-option button.active:before{background:#fff;content:\"\";position:absolute;top:-1px;left:0;height:1px;width:100%}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e03d259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"] }]
|
|
47095
|
+
args: [{ selector: 'app-bulk-responsibility-view', template: "<!-- --------------------------------------------------------------------upward is new one-------------------- -->\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- HTML for multiple tabs -->\r\n<ng-container *ngIf=\"responsibilityType === 'multiTab'\">\r\n <ng-template #dropdownErr let-invalid>\r\n <i *ngIf=\"invalid\" class=\"icons\" [appTooltip]=\"VALIDATION_MESSAGES.DROPDOWN\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </ng-template>\r\n <div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{fileName}}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body bulk\" [class.is-horizontally-scrolled]=\"isHorizontallyScrolled\"\r\n (scroll)=\"onGridScroll($event)\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\">#</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\">Responsibility Name <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Program</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\">Program Type</div>\r\n <div class=\"exel-view-column\">Program</div>\r\n <div class=\"exel-view-column\">Program Category</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Entrusted By</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Entrust To <span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Person or Group<span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">All or Any Persons</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Key Responsibility?</div>\r\n <div class=\"exel-view-column\" *ngIf=\"tabType === 'frequency'\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-row\">\r\n <!-- <div class=\"exel-view-column large\">Frequency of Occurrence and Completion Window <span class=\"required\">*</span></div> -->\r\n <div class=\"exel-view-column large\">{{responsibilityBulkUpload?.header.includes('Program') ?\r\n responsibilityBulkUpload?.header[8]?.slice(0, -1) :\r\n responsibilityBulkUpload?.header[5]?.slice(0, -1)}}<span class=\"required\">*</span></div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <ng-container *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-column\">Frequency <span class=\"required\">*</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Due Date <span class=\"info-text\">(Month)</span></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\">Due Time</div>\r\n <div class=\"exel-view-column\">Start <span class=\"info-text\">(No. of days before the due\r\n date)</span></div>\r\n <div class=\"exel-view-column\">Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be completed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of\r\n days after the due date. Select \"0\" if the responsibility must be completed on\r\n the due date)</span></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\">Responsibility Ends After Occurences <span\r\n class=\"info-text\">(Number of occurrences)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Day)</span></div>\r\n <div class=\"exel-view-column\">Responsibility Ends By Date <span\r\n class=\"info-text\">(Month)</span></div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column two-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Responsibility Centre</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\">Responsibility Centre Name</div>\r\n <div class=\"exel-view-column\">Responsibility Centre Type</div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">Risk Class</div>\r\n <div class=\"exel-view-column\">Objective</div>\r\n <div class=\"exel-view-column\">Notes</div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Format & Evidence</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\" [class.three-column]=\"false\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Format</div>\r\n <div class=\"exel-view-column\">Format For Responsibility (link)</div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\">Evidence</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Assessments or Checkpoints</div> -->\r\n <div class=\"exel-view-column four-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Review of Responsibility</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\">Reviewer</div>\r\n <div class=\"exel-view-column\">Reviewer Type\r\n <span class=\"info-text\">(Specify the type of reviewer flow)</span>\r\n\r\n </div>\r\n\r\n <div class=\"exel-view-column\">Review Start <span class=\"info-text\">(No. of days before the\r\n due date)</span></div>\r\n <div class=\"exel-view-column\">Review Fail <span class=\"info-text\"\r\n appTooltip=\"(No. of days after the due date. Select '0' if the responsibility must be reviewed on the due date)\"\r\n placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">(No. of days\r\n after the due date. Select \"0\" if the responsibility must be reviewed on the due\r\n date)</span></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Overseer</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\">Always Notify</div>\r\n <div class=\"exel-view-column\">Notify on Failure</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">Overseer</div> -->\r\n\r\n <!-- Collaborator -->\r\n <div class=\"exel-view-column\">Collaborator</div>\r\n\r\n </div>\r\n <div class=\"exel-view-row\" *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\" [class.error]=\"!report?.isValid\">{{i+1}}</div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\" [class.error]=\"!report.responsibilityName\">\r\n {{report?.responsibilityName}} <i *ngIf=\"!report.responsibilityName\" class=\"icons\"\r\n [appTooltip]=\"'Enter a name for this responsibility.'\" placement=\"bottom-right\" type=\"white\"\r\n delay=\"0\" [tooltipMandatory]=true></i></div>\r\n <div class=\"exel-view-column multi-column\"\r\n *ngIf=\"responsibilityBulkUpload?.header.includes('Program')\" [class.error]=\"false\"\r\n [class.three-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.three-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programType === false\">\r\n {{report?.programType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.program === false\">\r\n {{report?.program}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.program === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.programCategory === false\">\r\n {{report?.programCategory}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.programCategory === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assignor === false\">{{report?.assignor}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assignor === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.assignee || !report?.userValidateWithProgram?.isValidAssignee || (!report?.isValidUser) || report?.dropdownValidation?.assignee === false\">\r\n {{report?.assignee}}\r\n <!-- || (!report?.isValidUser) -->\r\n <i *ngIf=\"!report?.assignee\" class=\"icons\"\r\n [appTooltip]=\"'Select the user responsible for completing this responsibility. '\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.assignee && report?.dropdownValidation?.assignee === false }\"></ng-container>\r\n <i *ngIf=\"(report?.assignee) && report?.dropdownValidation?.assignee !== false && !report?.userValidateWithProgram?.isValidAssignee\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.assigneeType === false\">\r\n {{report?.assigneeType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.assigneeType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.keyResponsibility === false\">\r\n {{report?.keyResponsibility}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.keyResponsibility === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\" [class.error]=\"!report?.frequency || report?.dropdownValidation?.frequency === false\">{{report?.frequency}}\r\n <i *ngIf=\"!report?.frequency\" class=\"icons\"\r\n [appTooltip]=\"'Select a frequency for this responsibility.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.frequency && report?.dropdownValidation?.frequency === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.day === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.day}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.day === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.day !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.month === false || !report?.validDate || report?.isPastDate\">\r\n {{report?.month}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.month === false }\"></ng-container>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && !report?.validDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.dropdownValidation?.month !== false && report?.isPastDate\" class=\"icons\"\r\n [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"\r\n [class.error]=\"!report?.isValidDueTime || report?.dropdownValidation?.dueTime === false\">{{report?.dueTime}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: !report?.isValidDueTime || report?.dropdownValidation?.dueTime === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.responsibilityWindowError\">{{report?.responsibilityWindow}}\r\n <i *ngIf=\"report?.responsibilityWindowError\" class=\"icons\"\r\n [appTooltip]=\"report?.responsibilityWindowError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.failedAfterError\">{{report?.failedAfter}}\r\n <i *ngIf=\"report?.failedAfterError\" class=\"icons\"\r\n [appTooltip]=\"report?.failedAfterError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsAfterOccurrences\">{{report?.endsAfterOccurrences}}\r\n <i *ngIf=\"!report?.isValidEndsAfterOccurrences\" class=\"icons\"\r\n [appTooltip]=\"report?.endsAfterOccurrencesError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateDay\">{{report?.endsByDateDay}}\r\n <i *ngIf=\"!report?.isValidEndsByDateDay\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateDayError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!report?.isValidEndsByDateMonth\">{{report?.endsByDateMonth}}\r\n <i *ngIf=\"!report?.isValidEndsByDateMonth\" class=\"icons\"\r\n [appTooltip]=\"report?.endsByDateMonthError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenter === false\">\r\n {{report?.responsibilityCenter}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenter === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.responsibilityCenterType === false\">\r\n {{report?.responsibilityCenterType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.responsibilityCenterType === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reportClass === false\">\r\n {{report?.reportClass}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reportClass === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.objective}}</div>\r\n <div class=\"exel-view-column\">{{report?.notes}}</div>\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.isFormat === false\">{{report?.isFormat}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.isFormat === false }\"></ng-container>\r\n </div>\r\n <a class=\"exel-view-column external-link\" [href]=\"report?.formatForResponsibility\"\r\n target=\"_blank\">{{report?.formatForResponsibility}}</a>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\" [class.small-column]=\"true\"\r\n [class.error]=\"report?.dropdownValidation?.documentEvidenceRequired === false\">\r\n {{report?.documentEvidenceRequired}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.documentEvidenceRequired === false }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{report?.assessments}}</div> -->\r\n <div class=\"exel-view-column multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.four-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.reviewer === false || (report?.reviewer && (\r\n !report?.userValidateWithProgram?.isValidReviewer ))\">{{report?.reviewer}}\r\n\r\n <!-- <i *ngIf=\"(report?.reviewer && report?.reviewer === report?.assignor)\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Reviewer of this responsibility.':'You cannot be a Reviewer of this responsibility since you are the assignor. ') +'Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewer === false }\"></ng-container>\r\n <i *ngIf=\"report?.reviewer && report?.dropdownValidation?.reviewer !== false && !report?.userValidateWithProgram?.isValidReviewer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.reviewerType === false\">\r\n {{report?.reviewerType}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.reviewerType === false }\"></ng-container>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.reviewToBeCompletedWithinError\">{{report?.reviewToBeCompletedWithin}}\r\n <i *ngIf=\"report?.reviewToBeCompletedWithinError\" class=\"icons\"\r\n [appTooltip]=\"report?.reviewToBeCompletedWithinError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"!!report?.reviewWillBeFailedAfterError\">{{report?.reviewWillBeFailedAfter}}\r\n <i *ngIf=\"report?.reviewWillBeFailedAfterError\" class=\"icons\"\r\n [appTooltip]=\"report?.reviewWillBeFailedAfterError\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.overseer === false || (report?.overseer && (\r\n !report?.userValidateWithProgram?.isValidOverseer ))\">\r\n {{report?.overseer}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.overseer === false }\"></ng-container>\r\n <i *ngIf=\"(report?.overseer) && report?.dropdownValidation?.overseer !== false && !report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.dropdownValidation?.notifyOnFailure === false || (report?.notifyOnFailure && (\r\n !report?.userValidateWithProgram?.isValidNotifyOnFailure ))\">\r\n {{report?.notifyOnFailure}}\r\n\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.notifyOnFailure === false }\"></ng-container>\r\n <i *ngIf=\"(report?.notifyOnFailure) && report?.dropdownValidation?.notifyOnFailure !== false && !report?.userValidateWithProgram?.isValidNotifyOnFailure\"\r\n class=\"icons\"\r\n [appTooltip]=\"'This user is not associated with the selected Program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.dropdownValidation?.collaborator === false\">{{report?.collaborator}}\r\n <ng-container *ngTemplateOutlet=\"dropdownErr; context: { $implicit: report?.dropdownValidation?.collaborator === false }\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"exel-view-column\" [class.error]=\"(report?.overseer) && ((report?.overseer === report?.assignee) ||(report?.reviewer === report?.overseer) || (report?.overseer == report?.assignor) || (!report?.userValidateWithProgram?.isValidOverseer))\">\r\n {{report?.overseer}}\r\n <i *ngIf=\"(report?.overseer) && ((report?.reviewer === report?.overseer))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.overseer && (report?.overseer === report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.overseer) && (report?.overseer == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"!report?.userValidateWithProgram?.isValidOverseer\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Selected user is not a valid overseer for selected program.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"exel-view-row empty-fill-row\" aria-hidden=\"true\">\r\n <div class=\"exel-view-column sl-no sticky-col sticky-col-index\"></div>\r\n <div class=\"exel-view-column sticky-col sticky-col-name\"></div>\r\n <div class=\"exel-view-column multi-column three-column\" *ngIf=\"hasProgramColumn\">\r\n <div class=\"exel-view-row multi-column three-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\"\r\n *ngIf=\"tabType === 'frequency'\">\r\n <div class=\"exel-view-row multi-column\"\r\n [class.five-column]=\"!hasExtendedFrequencyColumns\"\r\n [class.nine-column]=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\" *ngIf=\"hasExtendedFrequencyColumns\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <ng-container *ngIf=\"hasExtendedFrequencyColumns\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column small-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column small-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column four-column\">\r\n <div class=\"exel-view-row multi-column four-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column multi-column two-column\">\r\n <div class=\"exel-view-row multi-column two-column\">\r\n <div class=\"exel-view-column\"></div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\"></div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <!-- ------------------------------------------------old code dynamic------------------------------------------------- -->\r\n\r\n <!-- *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\" -->\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-option\">\r\n <button *ngIf=\"bulkUpload?.frequency?.reports?.length\" [class.active]=\"tabType === 'frequency'\"\r\n (click)=\"selectedTab.emit('frequency')\">Frequency Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.ongoing?.reports?.length\" [class.active]=\"tabType === 'ongoing'\"\r\n (click)=\"selectedTab.emit('ongoing')\">Ongoing Responsibilities</button>\r\n <button *ngIf=\"bulkUpload?.onCompletion?.reports?.length\" [class.active]=\"tabType === 'onCompletion'\"\r\n (click)=\"selectedTab.emit('onCompletion')\">On Completion Responsibilities</button>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <!-- <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityBulkUpload?.reports?.length}} responsibilities will be\r\n uploaded.</p>\r\n </div> -->\r\n <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityMultiTabBulkUpload?.length}}\r\n {{responsibilityMultiTabBulkUpload?.length > 1 ? 'responsibilities' : 'responsibility'}} will be\r\n uploaded.</p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\" id=\"bulk-resp-cancel\">Cancel</button>\r\n <button (click)=\"submit()\" id=\"bulk-resp-confirm\" [disabled]=\"!isConfirmClickable\"\r\n class=\"blue\">Confirm</button>\r\n <!-- finalResponsibilities < 1 -->\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n</ng-container>\r\n\r\n<!-- --------------------------------------------------------------------upward is new one-------------------- -->", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0;word-break:unset}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-row.multi-column .external-link{color:#1e5dd3;text-decoration:none}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #EB2424!important;padding-right:24px}.bulk-view-body .exel-view-column.error+.error{border-left:none!important}.bulk-view-body .exel-view-column span.required{color:#eb2424;display:contents}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sticky-col{position:sticky;z-index:2;background:#fff}.bulk-view-body .exel-view-column.sticky-col-index{left:0;z-index:3;background:#f1f1f1}.bulk-view-body .exel-view-column.sticky-col-name{left:60px}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-body .exel-view-column.sl-no.error{background:#f5d6d7;border:none;padding-right:10px;border-bottom:1px solid #dcdcdc}.bulk-view-body .exel-view-column.multi-column{padding:0;border:none}.bulk-view-body .exel-view-column.multi-column .exel-view-row{height:100%}.bulk-view-body .exel-view-column.multi-column .exel-view-column{width:50%;min-width:50%}.bulk-view-body .exel-view-column.multi-column .exel-view-column+.exel-view-column{border-left:none}.bulk-view-body.bulk{height:calc(100vh - 142px)}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name{overflow:visible}.bulk-view-body.bulk.is-horizontally-scrolled .sticky-col-name:after{content:\"\";position:absolute;top:-1px;bottom:-1px;right:0;width:8px;pointer-events:none;box-shadow:4px 0 8px #1e5dd326}.bulk-view-body.bulk .exel-view{display:flex;flex-direction:column;width:max-content;min-width:100%;min-height:100%}.bulk-view-body.bulk .exel-view-row{width:max-content;min-width:100%}.bulk-view-body.bulk .exel-view-row.head{position:sticky;top:0;z-index:4}.bulk-view-body.bulk .exel-view-row.head .exel-view-column{min-height:34px}.bulk-view-body.bulk .exel-view-row.head .exel-view-column.sticky-col{background:#f1f1f1;z-index:5}.bulk-view-body.bulk .exel-view-row.head .exel-view-column .info-text{font-size:10px;display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 8px}.bulk-view-body.bulk .exel-view-row.two-column .exel-view-column{min-width:250px!important}.bulk-view-body.bulk .exel-view-row.three-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.four-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.five-column .exel-view-column,.bulk-view-body.bulk .exel-view-row.nine-column .exel-view-column{width:200px;min-width:200px!important}.bulk-view-body.bulk .exel-view-column .exel-view-row .exel-view-column.small-column{width:120px;min-width:120px!important}.bulk-view-body.bulk .exel-view-column.multi-column .exel-view-column{min-width:unset}.bulk-view-body.bulk .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body.bulk .exel-view-column.three-column{width:600px;min-width:600px!important}.bulk-view-body.bulk .exel-view-column.four-column{width:800px;min-width:800px!important}.bulk-view-body.bulk .exel-view-column.five-column{width:1000px;min-width:1000px!important}.bulk-view-body.bulk .exel-view-column.nine-column{width:1800px;min-width:1800px!important}.bulk-view-body.bulk .exel-view .empty-fill-row{flex:1 1 auto;min-height:32px;align-items:stretch}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column{min-height:100%;background-color:#fff;background-image:repeating-linear-gradient(to bottom,#fff 0 31px,#dcdcdc 31px 32px);background-repeat:repeat-y;background-size:100% 32px}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.multi-column{background-image:none;background-color:transparent}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sticky-col-index,.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-column.sl-no{background-color:#f1f1f1;background-image:repeating-linear-gradient(to bottom,#f1f1f1 0 31px,#dcdcdc 31px 32px)}.bulk-view-body.bulk .exel-view .empty-fill-row .exel-view-row{height:100%;align-items:stretch}.bulk-view-option{background:#fff;border-top:1px solid #f1f1f1;padding:0 20px;position:fixed;width:100%;bottom:50px;display:flex;align-items:center}.bulk-view-option button{background:transparent;border-radius:0;border:none;border-left:1px solid #f1f1f1;color:#747576;font-size:11px;font-weight:500;padding:0 .5rem;margin:0;height:2rem;position:relative}.bulk-view-option button:last-of-type{border-right:1px solid #f1f1f1}.bulk-view-option button.active{color:#1e5dd3}.bulk-view-option button.active:before{background:#fff;content:\"\";position:absolute;top:-1px;left:0;height:1px;width:100%}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e03d259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"] }]
|
|
47094
47096
|
}], propDecorators: { responsibilityBulkUpload: [{
|
|
47095
47097
|
type: Input
|
|
47096
47098
|
}], fileName: [{
|
|
@@ -47929,6 +47931,7 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
47929
47931
|
assigneesList: [],
|
|
47930
47932
|
reviewerList: [],
|
|
47931
47933
|
parentResponsibility: [],
|
|
47934
|
+
peopleDropdownNames: [],
|
|
47932
47935
|
memberId: '',
|
|
47933
47936
|
};
|
|
47934
47937
|
this.isLoader = false;
|
|
@@ -48009,6 +48012,7 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
48009
48012
|
assigneesList: [],
|
|
48010
48013
|
reviewerList: [],
|
|
48011
48014
|
parentResponsibility: [],
|
|
48015
|
+
peopleDropdownNames: [],
|
|
48012
48016
|
memberId: '',
|
|
48013
48017
|
};
|
|
48014
48018
|
this.uploadedFiles = [];
|
|
@@ -48501,6 +48505,7 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
48501
48505
|
assignorsList: [],
|
|
48502
48506
|
assigneesList: [],
|
|
48503
48507
|
reviewerList: [],
|
|
48508
|
+
peopleDropdownNames: [],
|
|
48504
48509
|
memberId: '',
|
|
48505
48510
|
};
|
|
48506
48511
|
this.isFileEmpty = false;
|
|
@@ -48595,23 +48600,26 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
48595
48600
|
this.templateInfo.rcList.push(rc);
|
|
48596
48601
|
}
|
|
48597
48602
|
// Assignee
|
|
48603
|
+
if (this.hasValue(element[RESPONSIBILITY.assigneeIndex.name])) {
|
|
48604
|
+
this.addPeopleDropdownName(element[RESPONSIBILITY.assigneeIndex.name]);
|
|
48605
|
+
}
|
|
48598
48606
|
if (element[RESPONSIBILITY.assigneeIndex.id]) {
|
|
48607
|
+
const people = this.parsePeopleListCell(element[RESPONSIBILITY.assigneeIndex.name]);
|
|
48599
48608
|
const assignee = {
|
|
48600
|
-
nameAndEmail:
|
|
48601
|
-
|
|
48602
|
-
|
|
48603
|
-
email: element[RESPONSIBILITY.assigneeIndex.email].split(' (')[1].replace(')', ''),
|
|
48609
|
+
nameAndEmail: people.nameAndEmail,
|
|
48610
|
+
name: people.name,
|
|
48611
|
+
email: people.email,
|
|
48604
48612
|
member_id: element[RESPONSIBILITY.assigneeIndex.id],
|
|
48605
48613
|
};
|
|
48606
48614
|
this.templateInfo.assigneesList.push(assignee);
|
|
48607
48615
|
}
|
|
48608
48616
|
// Reviewer
|
|
48609
48617
|
if (element[RESPONSIBILITY.reviewerIndex.id]) {
|
|
48618
|
+
const people = this.parsePeopleListCell(element[RESPONSIBILITY.reviewerIndex.name]);
|
|
48610
48619
|
const reviewer = {
|
|
48611
|
-
nameAndEmail:
|
|
48612
|
-
|
|
48613
|
-
|
|
48614
|
-
email: element[RESPONSIBILITY.reviewerIndex.email].split(' (')[1].replace(')', ''),
|
|
48620
|
+
nameAndEmail: people.nameAndEmail,
|
|
48621
|
+
name: people.name,
|
|
48622
|
+
email: people.email,
|
|
48615
48623
|
employee_id: element[RESPONSIBILITY.reviewerIndex.id],
|
|
48616
48624
|
my_member_id: element[RESPONSIBILITY.reviewerIndex.id],
|
|
48617
48625
|
};
|
|
@@ -48619,6 +48627,13 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
48619
48627
|
}
|
|
48620
48628
|
/* Checking if the element[2] is not empty and not equal to space. If it is not empty and not
|
|
48621
48629
|
equal to space, it will create an object and push it to the assignorsList array. */
|
|
48630
|
+
if (this.hasValue(element[RESPONSIBILITY.assignorIndex.name])) {
|
|
48631
|
+
this.addPeopleDropdownName(element[RESPONSIBILITY.assignorIndex.name]);
|
|
48632
|
+
if (this.hasValue(element[RESPONSIBILITY.assignorIndex.email])) {
|
|
48633
|
+
this.addPeopleDropdownName(element[RESPONSIBILITY.assignorIndex.email]);
|
|
48634
|
+
this.addPeopleDropdownName(`${String(element[RESPONSIBILITY.assignorIndex.name]).trim()} (${String(element[RESPONSIBILITY.assignorIndex.email]).trim()})`);
|
|
48635
|
+
}
|
|
48636
|
+
}
|
|
48622
48637
|
if (element[RESPONSIBILITY.assignorIndex.id]) {
|
|
48623
48638
|
const assignor = {
|
|
48624
48639
|
nameAndEmail: element[RESPONSIBILITY.assignorIndex.name],
|
|
@@ -48631,12 +48646,12 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
48631
48646
|
this.templateInfo.assignorsList.push(assignor);
|
|
48632
48647
|
}
|
|
48633
48648
|
});
|
|
48649
|
+
this.collectEmailDisplayNamesFromSheet(tempList);
|
|
48634
48650
|
/* Creating a list of child categories and attaching them to their parent program */
|
|
48635
48651
|
if (this.templateInfo.categoryList?.length) {
|
|
48636
48652
|
this.templateInfo.categoryList.forEach((program, i) => {
|
|
48637
|
-
const
|
|
48638
|
-
|
|
48639
|
-
const childCategory = [];
|
|
48653
|
+
const childCategory = [];
|
|
48654
|
+
this.getProgramCategoryIdColumns(tempList[0], program?.programId).forEach((index) => {
|
|
48640
48655
|
for (let j = 1; true; j++) {
|
|
48641
48656
|
if (tempList[j] && tempList[j][index]) {
|
|
48642
48657
|
childCategory.push({
|
|
@@ -48648,11 +48663,69 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
48648
48663
|
break;
|
|
48649
48664
|
}
|
|
48650
48665
|
}
|
|
48651
|
-
|
|
48652
|
-
|
|
48666
|
+
});
|
|
48667
|
+
this.templateInfo.categoryList[i]['childCategory'] = childCategory;
|
|
48653
48668
|
});
|
|
48654
48669
|
}
|
|
48655
48670
|
}
|
|
48671
|
+
/**
|
|
48672
|
+
* Child categories live in later Data-sheet columns whose header is the program id.
|
|
48673
|
+
* Skip the program listing id columns (22-29 area) — those same ids also appear there
|
|
48674
|
+
* for the first program of each type, which would attach the wrong names.
|
|
48675
|
+
*/
|
|
48676
|
+
getProgramCategoryIdColumns(headerRow = [], programId) {
|
|
48677
|
+
if (programId == null || programId === '') {
|
|
48678
|
+
return [];
|
|
48679
|
+
}
|
|
48680
|
+
const programListingIdColumns = new Set([
|
|
48681
|
+
RESPONSIBILITY.programIndex.regulations.id,
|
|
48682
|
+
RESPONSIBILITY.programIndex.standards.id,
|
|
48683
|
+
RESPONSIBILITY.programIndex.internalControls.id,
|
|
48684
|
+
RESPONSIBILITY.programIndex.others.id,
|
|
48685
|
+
]);
|
|
48686
|
+
const indexes = [];
|
|
48687
|
+
(headerRow || []).forEach((cell, index) => {
|
|
48688
|
+
if (!programListingIdColumns.has(index) && cell == programId) {
|
|
48689
|
+
indexes.push(index);
|
|
48690
|
+
}
|
|
48691
|
+
});
|
|
48692
|
+
return indexes;
|
|
48693
|
+
}
|
|
48694
|
+
parsePeopleListCell(value) {
|
|
48695
|
+
const nameAndEmail = value == null ? '' : String(value).trim();
|
|
48696
|
+
const emailMatch = nameAndEmail.match(/\(([^)]*@[^)]*)\)\s*$/);
|
|
48697
|
+
return {
|
|
48698
|
+
nameAndEmail,
|
|
48699
|
+
name: nameAndEmail.replace(/\s*\([^)]*@[^)]*\)\s*$/, '').trim() || nameAndEmail,
|
|
48700
|
+
email: emailMatch ? emailMatch[1].trim() : '',
|
|
48701
|
+
};
|
|
48702
|
+
}
|
|
48703
|
+
addPeopleDropdownName(value) {
|
|
48704
|
+
if (!this.hasValue(value)) {
|
|
48705
|
+
return;
|
|
48706
|
+
}
|
|
48707
|
+
if (!this.templateInfo.peopleDropdownNames) {
|
|
48708
|
+
this.templateInfo.peopleDropdownNames = [];
|
|
48709
|
+
}
|
|
48710
|
+
const name = String(value).trim();
|
|
48711
|
+
const alreadyAdded = this.templateInfo.peopleDropdownNames.some((existing) => this.normalizeDropdownValue(existing) === this.normalizeDropdownValue(name));
|
|
48712
|
+
if (!alreadyAdded) {
|
|
48713
|
+
this.templateInfo.peopleDropdownNames.push(name);
|
|
48714
|
+
}
|
|
48715
|
+
}
|
|
48716
|
+
collectEmailDisplayNamesFromSheet(tempList = []) {
|
|
48717
|
+
(tempList || []).forEach((row) => {
|
|
48718
|
+
(row || []).forEach((cell) => {
|
|
48719
|
+
if (cell == null) {
|
|
48720
|
+
return;
|
|
48721
|
+
}
|
|
48722
|
+
const text = String(cell);
|
|
48723
|
+
if (/\([^)]*@[^)]*\)/.test(text)) {
|
|
48724
|
+
this.addPeopleDropdownName(text);
|
|
48725
|
+
}
|
|
48726
|
+
});
|
|
48727
|
+
});
|
|
48728
|
+
}
|
|
48656
48729
|
getProgramDetails(element, index, type) {
|
|
48657
48730
|
if (element[index.id] && typeof element[index.id] === 'number') {
|
|
48658
48731
|
return {
|
|
@@ -49082,7 +49155,11 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
49082
49155
|
return obj;
|
|
49083
49156
|
}
|
|
49084
49157
|
this.applyDropdownValidation(obj, tabType, isProgram, hasExtendedFrequencyColumns);
|
|
49085
|
-
obj
|
|
49158
|
+
this.applyDaysCountValidation(obj, tabType);
|
|
49159
|
+
obj['isValid'] =
|
|
49160
|
+
!!obj['isValid'] &&
|
|
49161
|
+
!!obj['isValidDropdown'] &&
|
|
49162
|
+
!!obj['isValidDaysCount'];
|
|
49086
49163
|
return obj;
|
|
49087
49164
|
}
|
|
49088
49165
|
applyDropdownValidation(obj, tabType, isProgram, hasExtendedFrequencyColumns = false) {
|
|
@@ -49164,21 +49241,6 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
49164
49241
|
});
|
|
49165
49242
|
return names;
|
|
49166
49243
|
}
|
|
49167
|
-
getAssignorDropdownNames() {
|
|
49168
|
-
const names = [];
|
|
49169
|
-
(this.templateInfo?.assignorsList || []).forEach((assignor) => {
|
|
49170
|
-
if (this.hasValue(assignor?.nameAndEmail)) {
|
|
49171
|
-
names.push(String(assignor.nameAndEmail).trim());
|
|
49172
|
-
}
|
|
49173
|
-
if (this.hasValue(assignor?.name)) {
|
|
49174
|
-
names.push(String(assignor.name).trim());
|
|
49175
|
-
}
|
|
49176
|
-
if (this.hasValue(assignor?.name) && this.hasValue(assignor?.email)) {
|
|
49177
|
-
names.push(`${String(assignor.name).trim()} (${String(assignor.email).trim()})`);
|
|
49178
|
-
}
|
|
49179
|
-
});
|
|
49180
|
-
return names;
|
|
49181
|
-
}
|
|
49182
49244
|
/**
|
|
49183
49245
|
* Entrusted By in the xlsx dropdown is the people list in `Name (email)` form
|
|
49184
49246
|
* (same source as Entrusted To / Reviewer), not the assignor name-only column.
|
|
@@ -49187,33 +49249,79 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
49187
49249
|
if (!this.hasValue(value)) {
|
|
49188
49250
|
return true;
|
|
49189
49251
|
}
|
|
49190
|
-
|
|
49252
|
+
const normalized = this.normalizeDropdownValue(value);
|
|
49253
|
+
const valueEmail = this.extractDropdownEmail(value);
|
|
49254
|
+
const valueName = this.extractDropdownName(value);
|
|
49255
|
+
const dropdownNames = this.templateInfo?.peopleDropdownNames || [];
|
|
49256
|
+
if (dropdownNames.some((name) => this.normalizeDropdownValue(name) === normalized)) {
|
|
49191
49257
|
return true;
|
|
49192
49258
|
}
|
|
49193
|
-
if (
|
|
49259
|
+
if (valueEmail &&
|
|
49260
|
+
dropdownNames.some((name) => {
|
|
49261
|
+
const nameEmail = this.extractDropdownEmail(name);
|
|
49262
|
+
return (nameEmail === valueEmail ||
|
|
49263
|
+
this.normalizeDropdownValue(name) === valueEmail);
|
|
49264
|
+
})) {
|
|
49194
49265
|
return true;
|
|
49195
49266
|
}
|
|
49196
|
-
const
|
|
49197
|
-
...this.
|
|
49198
|
-
...
|
|
49199
|
-
...
|
|
49267
|
+
const users = [
|
|
49268
|
+
...(this.templateInfo?.assignorsList || []),
|
|
49269
|
+
...(this.templateInfo?.assigneesList || []),
|
|
49270
|
+
...(this.templateInfo?.reviewerList || []),
|
|
49200
49271
|
];
|
|
49201
|
-
|
|
49202
|
-
|
|
49272
|
+
return users.some((user) => {
|
|
49273
|
+
const constructed = this.hasValue(user?.name) && this.hasValue(user?.email)
|
|
49274
|
+
? `${String(user.name).trim()} (${String(user.email).trim()})`
|
|
49275
|
+
: '';
|
|
49276
|
+
const candidates = [
|
|
49277
|
+
user?.nameAndEmail,
|
|
49278
|
+
user?.name,
|
|
49279
|
+
user?.email,
|
|
49280
|
+
constructed,
|
|
49281
|
+
];
|
|
49282
|
+
if (candidates.some((candidate) => this.hasValue(candidate) &&
|
|
49283
|
+
this.normalizeDropdownValue(candidate) === normalized)) {
|
|
49284
|
+
return true;
|
|
49285
|
+
}
|
|
49286
|
+
if (valueEmail &&
|
|
49287
|
+
this.hasValue(user?.email) &&
|
|
49288
|
+
this.normalizeDropdownValue(user.email) === valueEmail) {
|
|
49289
|
+
return true;
|
|
49290
|
+
}
|
|
49291
|
+
if (valueName &&
|
|
49292
|
+
this.hasValue(user?.name) &&
|
|
49293
|
+
this.normalizeDropdownValue(user.name) === valueName) {
|
|
49294
|
+
return true;
|
|
49295
|
+
}
|
|
49296
|
+
return (!!valueEmail &&
|
|
49297
|
+
candidates.some((candidate) => this.hasValue(candidate) &&
|
|
49298
|
+
this.extractDropdownEmail(candidate) === valueEmail));
|
|
49299
|
+
});
|
|
49300
|
+
}
|
|
49301
|
+
normalizeDropdownValue(value) {
|
|
49302
|
+
return String(value ?? '')
|
|
49303
|
+
.replace(/[\u200B-\u200D\uFEFF]/g, '')
|
|
49304
|
+
.replace(/\u00a0/g, ' ')
|
|
49305
|
+
.replace(/\s+/g, ' ')
|
|
49306
|
+
.trim()
|
|
49307
|
+
.toLowerCase();
|
|
49308
|
+
}
|
|
49309
|
+
extractDropdownEmail(value) {
|
|
49310
|
+
const match = String(value ?? '').match(/\(([^)]*@[^)]*)\)\s*$/);
|
|
49311
|
+
return match ? this.normalizeDropdownValue(match[1]) : '';
|
|
49312
|
+
}
|
|
49313
|
+
extractDropdownName(value) {
|
|
49314
|
+
return this.normalizeDropdownValue(String(value ?? '').replace(/\s*\([^)]*@[^)]*\)\s*$/, ''));
|
|
49203
49315
|
}
|
|
49204
49316
|
isInStaticDropdown(value, options) {
|
|
49205
|
-
|
|
49206
|
-
return true;
|
|
49207
|
-
}
|
|
49208
|
-
const normalized = String(value).trim().toLowerCase();
|
|
49209
|
-
return options.some((option) => option.toLowerCase() === normalized);
|
|
49317
|
+
return this.isInDropdownList(value, options);
|
|
49210
49318
|
}
|
|
49211
49319
|
isInDropdownList(value, options) {
|
|
49212
49320
|
if (!this.hasValue(value)) {
|
|
49213
49321
|
return true;
|
|
49214
49322
|
}
|
|
49215
|
-
const normalized =
|
|
49216
|
-
return options.some((option) => option === normalized);
|
|
49323
|
+
const normalized = this.normalizeDropdownValue(value);
|
|
49324
|
+
return (options || []).some((option) => this.normalizeDropdownValue(option) === normalized);
|
|
49217
49325
|
}
|
|
49218
49326
|
isValidDropdownDay(value) {
|
|
49219
49327
|
if (!this.hasValue(value)) {
|
|
@@ -49238,6 +49346,40 @@ class AddMultipleResponsibilityWithTabComponent {
|
|
|
49238
49346
|
}
|
|
49239
49347
|
return REGEX.DUE_TIME.test(value);
|
|
49240
49348
|
}
|
|
49349
|
+
/**
|
|
49350
|
+
* Optional field. When filled, the value must be a non-negative whole number.
|
|
49351
|
+
* Rejects negatives, decimals, and non-numeric text. Blank is valid. 0 is allowed
|
|
49352
|
+
* (Fail / Review Fail use 0 to mean complete/review on the due date).
|
|
49353
|
+
*/
|
|
49354
|
+
getWholeNumberDaysError(value) {
|
|
49355
|
+
if (!this.hasValue(value)) {
|
|
49356
|
+
return '';
|
|
49357
|
+
}
|
|
49358
|
+
const normalized = String(value).trim();
|
|
49359
|
+
if (/^-/.test(normalized) || Number(normalized) < 0) {
|
|
49360
|
+
return VALIDATION_MESSAGES.POSITIVE_NUMBER;
|
|
49361
|
+
}
|
|
49362
|
+
if (!/^\d+$/.test(normalized)) {
|
|
49363
|
+
return VALIDATION_MESSAGES.WHOLE_NUMBER_NON_NEGATIVE;
|
|
49364
|
+
}
|
|
49365
|
+
return '';
|
|
49366
|
+
}
|
|
49367
|
+
applyDaysCountValidation(obj, tabType) {
|
|
49368
|
+
const startError = tabType === 'frequency'
|
|
49369
|
+
? this.getWholeNumberDaysError(obj?.responsibilityWindow)
|
|
49370
|
+
: '';
|
|
49371
|
+
const failError = tabType === 'frequency'
|
|
49372
|
+
? this.getWholeNumberDaysError(obj?.failedAfter)
|
|
49373
|
+
: '';
|
|
49374
|
+
const reviewStartError = this.getWholeNumberDaysError(obj?.reviewToBeCompletedWithin);
|
|
49375
|
+
const reviewFailError = this.getWholeNumberDaysError(obj?.reviewWillBeFailedAfter);
|
|
49376
|
+
obj['responsibilityWindowError'] = startError;
|
|
49377
|
+
obj['failedAfterError'] = failError;
|
|
49378
|
+
obj['reviewToBeCompletedWithinError'] = reviewStartError;
|
|
49379
|
+
obj['reviewWillBeFailedAfterError'] = reviewFailError;
|
|
49380
|
+
obj['isValidDaysCount'] =
|
|
49381
|
+
!startError && !failError && !reviewStartError && !reviewFailError;
|
|
49382
|
+
}
|
|
49241
49383
|
/**
|
|
49242
49384
|
* Optional field. When filled, the value must be numeric and greater than 0.
|
|
49243
49385
|
*/
|