sf-i-events 1.0.804 → 1.0.806

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/sf-i-events.js CHANGED
@@ -114,6 +114,7 @@ let SfIEvents = class SfIEvents extends LitElement {
114
114
  this.COLOR_PARTIALLY_COMPLIED = "#F79256";
115
115
  this.COLOR_COMPLIED = "#50cf01";
116
116
  this.COLOR_COMPLIED_WITH_EXCEPTION = "#ffe505";
117
+ this.COLOR_REPORTED_NON_COMPLIANCE = "#840B0F";
117
118
  this.STATUS_NOT_STARTED = "not-started";
118
119
  this.STATUS_PENDING_APPROVAL = "pending-approval";
119
120
  this.STATUS_REJECTED = "rejected";
@@ -428,9 +429,12 @@ let SfIEvents = class SfIEvents extends LitElement {
428
429
  .color-complied {
429
430
  color: #50cf01;
430
431
  }
431
- .color-complied-with-exception {
432
+ .color-complied-with-gaps {
432
433
  color: #ffe505;
433
434
  }
435
+ .color-reported-non-compliance {
436
+ color: #840B0F;
437
+ }
434
438
  .color-scheduled {
435
439
  color: #888888;
436
440
  }
@@ -636,9 +640,12 @@ let SfIEvents = class SfIEvents extends LitElement {
636
640
  .color-complied {
637
641
  color: #50cf01;
638
642
  }
639
- .color-complied-with-exception {
643
+ .color-complied-with-gaps {
640
644
  color: #ffe505;
641
645
  }
646
+ .color-reported-non-compliance {
647
+ color: #840B0F;
648
+ }
642
649
  .color-scheduled {
643
650
  color: #888888;
644
651
  }
@@ -1852,8 +1859,11 @@ let SfIEvents = class SfIEvents extends LitElement {
1852
1859
  if (arrComplianceData[name]["complied"] == null) {
1853
1860
  arrComplianceData[name]["complied"] = 0;
1854
1861
  }
1855
- if (arrComplianceData[name]["complied-with-exception"] == null) {
1856
- arrComplianceData[name]["complied-with-exception"] = 0;
1862
+ if (arrComplianceData[name]["complied-with-gaps"] == null) {
1863
+ arrComplianceData[name]["complied-with-gaps"] = 0;
1864
+ }
1865
+ if (arrComplianceData[name]["reported-non-compliance"] == null) {
1866
+ arrComplianceData[name]["reported-non-compliance"] = 0;
1857
1867
  }
1858
1868
  arrComplianceData[name][complianceStatus]++;
1859
1869
  }
@@ -2122,8 +2132,12 @@ let SfIEvents = class SfIEvents extends LitElement {
2122
2132
  }
2123
2133
  else {
2124
2134
  if (timeliness == "in-time" || timeliness == "late-reported" || timeliness == "late-approved") {
2125
- if (percentage != null && parseInt(percentage) < 100) {
2126
- return "complied-with-exception";
2135
+ if (percentage != null && parseInt(percentage) == 0) {
2136
+ console.log('reported non compliance');
2137
+ return "reported-non-compliance";
2138
+ }
2139
+ else if (percentage != null && parseInt(percentage) < 100) {
2140
+ return "complied-with-gaps";
2127
2141
  }
2128
2142
  else {
2129
2143
  return "complied";
@@ -2284,7 +2298,8 @@ let SfIEvents = class SfIEvents extends LitElement {
2284
2298
  html += '<div part="badge-dashboard" id="chip-compliance-1" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-icons color-not-complied">disabled_by_default</span>&nbsp;&nbsp;<span>Not Complied:</span>&nbsp;<span id="graph-not-complied">DASHBOARD_NOT_COMPLIED</span></div>';
2285
2299
  html += '<div part="badge-dashboard" id="chip-compliance-2" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-icons color-partially-complied">rule</span>&nbsp;&nbsp;<span>Partially Complied:</span>&nbsp;<span id="graph-partially-complied">DASHBOARD_PARTIALLY_COMPLIED</span></div>';
2286
2300
  html += '<div part="badge-dashboard" id="chip-compliance-3" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-complied">sweep</span>&nbsp;&nbsp;<span>Complied:</span>&nbsp;<span id="graph-complied">DASHBOARD_COMPLIED</span></div>';
2287
- html += '<div part="badge-dashboard" id="chip-compliance-4" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-complied-with-exception">rule</span>&nbsp;&nbsp;<span>Complied With Exception:</span>&nbsp;<span id="graph-complied-with-exception">DASHBOARD_COMPLIED_WITH_EXCEPTION</span></div>';
2301
+ html += '<div part="badge-dashboard" id="chip-compliance-4" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-complied-with-gaps">rule</span>&nbsp;&nbsp;<span>Complied With Gaps:</span>&nbsp;<span id="graph-complied-with-gaps">DASHBOARD_COMPLIED_WITH_GAPS</span></div>';
2302
+ html += '<div part="badge-dashboard" id="chip-compliance-5" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-reported-non-compliance">rule</span>&nbsp;&nbsp;<span>Reported Non Compliance:</span>&nbsp;<span id="graph-reported-non-compliance">DASHBOARD_REPORTED_NON_COMPLIANCE</span></div>';
2288
2303
  html += '</div>';
2289
2304
  html += '<div id="stream-event-filter" part="stream-event-total" class="d-flex flex-wrap"></div>';
2290
2305
  return html;
@@ -2306,7 +2321,8 @@ let SfIEvents = class SfIEvents extends LitElement {
2306
2321
  html += '<div part="badge-dashboard" id="chip-compliance-1" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-icons color-not-complied">disabled_by_default</span>&nbsp;&nbsp;<span>Not Complied:</span>&nbsp;<span id="graph-not-complied">DASHBOARD_NOT_COMPLIED</span></div>';
2307
2322
  html += '<div part="badge-dashboard" id="chip-compliance-2" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-icons color-partially-complied">rule</span>&nbsp;&nbsp;<span>Partially Complied:</span>&nbsp;<span id="graph-partially-complied">DASHBOARD_PARTIALLY_COMPLIED</span></div>';
2308
2323
  html += '<div part="badge-dashboard" id="chip-compliance-3" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-complied">sweep</span>&nbsp;&nbsp;<span>Complied:</span>&nbsp;<span id="graph-complied">DASHBOARD_COMPLIED</span></div>';
2309
- html += '<div part="badge-dashboard" id="chip-compliance-4" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-complied-with-exception">rule</span>&nbsp;&nbsp;<span>Complied With Exception:</span>&nbsp;<span id="graph-complied-with-exception">DASHBOARD_COMPLIED_WITH_EXCEPTION</span></div>';
2324
+ html += '<div part="badge-dashboard" id="chip-compliance-4" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-complied-with-gaps">rule</span>&nbsp;&nbsp;<span>Complied With Gaps:</span>&nbsp;<span id="graph-complied-with-gaps">DASHBOARD_COMPLIED_WITH_GAPS</span></div>';
2325
+ html += '<div part="badge-dashboard" id="chip-compliance-5" class="chip stat-compliance justify-center align-center mr-10 mb-10 no-shrink compliance-statuses"><span class="material-symbols-outlined color-reported-non-compliance">rule</span>&nbsp;&nbsp;<span>Reported Non Compliance:</span>&nbsp;<span id="graph-reported-non-compliance">DASHBOARD_COMPLIED_WITH_GAPS</span></div>';
2310
2326
  html += '</div>';
2311
2327
  html += '<div id="stream-event-filter" part="stream-event-total" class="d-flex flex-wrap"></div>';
2312
2328
  return html;
@@ -2636,7 +2652,8 @@ let SfIEvents = class SfIEvents extends LitElement {
2636
2652
  html += (complianceStatus == "not-complied" ? '<span class="material-symbols-outlined color-not-complied color-not-complied-item color-not-complied-item-' + i + '">disabled_by_default</span>' : '');
2637
2653
  html += (complianceStatus == "partially-complied" ? '<span class="material-symbols-outlined color-partially-complied color-partially-complied-item color-partially-complied-item-' + i + '">rule</span>' : '');
2638
2654
  html += (complianceStatus == "complied" ? '<span class="material-symbols-outlined color-complied color-complied-item color-complied-item-' + i + '">sweep</span>' : '');
2639
- html += (complianceStatus == "complied-with-exception" ? '<span class="material-symbols-outlined color-complied-with-exception color-complied-with-exception-item color-complied-with-exception-item-' + i + '">rule</span>' : '');
2655
+ html += (complianceStatus == "complied-with-gaps" ? '<span class="material-symbols-outlined color-complied-with-gaps color-complied-with-gaps-item color-complied-with-gaps-item-' + i + '">rule</span>' : '');
2656
+ html += (complianceStatus == "reported-non-compliance" ? '<span class="material-symbols-outlined color-reported-non-compliance color-reported-non-compliance-item color-reported-non-compliance-item-' + i + '">rule</span>' : '');
2640
2657
  html += (partStatus == "not-started" ? '<span class="material-symbols-outlined color-not-started color-not-started-item color-not-started-item-' + i + '">schedule</span>' : '');
2641
2658
  html += (partStatus == "pending-approval" ? '<span class="material-symbols-outlined color-pending color-pending-item color-pending-item-' + i + '">pending</span>' : '');
2642
2659
  html += (partStatus == "rejected" ? '<span class="material-symbols-outlined color-rejected color-rejected-item color-rejected-item-' + i + '">block</span>' : '');
@@ -2692,7 +2709,7 @@ let SfIEvents = class SfIEvents extends LitElement {
2692
2709
  return html;
2693
2710
  };
2694
2711
  this.renderEvents = (_firstDay, _endDay, iInit, iLast, showGraph, index, month, period, firstDate = null, parametersTitle, showBackgroundButton) => {
2695
- var total = 0, notStarted = 0, approved = 0, pendingApproval = 0, rejected = 0, inTime = 0, pastDueDate = 0, lateExecuted = 0, lateApproved = 0, lateReported = 0, scheduled = 0, partiallyComplied = 0, notComplied = 0, complied = 0, compliedWithException = 0;
2712
+ var total = 0, notStarted = 0, approved = 0, pendingApproval = 0, rejected = 0, inTime = 0, pastDueDate = 0, lateExecuted = 0, lateApproved = 0, lateReported = 0, scheduled = 0, partiallyComplied = 0, notComplied = 0, complied = 0, compliedWithGaps = 0, reportedNonCompliance = 0;
2696
2713
  var html = '';
2697
2714
  this.selectedItemIds = [];
2698
2715
  this.selectedItems = [];
@@ -2773,7 +2790,8 @@ let SfIEvents = class SfIEvents extends LitElement {
2773
2790
  partiallyComplied = partiallyComplied + (complianceStatus == "partially-complied" ? 1 : 0);
2774
2791
  notComplied = notComplied + (complianceStatus == "not-complied" ? 1 : 0);
2775
2792
  complied = complied + (complianceStatus == "complied" ? 1 : 0);
2776
- compliedWithException = compliedWithException + (complianceStatus == "complied-with-exception" ? 1 : 0);
2793
+ compliedWithGaps = compliedWithGaps + (complianceStatus == "complied-with-gaps" ? 1 : 0);
2794
+ reportedNonCompliance = reportedNonCompliance + (complianceStatus == "reported-non-compliance" ? 1 : 0);
2777
2795
  this.events[mmdd][j][this.FLOW_GRAPH_COMPLETENESS] = partStatus;
2778
2796
  this.events[mmdd][j][this.FLOW_GRAPH_TIMELINESS] = lateStatus;
2779
2797
  this.events[mmdd][j][this.FLOW_GRAPH_COMPLIANCE] = complianceStatus;
@@ -2895,15 +2913,15 @@ let SfIEvents = class SfIEvents extends LitElement {
2895
2913
  html = html.replace("DASHBOARD_NOT_COMPLIED", notComplied + "");
2896
2914
  html = html.replace("DASHBOARD_PARTIALLY_COMPLIED", partiallyComplied + "");
2897
2915
  html = html.replace("DASHBOARD_COMPLIED", complied + "");
2898
- html = html.replace("DASHBOARD_COMPLIED_WITH_EXCEPTION", compliedWithException + "");
2899
- this.csvDataStats = 'Period,Total,Not Started,Approved,Pending Approval,Rejected,Past Due Date,Late Reported,Late Executed,Late Approved,Scheduled,Not Complied,Partially Complied,Complied\n';
2900
- this.csvDataStats += this.period + "," + total + "," + notStarted + "," + approved + "," + pendingApproval + "," + rejected + "," + pastDueDate + "," + lateReported + "," + lateExecuted + "," + lateApproved + "," + scheduled + "," + notComplied + "," + partiallyComplied + "," + complied;
2916
+ html = html.replace("DASHBOARD_COMPLIED_WITH_GAPS", compliedWithGaps + "");
2917
+ this.csvDataStats = 'Period,Total,Not Started,Approved,Pending Approval,Rejected,Past Due Date,Late Reported,Late Executed,Late Approved,Scheduled,Not Complied,Partially Complied,Complied,Complied With Gaps\n';
2918
+ this.csvDataStats += this.period + "," + total + "," + notStarted + "," + approved + "," + pendingApproval + "," + rejected + "," + pastDueDate + "," + lateReported + "," + lateExecuted + "," + lateApproved + "," + scheduled + "," + notComplied + "," + partiallyComplied + "," + complied + "," + compliedWithGaps;
2901
2919
  this.htmlDataStats = 'Completeness<br /><br /><table class="w-100"><tr><th class="w-14">Total</th><th class="w-14">Not Started</th><th class="w-14">Approved</th><th class="w-14">Pending Approval</th><th class="w-14">Rejected</th><tr>';
2902
2920
  this.htmlDataStats += '<tr><td class="w-14 text-center td-odd">' + total + '</td><td class="w-14 text-center td-odd">' + notStarted + '</td><td class="w-14 text-center td-odd">' + approved + '</td><td class="w-14 text-center td-odd">' + pendingApproval + '</td><td class="w-14 text-center td-odd">' + rejected + '</td></table>';
2903
2921
  this.htmlDataStats += '<br /><br />Timeliness<br /><br /><table class="mt-20 w-100"><tr><th class="w-14">Total</th><th class="w-14">In Time</th><th class="w-14">Past Due Date</th><th class="w-14">Late Reported</th><th class="w-14">Late Executed</th><th class="w-14">Late Approved</th><tr>';
2904
2922
  this.htmlDataStats += '<tr><td class="w-14 text-center td-odd">' + total + '</td><td class="w-14 text-center td-odd">' + (total - (pastDueDate + lateApproved + lateExecuted)) + '</td><td class="w-14 text-center td-odd">' + pastDueDate + '</td><td class="w-14 text-center td-odd">' + lateReported + '</td><td class="w-14 text-center td-odd">' + lateExecuted + '</td><td class="w-14 text-center td-odd">' + lateApproved + '</td><tr></table>';
2905
- this.htmlDataStats += '<br /><br />Compliance<br /><br /><table class="w-100"><tr><th class="w-14">Total</th><th class="w-14">Scheduled</th><th class="w-14">Not Complied</th><th class="w-14">Partially Complied</th><th class="w-14">Complied</th><tr>';
2906
- this.htmlDataStats += '<tr><td class="w-14 text-center td-odd">' + total + '</td><td class="w-14 text-center td-odd">' + scheduled + '</td><td class="w-14 text-center td-odd">' + notComplied + '</td><td class="w-14 text-center td-odd">' + partiallyComplied + '</td><td class="w-14 text-center td-odd">' + complied + '</td><tr></table>';
2923
+ this.htmlDataStats += '<br /><br />Compliance<br /><br /><table class="w-100"><tr><th class="w-14">Total</th><th class="w-14">Scheduled</th><th class="w-14">Not Complied</th><th class="w-14">Partially Complied</th><th class="w-14">Complied</th><th class="w-14">Complied With Gaps</th><tr>';
2924
+ this.htmlDataStats += '<tr><td class="w-14 text-center td-odd">' + total + '</td><td class="w-14 text-center td-odd">' + scheduled + '</td><td class="w-14 text-center td-odd">' + notComplied + '</td><td class="w-14 text-center td-odd">' + partiallyComplied + '</td><td class="w-14 text-center td-odd">' + complied + '</td><td class="w-14 text-center td-odd">' + compliedWithGaps + '</td><tr></table>';
2907
2925
  return html;
2908
2926
  };
2909
2927
  this.renderStatistics = (_firstDay, _endDay, iInit, iLast, showGraph, index, month, period, firstDate = null, parametersTitle) => {
@@ -3193,6 +3211,7 @@ let SfIEvents = class SfIEvents extends LitElement {
3193
3211
  html += '<input id="input-reporter-doc" part="input" type="date" value="' + (dateOfCompletion == "" ? dateOfCompletion : new Date(parseInt(dateOfCompletion)).toISOString().substring(0, 10)) + '" max="' + (new Date().toISOString().substring(0, 10)) + '"/><br />';
3194
3212
  html += '<label part="input-label">Completion Percentage*</label>';
3195
3213
  html += '<input id="input-reporter-percentage" part="input" type="number" value="' + percentage + '" max="100" min="0" step="1"/><br />';
3214
+ html += '<div part="input-reporter-percentage-message" class="input-reporter-percentage-message mb-20">For reporting full non-compliance, choose 0%. For reporting compliance with gaps, choose the appropriate % value.</div><br />';
3196
3215
  // if(docsOptional.length === 0) {
3197
3216
  html += '<label part="input-label">Supporting Documents' + ((docsOptional.length > 0) ? '' : '*') + '</label>';
3198
3217
  if (event['uploadguidance'] != null && event['uploadguidance'].length > 0) {
@@ -3232,6 +3251,7 @@ let SfIEvents = class SfIEvents extends LitElement {
3232
3251
  html += '<input id="input-auditor-doc" part="input" type="date" value="' + (dateOfCompletion == "" ? dateOfCompletion : new Date(parseInt(dateOfCompletion)).toISOString().substring(0, 10)) + '" max="' + (new Date().toISOString().substring(0, 10)) + '" readonly/><br />';
3233
3252
  html += '<label part="input-label">Percentage</label>';
3234
3253
  html += '<input id="input-reporter-percentage" part="input" type="number" max="100" min="0" step="1" value="' + percentage + '" disabled/><br />';
3254
+ html += '<div part="input-reporter-percentage-message" class="input-reporter-percentage-message mb-20">For reporting full non-compliance, choose 0%. For reporting compliance with gaps, choose the appropriate % value.</div><br />';
3235
3255
  html += '<div>';
3236
3256
  html += '<label part="input-label">Approve?</label><br />';
3237
3257
  html += '<div class="mt-5">';
@@ -3609,10 +3629,11 @@ let SfIEvents = class SfIEvents extends LitElement {
3609
3629
  if (listReportingContainer.querySelector('#input-reporter-percentage') != null) {
3610
3630
  percentage = listReportingContainer.querySelector('#input-reporter-percentage').value;
3611
3631
  }
3612
- if (docs.length == 0 && event.docsOptional != null && event.docsOptional.length === 0) {
3632
+ console.log('percentage', percentage, listReportingContainer.querySelector('#input-reporter-percentage').value);
3633
+ if (Number.isNaN(parseInt(percentage)) || parseInt(percentage) < 0 || parseInt(percentage) > 100) {
3613
3634
  //console.log('reporter comments 3', reportercomments);
3614
3635
  buttonClick.innerHTML = "Save";
3615
- this.setError('No documents uploaded!');
3636
+ this.setError('Invalid Percentage!');
3616
3637
  setTimeout(() => {
3617
3638
  this.clearMessages();
3618
3639
  }, 3000);
@@ -8389,29 +8410,31 @@ let SfIEvents = class SfIEvents extends LitElement {
8389
8410
  var dataScheduled = divContainer.querySelector('#graph-scheduled').innerHTML;
8390
8411
  var dataPartiallyComplied = divContainer.querySelector('#graph-partially-complied').innerHTML;
8391
8412
  var dataComplied = divContainer.querySelector('#graph-complied').innerHTML;
8392
- var dataCompliedWithException = divContainer.querySelector('#graph-complied-with-exception').innerHTML;
8413
+ var dataCompliedWithGaps = divContainer.querySelector('#graph-complied-with-gaps').innerHTML;
8414
+ var dataReportedNonComplaince = divContainer.querySelector('#graph-reported-non-compliance').innerHTML;
8393
8415
  const ctx = divContainer.querySelector('#myChart');
8394
8416
  this.showGraph(divContainer, 1);
8395
8417
  this.clearGraph(divContainer, 2);
8396
8418
  this.clearGraph(divContainer, 3);
8397
8419
  this.clearGraph(divContainer, 4);
8398
8420
  const data = {
8399
- labels: ['Scheduled', 'Not Complied', 'Partially Complied', 'Complied', 'Complied With Exception'],
8421
+ labels: ['Scheduled', 'Not Complied', 'Partially Complied', 'Complied', 'Complied With Gaps', 'Reported Non Complinace'],
8400
8422
  datasets: [{
8401
8423
  label: 'Compliances',
8402
- data: [dataScheduled, dataNotComplied, dataPartiallyComplied, dataComplied, dataCompliedWithException],
8424
+ data: [dataScheduled, dataNotComplied, dataPartiallyComplied, dataComplied, dataCompliedWithGaps, dataReportedNonComplaince],
8403
8425
  borderWidth: 1,
8404
8426
  backgroundColor: [
8405
8427
  this.COLOR_SCHEDULED,
8406
8428
  this.COLOR_NOT_COMPLIED,
8407
8429
  this.COLOR_PARTIALLY_COMPLIED,
8408
8430
  this.COLOR_COMPLIED,
8409
- this.COLOR_COMPLIED_WITH_EXCEPTION
8431
+ this.COLOR_COMPLIED_WITH_EXCEPTION,
8432
+ this.COLOR_REPORTED_NON_COMPLIANCE
8410
8433
  ]
8411
8434
  }]
8412
8435
  };
8413
- this.csvGraphStats += 'Compliance,Scheduled,Not Complied,Partially Complied,Complied,Complied With Exception,Total\n';
8414
- this.csvGraphStats += 'Count,' + parseInt(dataScheduled) + ',' + parseInt(dataNotComplied) + ',' + parseInt(dataPartiallyComplied) + ',' + parseInt(dataComplied) + ',' + parseInt(dataCompliedWithException) + ',' + parseInt(dataTotal) + '\n';
8436
+ this.csvGraphStats += 'Compliance,Scheduled,Not Complied,Partially Complied,Complied,Complied With Gaps,Reported Non Compliance,Total\n';
8437
+ this.csvGraphStats += 'Count,' + parseInt(dataScheduled) + ',' + parseInt(dataNotComplied) + ',' + parseInt(dataPartiallyComplied) + ',' + parseInt(dataComplied) + ',' + parseInt(dataCompliedWithGaps) + ',' + parseInt(dataReportedNonComplaince) + ',' + parseInt(dataTotal) + '\n';
8415
8438
  //console.log('rendering timeliness graph', this.csvGraphStats);
8416
8439
  const itemsTimeliness = divContainer.querySelectorAll('.stat-timeliness');
8417
8440
  for (var i = 0; i < itemsTimeliness.length; i++) {
@@ -8617,6 +8640,8 @@ let SfIEvents = class SfIEvents extends LitElement {
8617
8640
  dataBar2['datasets'].push({});
8618
8641
  dataBar2['datasets'].push({});
8619
8642
  dataBar2['datasets'].push({});
8643
+ dataBar2['datasets'].push({});
8644
+ dataBar2['datasets'].push({});
8620
8645
  dataBar2['datasets'][0]['label'] = 'Scheduled';
8621
8646
  dataBar2['datasets'][0]['data'] = [];
8622
8647
  for (i = 0; i < Object.keys(complianceData).length; i++) {
@@ -8641,12 +8666,18 @@ let SfIEvents = class SfIEvents extends LitElement {
8641
8666
  dataBar2['datasets'][3]['data'].push(complianceData[Object.keys(complianceData)[i]]['complied']);
8642
8667
  }
8643
8668
  dataBar2['datasets'][3]['backgroundColor'] = this.COLOR_COMPLIED;
8644
- dataBar2['datasets'][3]['label'] = 'Complied With Exception';
8645
- dataBar2['datasets'][3]['data'] = [];
8669
+ dataBar2['datasets'][4]['label'] = 'Complied With Gaps';
8670
+ dataBar2['datasets'][4]['data'] = [];
8646
8671
  for (i = 0; i < Object.keys(complianceData).length; i++) {
8647
- dataBar2['datasets'][3]['data'].push(complianceData[Object.keys(complianceData)[i]]['complied-with-exception']);
8672
+ dataBar2['datasets'][4]['data'].push(complianceData[Object.keys(complianceData)[i]]['complied-with-gaps']);
8648
8673
  }
8649
- dataBar2['datasets'][3]['backgroundColor'] = this.COLOR_COMPLIED_WITH_EXCEPTION;
8674
+ dataBar2['datasets'][4]['backgroundColor'] = this.COLOR_COMPLIED_WITH_EXCEPTION;
8675
+ dataBar2['datasets'][5]['label'] = 'Reported Non Compliance';
8676
+ dataBar2['datasets'][5]['data'] = [];
8677
+ for (i = 0; i < Object.keys(complianceData).length; i++) {
8678
+ dataBar2['datasets'][5]['data'].push(complianceData[Object.keys(complianceData)[i]]['reported-non-compliance']);
8679
+ }
8680
+ dataBar2['datasets'][5]['backgroundColor'] = this.COLOR_REPORTED_NON_COMPLIANCE;
8650
8681
  return dataBar2;
8651
8682
  };
8652
8683
  this.populateGraphDataPie = (pieData) => {
@@ -8716,7 +8747,7 @@ let SfIEvents = class SfIEvents extends LitElement {
8716
8747
  // 4
8717
8748
  //console.log('rendering compliance matrix', complianceData);
8718
8749
  const dataBar3 = this.populateGraphDataBarCompliance(complianceData);
8719
- //console.log('rendering compliance matrix', dataBar3);
8750
+ console.log('rendering compliance matrix', dataBar3);
8720
8751
  const ctx4 = divContainer.querySelector('#myChart4');
8721
8752
  this.showGraph(divContainer, 4);
8722
8753
  this.renderChart4(ctx4, 'bar', dataBar3, param + " vs Compliance");
@@ -9286,180 +9317,190 @@ let SfIEvents = class SfIEvents extends LitElement {
9286
9317
  if (this._SfDetailContainer.querySelector('#input-reporter-percentage') != null) {
9287
9318
  percentage = this._SfDetailContainer.querySelector('#input-reporter-percentage').value;
9288
9319
  }
9289
- if (docs.length === 0 && docsOptional.length === 0) {
9320
+ if (Number.isNaN(parseInt(percentage)) || parseInt(percentage) < 0 || parseInt(percentage) > 100) {
9290
9321
  //console.log('reporter comments 3', reportercomments);
9291
9322
  buttonClick.innerHTML = "Save";
9292
- this.setError('No documents uploaded!');
9323
+ this.setError('Invalid Percentage!');
9293
9324
  setTimeout(() => {
9294
9325
  this.clearMessages();
9295
9326
  }, 3000);
9296
9327
  }
9297
9328
  else {
9298
- //console.log('reporterdoc', reporterdoc);
9299
- if (reporterdoc.length === 0) {
9329
+ if (docs.length === 0 && docsOptional.length === 0) {
9330
+ //console.log('reporter comments 3', reportercomments);
9300
9331
  buttonClick.innerHTML = "Save";
9301
- this.setError('Date of completion not selected!');
9332
+ this.setError('No documents uploaded!');
9302
9333
  setTimeout(() => {
9303
9334
  this.clearMessages();
9304
9335
  }, 3000);
9305
9336
  }
9306
9337
  else {
9307
- //console.log('makerscheckers 1', reportercomments);
9308
- if (reportercomments.trim().length === 0) {
9338
+ //console.log('reporterdoc', reporterdoc);
9339
+ if (reporterdoc.length === 0) {
9309
9340
  buttonClick.innerHTML = "Save";
9310
- this.setError('Comments cannot be blank!');
9341
+ this.setError('Date of completion not selected!');
9311
9342
  setTimeout(() => {
9312
9343
  this.clearMessages();
9313
9344
  }, 3000);
9314
9345
  }
9315
9346
  else {
9316
- var clickEvent = new MouseEvent("click", {
9317
- "view": window,
9318
- "bubbles": true,
9319
- "cancelable": false
9320
- });
9321
- this._SfDetailContainer.querySelector('#button-detail-close').dispatchEvent(clickEvent);
9322
- let flagBulk = false;
9323
- if (this.selectedItemIds.length === 0) {
9324
- await this.uploadReport(entityId, locationId, mmddyyyy, listEvent["id"], reportercomments, reporterdoc, docs, event, reportformatvalues, reportformatschema, "notices", percentage);
9325
- console.log('this.events', this.events);
9326
- for (var p = 0; p < this.events[mmdd].length; p++) {
9327
- if (this.events[mmdd][p].id == listEvent.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
9328
- this.events[mmdd][p].documents = docs;
9329
- this.events[mmdd][p].comments.push({ 'author': 'Reporter', 'comment': reportercomments + ` (Documents Saved: ${docs.length}})`, 'timestamp': new Date().toString() });
9330
- this.events[mmdd][p].lastupdated = new Date().toString();
9331
- }
9332
- }
9333
- console.log('uploadReport single');
9334
- if (makercheckers.length > 0) {
9335
- await this.uploadReview(entityId, locationId, mmddyyyy, listEvent["id"], "Auto approved", true, "notices");
9347
+ //console.log('makerscheckers 1', reportercomments);
9348
+ if (reportercomments.trim().length === 0) {
9349
+ buttonClick.innerHTML = "Save";
9350
+ this.setError('Comments cannot be blank!');
9351
+ setTimeout(() => {
9352
+ this.clearMessages();
9353
+ }, 3000);
9354
+ }
9355
+ else {
9356
+ var clickEvent = new MouseEvent("click", {
9357
+ "view": window,
9358
+ "bubbles": true,
9359
+ "cancelable": false
9360
+ });
9361
+ this._SfDetailContainer.querySelector('#button-detail-close').dispatchEvent(clickEvent);
9362
+ let flagBulk = false;
9363
+ if (this.selectedItemIds.length === 0) {
9364
+ await this.uploadReport(entityId, locationId, mmddyyyy, listEvent["id"], reportercomments, reporterdoc, docs, event, reportformatvalues, reportformatschema, "notices", percentage);
9365
+ console.log('this.events', this.events);
9336
9366
  for (var p = 0; p < this.events[mmdd].length; p++) {
9337
9367
  if (this.events[mmdd][p].id == listEvent.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
9338
- this.events[mmdd][p].approved = true;
9339
- // this.events[mmdd][p].documents = docs
9340
- this.events[mmdd][p].comments.push({ 'author': 'Approver', 'comment': `Auto approved (Approved: Yes})`, 'timestamp': new Date().toString() });
9368
+ this.events[mmdd][p].documents = docs;
9369
+ this.events[mmdd][p].comments.push({ 'author': 'Reporter', 'comment': reportercomments + ` (Documents Saved: ${docs.length}})`, 'timestamp': new Date().toString() });
9341
9370
  this.events[mmdd][p].lastupdated = new Date().toString();
9342
9371
  }
9343
9372
  }
9344
- console.log('upload report auto approve single');
9345
- }
9346
- if (this.recentlyReported[mmdd] == null) {
9347
- this.recentlyReported[mmdd] = [];
9348
- }
9349
- this.recentlyReported[mmdd].push(event);
9350
- }
9351
- else {
9352
- let bulkBody = [];
9353
- let bulkBodyReview = [];
9354
- for (var k = 0; k < this.selectedItemIds.length; k++) {
9355
- const selectedId = this.selectedItemIds[k];
9356
- //console.log('selectedid', selectedId);
9357
- const makercheckersL = selectedId.split('-')[5];
9358
- entityId = selectedId.split('-')[7].replace(/_/g, '-');
9359
- locationId = selectedId.split('-')[8].replace(/_/g, '-');
9360
- const eventId = selectedId.split('-')[9].replace(/_/g, '-');
9361
- mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
9362
- //console.log(entityId, locationId, eventId, mmddyyyy);
9363
- // await this.uploadReport(entityId, locationId, mmddyyyy, eventId, reportercomments, reporterdoc, docs, null)
9364
- if (parseInt(makercheckersL) > 0) {
9365
- bulkBodyReview.push({
9366
- "mmddyyyy": mmddyyyy,
9367
- "projectid": this.projectId,
9368
- "type": "report",
9369
- "eventid": eventId,
9370
- "comments": reportercomments,
9371
- "dateofcompletion": reporterdoc,
9372
- "percentage": percentage,
9373
- "entityid": entityId,
9374
- "locationid": locationId,
9375
- "event": null,
9376
- "docs": JSON.stringify(docs),
9377
- "approved": true,
9378
- "username": this.userName,
9379
- "reportformatvalues": reportformatvalues,
9380
- "reportformatschema": reportformatschema,
9381
- "userid": this.userProfileId,
9382
- "userrole": this.myRole,
9383
- "year": this.calendarStartYYYY,
9384
- "module": listEvent.isnotice != null ? "notices" : "events"
9385
- });
9386
- // await this.uploadReview(entityId, locationId, mmddyyyy, eventId, "Auto approved", true);
9373
+ console.log('uploadReport single');
9374
+ if (makercheckers.length > 0) {
9375
+ await this.uploadReview(entityId, locationId, mmddyyyy, listEvent["id"], "Auto approved", true, "notices");
9376
+ for (var p = 0; p < this.events[mmdd].length; p++) {
9377
+ if (this.events[mmdd][p].id == listEvent.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
9378
+ this.events[mmdd][p].approved = true;
9379
+ // this.events[mmdd][p].documents = docs
9380
+ this.events[mmdd][p].comments.push({ 'author': 'Approver', 'comment': `Auto approved (Approved: Yes})`, 'timestamp': new Date().toString() });
9381
+ this.events[mmdd][p].lastupdated = new Date().toString();
9382
+ }
9383
+ }
9384
+ console.log('upload report auto approve single');
9387
9385
  }
9388
- else {
9389
- bulkBody.push({
9390
- "mmddyyyy": mmddyyyy,
9391
- "projectid": this.projectId,
9392
- "type": "report",
9393
- "eventid": eventId,
9394
- "comments": reportercomments,
9395
- "dateofcompletion": reporterdoc,
9396
- "percentage": percentage,
9397
- "entityid": entityId,
9398
- "locationid": locationId,
9399
- "event": null,
9400
- "docs": JSON.stringify(docs),
9401
- "username": this.userName,
9402
- "reportformatvalues": reportformatvalues,
9403
- "reportformatschema": reportformatschema,
9404
- "userid": this.userProfileId,
9405
- "userrole": this.myRole,
9406
- "year": this.calendarStartYYYY,
9407
- "module": listEvent.isnotice != null ? "notices" : "events"
9408
- });
9386
+ if (this.recentlyReported[mmdd] == null) {
9387
+ this.recentlyReported[mmdd] = [];
9409
9388
  }
9410
- // this.setSuccess("Updating " + (k + 1) + "/" + this.selectedItemIds.length + ", please wait...");
9411
- // await this.sleep(2000);
9412
- // this.clearMessages();
9413
- }
9414
- // await this.uploadReportsBulk(bulkBody);
9415
- // await this.fetchBulkReportingData();
9416
- if (bulkBody.length > 0) {
9417
- await this.uploadReportsBulk(bulkBody, bulkBodyReview.length == 0);
9418
- }
9419
- if (bulkBodyReview.length > 0) {
9420
- await this.uploadReportsReviewsBulk(bulkBodyReview);
9389
+ this.recentlyReported[mmdd].push(event);
9421
9390
  }
9422
- await this.fetchBulkReportingData();
9423
- console.log('uploadReport bulk');
9424
- for (var k = 0; k < this.selectedItemIds.length; k++) {
9425
- const selectedId = this.selectedItemIds[k];
9426
- //console.log('selectedid', selectedId);
9427
- let entityId = selectedId.split('-')[7].replace(/_/g, '-');
9428
- let locationId = selectedId.split('-')[8].replace(/_/g, '-');
9429
- const eventId = selectedId.split('-')[9].replace(/_/g, '-');
9430
- mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
9431
- let mmdd = mmddyyyy.split('/')[0] + '/' + mmddyyyy.split('/')[1];
9432
- for (var p = 0; p < this.events[mmdd].length; p++) {
9433
- if (this.events[mmdd][p].id == eventId && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
9434
- this.events[mmdd][p].isbulk = true;
9435
- flagBulk = true;
9436
- if (this.recentlyReported[mmdd] == null) {
9437
- this.recentlyReported[mmdd] = [];
9391
+ else {
9392
+ let bulkBody = [];
9393
+ let bulkBodyReview = [];
9394
+ for (var k = 0; k < this.selectedItemIds.length; k++) {
9395
+ const selectedId = this.selectedItemIds[k];
9396
+ //console.log('selectedid', selectedId);
9397
+ const makercheckersL = selectedId.split('-')[5];
9398
+ entityId = selectedId.split('-')[7].replace(/_/g, '-');
9399
+ locationId = selectedId.split('-')[8].replace(/_/g, '-');
9400
+ const eventId = selectedId.split('-')[9].replace(/_/g, '-');
9401
+ mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
9402
+ //console.log(entityId, locationId, eventId, mmddyyyy);
9403
+ // await this.uploadReport(entityId, locationId, mmddyyyy, eventId, reportercomments, reporterdoc, docs, null)
9404
+ if (parseInt(makercheckersL) > 0) {
9405
+ bulkBodyReview.push({
9406
+ "mmddyyyy": mmddyyyy,
9407
+ "projectid": this.projectId,
9408
+ "type": "report",
9409
+ "eventid": eventId,
9410
+ "comments": reportercomments,
9411
+ "dateofcompletion": reporterdoc,
9412
+ "percentage": percentage,
9413
+ "entityid": entityId,
9414
+ "locationid": locationId,
9415
+ "event": null,
9416
+ "docs": JSON.stringify(docs),
9417
+ "approved": true,
9418
+ "username": this.userName,
9419
+ "reportformatvalues": reportformatvalues,
9420
+ "reportformatschema": reportformatschema,
9421
+ "userid": this.userProfileId,
9422
+ "userrole": this.myRole,
9423
+ "year": this.calendarStartYYYY,
9424
+ "module": listEvent.isnotice != null ? "notices" : "events"
9425
+ });
9426
+ // await this.uploadReview(entityId, locationId, mmddyyyy, eventId, "Auto approved", true);
9427
+ }
9428
+ else {
9429
+ bulkBody.push({
9430
+ "mmddyyyy": mmddyyyy,
9431
+ "projectid": this.projectId,
9432
+ "type": "report",
9433
+ "eventid": eventId,
9434
+ "comments": reportercomments,
9435
+ "dateofcompletion": reporterdoc,
9436
+ "percentage": percentage,
9437
+ "entityid": entityId,
9438
+ "locationid": locationId,
9439
+ "event": null,
9440
+ "docs": JSON.stringify(docs),
9441
+ "username": this.userName,
9442
+ "reportformatvalues": reportformatvalues,
9443
+ "reportformatschema": reportformatschema,
9444
+ "userid": this.userProfileId,
9445
+ "userrole": this.myRole,
9446
+ "year": this.calendarStartYYYY,
9447
+ "module": listEvent.isnotice != null ? "notices" : "events"
9448
+ });
9449
+ }
9450
+ // this.setSuccess("Updating " + (k + 1) + "/" + this.selectedItemIds.length + ", please wait...");
9451
+ // await this.sleep(2000);
9452
+ // this.clearMessages();
9453
+ }
9454
+ // await this.uploadReportsBulk(bulkBody);
9455
+ // await this.fetchBulkReportingData();
9456
+ if (bulkBody.length > 0) {
9457
+ await this.uploadReportsBulk(bulkBody, bulkBodyReview.length == 0);
9458
+ }
9459
+ if (bulkBodyReview.length > 0) {
9460
+ await this.uploadReportsReviewsBulk(bulkBodyReview);
9461
+ }
9462
+ await this.fetchBulkReportingData();
9463
+ console.log('uploadReport bulk');
9464
+ for (var k = 0; k < this.selectedItemIds.length; k++) {
9465
+ const selectedId = this.selectedItemIds[k];
9466
+ //console.log('selectedid', selectedId);
9467
+ let entityId = selectedId.split('-')[7].replace(/_/g, '-');
9468
+ let locationId = selectedId.split('-')[8].replace(/_/g, '-');
9469
+ const eventId = selectedId.split('-')[9].replace(/_/g, '-');
9470
+ mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
9471
+ let mmdd = mmddyyyy.split('/')[0] + '/' + mmddyyyy.split('/')[1];
9472
+ for (var p = 0; p < this.events[mmdd].length; p++) {
9473
+ if (this.events[mmdd][p].id == eventId && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
9474
+ this.events[mmdd][p].isbulk = true;
9475
+ flagBulk = true;
9476
+ if (this.recentlyReported[mmdd] == null) {
9477
+ this.recentlyReported[mmdd] = [];
9478
+ }
9479
+ this.recentlyReported[mmdd].push(this.events[mmdd][p]);
9438
9480
  }
9439
- this.recentlyReported[mmdd].push(this.events[mmdd][p]);
9440
9481
  }
9441
9482
  }
9442
9483
  }
9443
- }
9444
- if (this.mode == "next") {
9445
- this.fetchNext(this.nextPage, this.nextTabRole, this.nextTabStatus);
9446
- }
9447
- else {
9448
- // if(this.getCurrentTab() == this.TAB_CUSTOM) {
9449
- // this.processDateSelection((this._SfCustomContainer as HTMLDivElement));
9450
- // } else
9451
- if (this.getCurrentTab() == this.TAB_FIND) {
9452
- const searchString = this._SfFindContainer.querySelector('#stream-search').value;
9453
- this.processFindSelection(this._SfFindContainer, searchString);
9484
+ if (this.mode == "next") {
9485
+ this.fetchNext(this.nextPage, this.nextTabRole, this.nextTabStatus);
9454
9486
  }
9455
9487
  else {
9456
- if (this.selectedItemIds.length > 0) {
9457
- await this.fetchBulkReportingData();
9488
+ // if(this.getCurrentTab() == this.TAB_CUSTOM) {
9489
+ // this.processDateSelection((this._SfCustomContainer as HTMLDivElement));
9490
+ // } else
9491
+ if (this.getCurrentTab() == this.TAB_FIND) {
9492
+ const searchString = this._SfFindContainer.querySelector('#stream-search').value;
9493
+ this.processFindSelection(this._SfFindContainer, searchString);
9494
+ }
9495
+ else {
9496
+ if (this.selectedItemIds.length > 0) {
9497
+ await this.fetchBulkReportingData();
9498
+ }
9499
+ this.renderAppropriateStream(this.sdate, this.edate, true, flagBulk);
9500
+ // if(currentColumnButton != null) {
9501
+ // currentColumnButton.click();
9502
+ // }
9458
9503
  }
9459
- this.renderAppropriateStream(this.sdate, this.edate, true, flagBulk);
9460
- // if(currentColumnButton != null) {
9461
- // currentColumnButton.click();
9462
- // }
9463
9504
  }
9464
9505
  }
9465
9506
  }
@@ -9550,7 +9591,7 @@ let SfIEvents = class SfIEvents extends LitElement {
9550
9591
  };
9551
9592
  this.fetchEventDetails = async (listEvent, mmddyyyy, currentColumnButton, eventsContainer) => {
9552
9593
  console.log('listEvent', listEvent, listEvent.id);
9553
- let url = "https://" + this.apiId + "/getalleventdetails1";
9594
+ let url = "https://" + this.apiId + "/getalleventdetails";
9554
9595
  //console.log('fetch calendar url', url);
9555
9596
  let urlBody = { "projectid": this.projectId, "userprofileid": this.userProfileId, "role": this.myRole, "eventid": listEvent.id, "entityid": listEvent.entityid, "locationid": listEvent.locationid, "mmddyyyy": mmddyyyy, "year": this.calendarStartYYYY };
9556
9597
  //console.log('urlbody', urlBody);
@@ -10412,197 +10453,207 @@ let SfIEvents = class SfIEvents extends LitElement {
10412
10453
  if (this._SfDetailContainer.querySelector('#input-reporter-percentage') != null) {
10413
10454
  percentage = this._SfDetailContainer.querySelector('#input-reporter-percentage').value;
10414
10455
  }
10415
- if (docs.length === 0 && docsOptional.length === 0) {
10456
+ if (Number.isNaN(parseInt(percentage)) || parseInt(percentage) < 0 || parseInt(percentage) > 100) {
10416
10457
  //console.log('reporter comments 3', reportercomments);
10417
10458
  buttonClick.innerHTML = "Save";
10418
- this.setError('No documents uploaded!');
10459
+ this.setError('Invalid Percentage!');
10419
10460
  setTimeout(() => {
10420
10461
  this.clearMessages();
10421
10462
  }, 3000);
10422
10463
  }
10423
10464
  else {
10424
- //console.log('reporterdoc', reporterdoc);
10425
- if (reporterdoc.length === 0) {
10465
+ if (docs.length === 0 && docsOptional.length === 0) {
10466
+ //console.log('reporter comments 3', reportercomments);
10426
10467
  buttonClick.innerHTML = "Save";
10427
- this.setError('Date of completion not selected!');
10468
+ this.setError('No documents uploaded!');
10428
10469
  setTimeout(() => {
10429
10470
  this.clearMessages();
10430
10471
  }, 3000);
10431
10472
  }
10432
10473
  else {
10433
- //console.log('makerscheckers 1', reportercomments);
10434
- if (reportercomments.trim().length === 0) {
10474
+ //console.log('reporterdoc', reporterdoc);
10475
+ if (reporterdoc.length === 0) {
10435
10476
  buttonClick.innerHTML = "Save";
10436
- this.setError('Comments cannot be blank!');
10477
+ this.setError('Date of completion not selected!');
10437
10478
  setTimeout(() => {
10438
10479
  this.clearMessages();
10439
10480
  }, 3000);
10440
10481
  }
10441
10482
  else {
10442
- var clickEvent = new MouseEvent("click", {
10443
- "view": window,
10444
- "bubbles": true,
10445
- "cancelable": false
10446
- });
10447
- this._SfDetailContainer.querySelector('#button-detail-close').dispatchEvent(clickEvent);
10448
- let flagBulk = false;
10449
- if (this.selectedItemIds.length === 0) {
10450
- //console.log('makerscheckers', makercheckers, reportercomments);
10451
- // console.log('reportformatvalues', reportformatvalues)
10452
- // console.log('reportformatschema',reportformatschema)
10453
- await this.uploadReport(entityId, locationId, mmddyyyy, event["id"], reportercomments, reporterdoc, docs, event, reportformatvalues, reportformatschema, event.isnotice != null ? "notices" : "events", percentage);
10454
- console.log('this.events', this.events);
10455
- for (var p = 0; p < this.events[mmdd].length; p++) {
10456
- if (this.events[mmdd][p].id == event.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
10457
- this.events[mmdd][p].documents = docs;
10458
- this.events[mmdd][p].comments.push({ 'author': 'Reporter', 'comment': reportercomments + ` (Documents Saved: ${docs.length}})`, 'timestamp': new Date().toString() });
10459
- this.events[mmdd][p].lastupdated = new Date().toString();
10460
- }
10461
- }
10462
- if (makercheckers.length > 0) {
10463
- await this.uploadReview(entityId, locationId, mmddyyyy, event["id"], "Auto approved", true, event.isnotice != null ? "notices" : "events");
10483
+ //console.log('makerscheckers 1', reportercomments);
10484
+ if (reportercomments.trim().length === 0) {
10485
+ buttonClick.innerHTML = "Save";
10486
+ this.setError('Comments cannot be blank!');
10487
+ setTimeout(() => {
10488
+ this.clearMessages();
10489
+ }, 3000);
10490
+ }
10491
+ else {
10492
+ var clickEvent = new MouseEvent("click", {
10493
+ "view": window,
10494
+ "bubbles": true,
10495
+ "cancelable": false
10496
+ });
10497
+ this._SfDetailContainer.querySelector('#button-detail-close').dispatchEvent(clickEvent);
10498
+ let flagBulk = false;
10499
+ if (this.selectedItemIds.length === 0) {
10500
+ //console.log('makerscheckers', makercheckers, reportercomments);
10501
+ // console.log('reportformatvalues', reportformatvalues)
10502
+ // console.log('reportformatschema',reportformatschema)
10503
+ await this.uploadReport(entityId, locationId, mmddyyyy, event["id"], reportercomments, reporterdoc, docs, event, reportformatvalues, reportformatschema, event.isnotice != null ? "notices" : "events", percentage);
10504
+ console.log('this.events', this.events);
10464
10505
  for (var p = 0; p < this.events[mmdd].length; p++) {
10465
10506
  if (this.events[mmdd][p].id == event.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
10466
- this.events[mmdd][p].approved = true;
10467
- // this.events[mmdd][p].documents = docs
10468
- this.events[mmdd][p].comments.push({ 'author': 'Auditor', 'comment': `Auto approved (Approved: Yes})`, 'timestamp': new Date().toString() });
10507
+ this.events[mmdd][p].documents = docs;
10508
+ this.events[mmdd][p].comments.push({ 'author': 'Reporter', 'comment': reportercomments + ` (Documents Saved: ${docs.length}})`, 'timestamp': new Date().toString() });
10469
10509
  this.events[mmdd][p].lastupdated = new Date().toString();
10470
10510
  }
10471
10511
  }
10472
- }
10473
- if (this.recentlyReported[mmdd] == null) {
10474
- this.recentlyReported[mmdd] = [];
10475
- }
10476
- this.recentlyReported[mmdd].push(event);
10477
- }
10478
- else {
10479
- let bulkBody = [];
10480
- let bulkBodyReview = [];
10481
- for (var k = 0; k < this.selectedItemIds.length; k++) {
10482
- const selectedId = this.selectedItemIds[k];
10483
- //console.log('selectedid', selectedId);
10484
- const makercheckersL = selectedId.split('-')[5];
10485
- entityId = selectedId.split('-')[7].replace(/_/g, '-');
10486
- locationId = selectedId.split('-')[8].replace(/_/g, '-');
10487
- const eventId = selectedId.split('-')[9].replace(/_/g, '-');
10488
- mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
10489
- //console.log(entityId, locationId, eventId, mmddyyyy);
10490
- // bulkBody.push({
10491
- // "mmddyyyy": mmddyyyy,
10492
- // "projectid": this.projectId,
10493
- // "type": "report",
10494
- // "eventid": eventId,
10495
- // "comments": reportercomments,
10496
- // "dateofcompletion": reporterdoc,
10497
- // "entityid": entityId,
10498
- // "locationid": locationId,
10499
- // "event": null,
10500
- // "docs": JSON.stringify(docs),
10501
- // "username": this.userName,
10502
- // "reportformatvalues": reportformatvalues,
10503
- // "reportformatschema": reportformatschema,
10504
- // "userid": this.userProfileId,
10505
- // "userrole": this.myRole,
10506
- // "year": this.calendarStartYYYY,
10507
- // "module": event.isnotice != null ? "notices" : "events"
10508
- // })
10509
- // await this.uploadReport(entityId, locationId, mmddyyyy, eventId, reportercomments, reporterdoc, docs, null)
10510
- if (parseInt(makercheckersL) > 0) {
10511
- bulkBodyReview.push({
10512
- "mmddyyyy": mmddyyyy,
10513
- "projectid": this.projectId,
10514
- "type": "report",
10515
- "eventid": eventId,
10516
- "comments": reportercomments,
10517
- "dateofcompletion": reporterdoc,
10518
- "percentage": percentage,
10519
- "entityid": entityId,
10520
- "locationid": locationId,
10521
- "event": null,
10522
- "docs": JSON.stringify(docs),
10523
- "approved": true,
10524
- "username": this.userName,
10525
- "reportformatvalues": reportformatvalues,
10526
- "reportformatschema": reportformatschema,
10527
- "userid": this.userProfileId,
10528
- "userrole": this.myRole,
10529
- "year": this.calendarStartYYYY,
10530
- "module": event.isnotice != null ? "notices" : "events"
10531
- });
10532
- // await this.uploadReview(entityId, locationId, mmddyyyy, eventId, "Auto approved", true);
10512
+ if (makercheckers.length > 0) {
10513
+ await this.uploadReview(entityId, locationId, mmddyyyy, event["id"], "Auto approved", true, event.isnotice != null ? "notices" : "events");
10514
+ for (var p = 0; p < this.events[mmdd].length; p++) {
10515
+ if (this.events[mmdd][p].id == event.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
10516
+ this.events[mmdd][p].approved = true;
10517
+ // this.events[mmdd][p].documents = docs
10518
+ this.events[mmdd][p].comments.push({ 'author': 'Auditor', 'comment': `Auto approved (Approved: Yes})`, 'timestamp': new Date().toString() });
10519
+ this.events[mmdd][p].lastupdated = new Date().toString();
10520
+ }
10521
+ }
10533
10522
  }
10534
- else {
10535
- bulkBody.push({
10536
- "mmddyyyy": mmddyyyy,
10537
- "projectid": this.projectId,
10538
- "type": "report",
10539
- "eventid": eventId,
10540
- "comments": reportercomments,
10541
- "dateofcompletion": reporterdoc,
10542
- "percentage": percentage,
10543
- "entityid": entityId,
10544
- "locationid": locationId,
10545
- "event": null,
10546
- "docs": JSON.stringify(docs),
10547
- "username": this.userName,
10548
- "reportformatvalues": reportformatvalues,
10549
- "reportformatschema": reportformatschema,
10550
- "userid": this.userProfileId,
10551
- "userrole": this.myRole,
10552
- "year": this.calendarStartYYYY,
10553
- "module": event.isnotice != null ? "notices" : "events"
10554
- });
10523
+ if (this.recentlyReported[mmdd] == null) {
10524
+ this.recentlyReported[mmdd] = [];
10555
10525
  }
10556
- // this.setSuccess("Updating " + (k + 1) + "/" + this.selectedItemIds.length + ", please wait...");
10557
- // await this.sleep(2000);
10558
- // this.clearMessages();
10559
- }
10560
- if (bulkBody.length > 0) {
10561
- await this.uploadReportsBulk(bulkBody, bulkBodyReview.length == 0);
10562
- }
10563
- // await this.fetchBulkReportingData();
10564
- if (bulkBodyReview.length > 0) {
10565
- await this.uploadReportsReviewsBulk(bulkBodyReview);
10526
+ this.recentlyReported[mmdd].push(event);
10566
10527
  }
10567
- for (var k = 0; k < this.selectedItemIds.length; k++) {
10568
- const selectedId = this.selectedItemIds[k];
10569
- //console.log('selectedid', selectedId);
10570
- entityId = selectedId.split('-')[7].replace(/_/g, '-');
10571
- locationId = selectedId.split('-')[8].replace(/_/g, '-');
10572
- const eventId = selectedId.split('-')[9].replace(/_/g, '-');
10573
- mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
10574
- let mmdd = mmddyyyy.split('/')[0] + '/' + mmddyyyy.split('/')[1];
10575
- for (var p = 0; p < this.events[mmdd].length; p++) {
10576
- if (this.events[mmdd][p].id == eventId && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
10577
- this.events[mmdd][p].isbulk = true;
10578
- flagBulk = true;
10579
- if (this.recentlyReported[mmdd] == null) {
10580
- this.recentlyReported[mmdd] = [];
10528
+ else {
10529
+ let bulkBody = [];
10530
+ let bulkBodyReview = [];
10531
+ for (var k = 0; k < this.selectedItemIds.length; k++) {
10532
+ const selectedId = this.selectedItemIds[k];
10533
+ //console.log('selectedid', selectedId);
10534
+ const makercheckersL = selectedId.split('-')[5];
10535
+ entityId = selectedId.split('-')[7].replace(/_/g, '-');
10536
+ locationId = selectedId.split('-')[8].replace(/_/g, '-');
10537
+ const eventId = selectedId.split('-')[9].replace(/_/g, '-');
10538
+ mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
10539
+ //console.log(entityId, locationId, eventId, mmddyyyy);
10540
+ // bulkBody.push({
10541
+ // "mmddyyyy": mmddyyyy,
10542
+ // "projectid": this.projectId,
10543
+ // "type": "report",
10544
+ // "eventid": eventId,
10545
+ // "comments": reportercomments,
10546
+ // "dateofcompletion": reporterdoc,
10547
+ // "entityid": entityId,
10548
+ // "locationid": locationId,
10549
+ // "event": null,
10550
+ // "docs": JSON.stringify(docs),
10551
+ // "username": this.userName,
10552
+ // "reportformatvalues": reportformatvalues,
10553
+ // "reportformatschema": reportformatschema,
10554
+ // "userid": this.userProfileId,
10555
+ // "userrole": this.myRole,
10556
+ // "year": this.calendarStartYYYY,
10557
+ // "module": event.isnotice != null ? "notices" : "events"
10558
+ // })
10559
+ // await this.uploadReport(entityId, locationId, mmddyyyy, eventId, reportercomments, reporterdoc, docs, null)
10560
+ if (parseInt(makercheckersL) > 0) {
10561
+ bulkBodyReview.push({
10562
+ "mmddyyyy": mmddyyyy,
10563
+ "projectid": this.projectId,
10564
+ "type": "report",
10565
+ "eventid": eventId,
10566
+ "comments": reportercomments,
10567
+ "dateofcompletion": reporterdoc,
10568
+ "percentage": percentage,
10569
+ "entityid": entityId,
10570
+ "locationid": locationId,
10571
+ "event": null,
10572
+ "docs": JSON.stringify(docs),
10573
+ "approved": true,
10574
+ "username": this.userName,
10575
+ "reportformatvalues": reportformatvalues,
10576
+ "reportformatschema": reportformatschema,
10577
+ "userid": this.userProfileId,
10578
+ "userrole": this.myRole,
10579
+ "year": this.calendarStartYYYY,
10580
+ "module": event.isnotice != null ? "notices" : "events"
10581
+ });
10582
+ // await this.uploadReview(entityId, locationId, mmddyyyy, eventId, "Auto approved", true);
10583
+ }
10584
+ else {
10585
+ bulkBody.push({
10586
+ "mmddyyyy": mmddyyyy,
10587
+ "projectid": this.projectId,
10588
+ "type": "report",
10589
+ "eventid": eventId,
10590
+ "comments": reportercomments,
10591
+ "dateofcompletion": reporterdoc,
10592
+ "percentage": percentage,
10593
+ "entityid": entityId,
10594
+ "locationid": locationId,
10595
+ "event": null,
10596
+ "docs": JSON.stringify(docs),
10597
+ "username": this.userName,
10598
+ "reportformatvalues": reportformatvalues,
10599
+ "reportformatschema": reportformatschema,
10600
+ "userid": this.userProfileId,
10601
+ "userrole": this.myRole,
10602
+ "year": this.calendarStartYYYY,
10603
+ "module": event.isnotice != null ? "notices" : "events"
10604
+ });
10605
+ }
10606
+ // this.setSuccess("Updating " + (k + 1) + "/" + this.selectedItemIds.length + ", please wait...");
10607
+ // await this.sleep(2000);
10608
+ // this.clearMessages();
10609
+ }
10610
+ if (bulkBody.length > 0) {
10611
+ await this.uploadReportsBulk(bulkBody, bulkBodyReview.length == 0);
10612
+ }
10613
+ // await this.fetchBulkReportingData();
10614
+ if (bulkBodyReview.length > 0) {
10615
+ await this.uploadReportsReviewsBulk(bulkBodyReview);
10616
+ }
10617
+ for (var k = 0; k < this.selectedItemIds.length; k++) {
10618
+ const selectedId = this.selectedItemIds[k];
10619
+ //console.log('selectedid', selectedId);
10620
+ entityId = selectedId.split('-')[7].replace(/_/g, '-');
10621
+ locationId = selectedId.split('-')[8].replace(/_/g, '-');
10622
+ const eventId = selectedId.split('-')[9].replace(/_/g, '-');
10623
+ mmddyyyy = selectedId.split('-')[10] + '/' + selectedId.split('-')[11] + '/' + selectedId.split('-')[12];
10624
+ let mmdd = mmddyyyy.split('/')[0] + '/' + mmddyyyy.split('/')[1];
10625
+ for (var p = 0; p < this.events[mmdd].length; p++) {
10626
+ if (this.events[mmdd][p].id == eventId && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
10627
+ this.events[mmdd][p].isbulk = true;
10628
+ flagBulk = true;
10629
+ if (this.recentlyReported[mmdd] == null) {
10630
+ this.recentlyReported[mmdd] = [];
10631
+ }
10632
+ this.recentlyReported[mmdd].push(this.events[mmdd][p]);
10581
10633
  }
10582
- this.recentlyReported[mmdd].push(this.events[mmdd][p]);
10583
10634
  }
10584
10635
  }
10585
10636
  }
10586
- }
10587
- if (this.mode == "next") {
10588
- this.fetchNext(this.nextPage, this.nextTabRole, this.nextTabStatus);
10589
- }
10590
- else {
10591
- // if(this.getCurrentTab() == this.TAB_CUSTOM) {
10592
- // this.processDateSelection((this._SfCustomContainer as HTMLDivElement));
10593
- // } else
10594
- if (this.getCurrentTab() == this.TAB_FIND) {
10595
- const searchString = this._SfFindContainer.querySelector('#stream-search').value;
10596
- this.processFindSelection(this._SfFindContainer, searchString);
10637
+ if (this.mode == "next") {
10638
+ this.fetchNext(this.nextPage, this.nextTabRole, this.nextTabStatus);
10597
10639
  }
10598
10640
  else {
10599
- if (this.selectedItemIds.length > 0) {
10600
- await this.fetchBulkReportingData();
10641
+ // if(this.getCurrentTab() == this.TAB_CUSTOM) {
10642
+ // this.processDateSelection((this._SfCustomContainer as HTMLDivElement));
10643
+ // } else
10644
+ if (this.getCurrentTab() == this.TAB_FIND) {
10645
+ const searchString = this._SfFindContainer.querySelector('#stream-search').value;
10646
+ this.processFindSelection(this._SfFindContainer, searchString);
10647
+ }
10648
+ else {
10649
+ if (this.selectedItemIds.length > 0) {
10650
+ await this.fetchBulkReportingData();
10651
+ }
10652
+ this.renderAppropriateStream(this.sdate, this.edate, true, flagBulk);
10653
+ // if(currentColumnButton != null) {
10654
+ // currentColumnButton.click();
10655
+ // }
10601
10656
  }
10602
- this.renderAppropriateStream(this.sdate, this.edate, true, flagBulk);
10603
- // if(currentColumnButton != null) {
10604
- // currentColumnButton.click();
10605
- // }
10606
10657
  }
10607
10658
  }
10608
10659
  }
@@ -14460,9 +14511,12 @@ let SfIEvents = class SfIEvents extends LitElement {
14460
14511
  .color-complied {
14461
14512
  color: #50cf01;
14462
14513
  }
14463
- .color-complied-with-exception {
14514
+ .color-complied-with-gaps {
14464
14515
  color: #ffe505;
14465
14516
  }
14517
+ .color-reported-non-compliance {
14518
+ color: #840B0F;
14519
+ }
14466
14520
  .color-scheduled {
14467
14521
  color: #888888;
14468
14522
  }
@@ -16876,7 +16930,7 @@ let SfIEvents = class SfIEvents extends LitElement {
16876
16930
  }
16877
16931
  };
16878
16932
  this.uploadAudit = async (entityId, locationId, mmddyyyy, eventid, comments, approved, module = "events") => {
16879
- let url = "https://" + this.apiId + "/uploadaudit1";
16933
+ let url = "https://" + this.apiId + "/uploadaudit";
16880
16934
  const body = {
16881
16935
  "mmddyyyy": mmddyyyy,
16882
16936
  "projectid": this.projectId,
@@ -16914,7 +16968,7 @@ let SfIEvents = class SfIEvents extends LitElement {
16914
16968
  }
16915
16969
  };
16916
16970
  this.uploadAuditsBulk = async (bulkBody) => {
16917
- let url = "https://" + this.apiId + "/uploadauditsbulk1";
16971
+ let url = "https://" + this.apiId + "/uploadauditsbulk";
16918
16972
  const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
16919
16973
  const xhr = (await this.prepareXhr(bulkBody, url, this._SfLoader, authorization));
16920
16974
  this._SfLoader.innerHTML = '';
@@ -16930,7 +16984,7 @@ let SfIEvents = class SfIEvents extends LitElement {
16930
16984
  }
16931
16985
  };
16932
16986
  this.uploadReview = async (entityId, locationId, mmddyyyy, eventid, comments, approved, module = "events") => {
16933
- let url = "https://" + this.apiId + "/uploadreview2";
16987
+ let url = "https://" + this.apiId + "/uploadreview";
16934
16988
  const body = {
16935
16989
  "mmddyyyy": mmddyyyy,
16936
16990
  "projectid": this.projectId,
@@ -16972,7 +17026,7 @@ let SfIEvents = class SfIEvents extends LitElement {
16972
17026
  }
16973
17027
  };
16974
17028
  this.uploadReportsReviewsBulk = async (bulkBody) => {
16975
- let url = "https://" + this.apiId + "/uploadreportsreviewsbulk2";
17029
+ let url = "https://" + this.apiId + "/uploadreportsreviewsbulk";
16976
17030
  const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
16977
17031
  const xhr = (await this.prepareXhr(bulkBody, url, this._SfLoader, authorization));
16978
17032
  this._SfLoader.innerHTML = '';
@@ -16991,7 +17045,7 @@ let SfIEvents = class SfIEvents extends LitElement {
16991
17045
  }
16992
17046
  };
16993
17047
  this.uploadReviewsBulk = async (bulkBody) => {
16994
- let url = "https://" + this.apiId + "/uploadreviewsbulk2";
17048
+ let url = "https://" + this.apiId + "/uploadreviewsbulk";
16995
17049
  const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
16996
17050
  const xhr = (await this.prepareXhr(bulkBody, url, this._SfLoader, authorization));
16997
17051
  this._SfLoader.innerHTML = '';
@@ -17010,7 +17064,7 @@ let SfIEvents = class SfIEvents extends LitElement {
17010
17064
  }
17011
17065
  };
17012
17066
  this.uploadReport = async (entityId, locationId, mmddyyyy, eventid, comments, doc, docs, event, reportformatvalues = "", reportformatschema = "", module = "events", percentage = "100") => {
17013
- let url = "https://" + this.apiId + "/uploadreport2";
17067
+ let url = "https://" + this.apiId + "/uploadreport";
17014
17068
  let body = {
17015
17069
  "mmddyyyy": mmddyyyy,
17016
17070
  "projectid": this.projectId,
@@ -17059,7 +17113,7 @@ let SfIEvents = class SfIEvents extends LitElement {
17059
17113
  }
17060
17114
  };
17061
17115
  this.uploadReportsBulk = async (bulkBody, showSuccess = true) => {
17062
- let url = "https://" + this.apiId + "/uploadreportsbulk2";
17116
+ let url = "https://" + this.apiId + "/uploadreportsbulk";
17063
17117
  const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
17064
17118
  const xhr = (await this.prepareXhr(bulkBody, url, this._SfLoader, authorization));
17065
17119
  if (showSuccess) {
@@ -18266,7 +18320,7 @@ let SfIEvents = class SfIEvents extends LitElement {
18266
18320
  };
18267
18321
  this.fetchRegisters = async (searchString = "", meta = "", selectedCountry = "", selectedStatute = "") => {
18268
18322
  let path = "";
18269
- path = "getallfunctionevents1";
18323
+ path = "getallfunctionevents";
18270
18324
  let url = "https://" + this.apiId + "/" + path;
18271
18325
  let locationId = "";
18272
18326
  let entityId = "";
@@ -18319,7 +18373,7 @@ let SfIEvents = class SfIEvents extends LitElement {
18319
18373
  else {
18320
18374
  view = "entity";
18321
18375
  }
18322
- path = "getallcountryevents3";
18376
+ path = "getallcountryevents";
18323
18377
  let sDate = "";
18324
18378
  let eDate = "";
18325
18379
  //console.log('currenttab', this.getCurrentTab());
@@ -19162,7 +19216,7 @@ let SfIEvents = class SfIEvents extends LitElement {
19162
19216
  console.log('eventsData', eventsData);
19163
19217
  console.log('role', role);
19164
19218
  // if(Object.keys(eventsData[role]).length > 0){
19165
- var notStarted = 0, approved = 0, pendingApproval = 0, rejected = 0, inTime = 0, pastDueDate = 0, lateExecuted = 0, lateApproved = 0, lateReported = 0, scheduled = 0, partiallyComplied = 0, notComplied = 0, complied = 0, compliedWithException = 0;
19219
+ var notStarted = 0, approved = 0, pendingApproval = 0, rejected = 0, inTime = 0, pastDueDate = 0, lateExecuted = 0, lateApproved = 0, lateReported = 0, scheduled = 0, partiallyComplied = 0, notComplied = 0, complied = 0, compliedWithGaps = 0, reportedNonCompliance = 0;
19166
19220
  var html = '';
19167
19221
  this.selectedItemIds = [];
19168
19222
  this.selectedStatus = "";
@@ -19202,7 +19256,8 @@ let SfIEvents = class SfIEvents extends LitElement {
19202
19256
  partiallyComplied = partiallyComplied + (complianceStatus == "partially-complied" ? 1 : 0);
19203
19257
  notComplied = notComplied + (complianceStatus == "not-complied" ? 1 : 0);
19204
19258
  complied = complied + (complianceStatus == "complied" ? 1 : 0);
19205
- compliedWithException = compliedWithException + (complianceStatus == "complied-with-exception" ? 1 : 0);
19259
+ compliedWithGaps = compliedWithGaps + (complianceStatus == "complied-with-gaps" ? 1 : 0);
19260
+ reportedNonCompliance = reportedNonCompliance + (complianceStatus == "reported-non-compliance" ? 1 : 0);
19206
19261
  eventsData[role][mmdd][j][this.FLOW_GRAPH_COMPLETENESS] = partStatus;
19207
19262
  eventsData[role][mmdd][j][this.FLOW_GRAPH_TIMELINESS] = lateStatus;
19208
19263
  eventsData[role][mmdd][j][this.FLOW_GRAPH_COMPLIANCE] = complianceStatus;
@@ -20846,9 +20901,12 @@ SfIEvents.styles = css `
20846
20901
  .color-complied {
20847
20902
  color: #50cf01;
20848
20903
  }
20849
- .color-complied-with-exception {
20904
+ .color-complied-with-gaps {
20850
20905
  color: #ffe505;
20851
20906
  }
20907
+ .color-reported-non-compliance {
20908
+ color: #840B0F;
20909
+ }
20852
20910
  .color-scheduled {
20853
20911
  color: #888888;
20854
20912
  }