sf-i-events 1.0.937 → 1.0.938

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.
@@ -1691,6 +1691,8 @@ export class SfIEvents extends LitElement {
1691
1691
 
1692
1692
  registerFilters: { [key: string]: { [key: string]: boolean } } = {};
1693
1693
 
1694
+ suspenseFlag: boolean = false;
1695
+
1694
1696
  tablecols: string[] = []
1695
1697
  static override styles = css`
1696
1698
 
@@ -4589,7 +4591,7 @@ export class SfIEvents extends LitElement {
4589
4591
  html += '<div part="badge-dashboard" id="chip-completeness-1" class="chip stat-completeness d-flex justify-center align-center mr-10 mb-10 no-shrink"><span class="material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;<span>Pending Approval:</span>&nbsp;<span id="graph-pending-approval">DASHBOARD_PENDING_APPROVAL</span></div>';
4590
4592
  html += '<div part="badge-dashboard" id="chip-completeness-2" class="chip stat-completeness d-flex justify-center align-center mr-10 mb-10 no-shrink"><span class="material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;<span>Rejected:</span>&nbsp;<span id="graph-rejected">DASHBOARD_REJECTED</span></div>';
4591
4593
  html += '<div part="badge-dashboard" id="chip-completeness-3" class="chip stat-completeness d-flex justify-center align-center mr-10 mb-10 no-shrink"><span class="material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;<span>Approved:</span>&nbsp;<span id="graph-approved">DASHBOARD_APPROVED</span></div>';
4592
- html += '<div part="badge-dashboard" class="mr-10 mb-10 d-flex align-center no-shrink DASHBOARD_SUSPENSE_CLASS"><span class="material-symbols-outlined color-not-started">question_mark</span>&nbsp;&nbsp;<span>Suspense:</span>&nbsp;<span id="graph-total">DASHBOARD_SUSPENSE</span></div>';
4594
+ html += `<div part="${this.suspenseFlag ? "badge-dashboard-selected" : "badge-dashboard-not-selected"}" id="chip-suspense" class="mr-10 mb-10 d-flex align-center no-shrink DASHBOARD_SUSPENSE_CLASS"><span class="material-symbols-outlined color-not-started">question_mark</span>&nbsp;&nbsp;<span>Suspense:</span>&nbsp;<span id="graph-total">DASHBOARD_SUSPENSE</span></div>`;
4593
4595
 
4594
4596
  html += '<div part="badge-dashboard" id="chip-timeliness-0" class="chip stat-timeliness justify-center align-center mr-10 mb-10 no-shrink late-statuses"><span class="material-icons color-in-time">schedule</span>&nbsp;&nbsp;<span>In Time:</span>&nbsp;<span id="graph-in-time">DASHBOARD_IN_TIME</span></div>';
4595
4597
  html += '<div part="badge-dashboard" id="chip-timeliness-1" class="chip stat-timeliness justify-center align-center mr-10 mb-10 no-shrink late-statuses"><span class="material-icons color-past-due-date">timer</span>&nbsp;&nbsp;<span>Past Due Date:</span>&nbsp;<span id="graph-past-due-date">DASHBOARD_PAST_DUE_DATE</span></div>';
@@ -4799,11 +4801,14 @@ export class SfIEvents extends LitElement {
4799
4801
  const eventIdSanitized = event.id.replace(/-/g, '_');
4800
4802
  const mmddSanitized = mmdd.replace(/\//g, '-');
4801
4803
  const dueDateParts = event.duedate.split('/');
4802
- const isReportedLocation = event.reportedlocationsflag == true
4804
+ const isReportedLocation = event.reportedlocationsflag == true
4805
+ const isSuspense = event.suspense == true
4806
+ const isReviewed = event.review == true
4803
4807
  const showCheckbox = !(hasReportFormat || isBulk || hasCustomReporting || isReportedLocation);
4804
4808
  // const showReportingButton = !hasReportFormat && !hasCustomReporting && event.reporters == null;
4805
4809
  const showReportingButton = !hasReportFormat && !hasCustomReporting && event.concise != null && !isReportedLocation;
4806
4810
  const showLocationRisk = event.concise != null;
4811
+ const showReview = event.concise != null;
4807
4812
  const showLastUpdated = event.concise == null && lastUpdated.length > 0;
4808
4813
  // console.log('showReportingButton', showReportingButton)
4809
4814
  console.log('isReportedLocation', isReportedLocation, 'showCheckbox', showCheckbox, 'showReportingButton', showReportingButton, 'showLocationRisk', showLocationRisk, 'showLastUpdated', showLastUpdated);
@@ -4815,7 +4820,7 @@ export class SfIEvents extends LitElement {
4815
4820
  type="checkbox"
4816
4821
  />
4817
4822
  ${isBulk ? '<div class="lds-dual-ring1 bulk-loader mr-10"></div>' : ''}
4818
- ${isReportedLocation ? '<div class="material-symbols-outlined mr-10">arrow_or_edge</div>' : ''}
4823
+ ${(isReportedLocation && !isSuspense) ? '<div class="material-symbols-outlined mr-10">arrow_or_edge</div>' : ''}
4819
4824
  <sf-i-elastic-text exportparts="highlight,highlight-count"
4820
4825
  class="stream-event-title${!isBulk ? ' button-event-title' : ''}"
4821
4826
  id="stream-event-title-${mmddSanitized}-${itemNumber}-${moduleType}-${(isReportedLocation) ? 'reportedlocations' : ''}"
@@ -4838,6 +4843,16 @@ export class SfIEvents extends LitElement {
4838
4843
  edit_note
4839
4844
  </button>
4840
4845
  ` : ''}
4846
+ ${showReview ? `
4847
+ <input
4848
+ type="checkbox"
4849
+ id="input-checkbox-review-${mmddSanitized}-${itemNumber}"
4850
+ part="input-checkbox"
4851
+ class="material-icons ml-10 input-checkbox-review"
4852
+ ${isReviewed ? 'checked' : ''}
4853
+ />
4854
+ <label for="input-checkbox-review-${mmddSanitized}-${itemNumber}" part="label-checkbox" class="label-checkbox">${isReviewed ? 'Reviewed' : 'Review'}</label>
4855
+ ` : ''}
4841
4856
  ${showLastUpdated ? `
4842
4857
  &nbsp;&nbsp;<div part="event-last-updated-time" class="d-flex align-center">
4843
4858
  ${lastUpdated}
@@ -5172,9 +5187,9 @@ export class SfIEvents extends LitElement {
5172
5187
 
5173
5188
  let graphParam = this.getGraphParam(event);
5174
5189
  // console.log("graphParam", graphParam.split(';')[0]);
5175
- html += '<div class="d-flex align-center event-user-labels-container"><div part="badge-filter-name" class="graphparamname graphparamname1 mb-20' + (event.concise == null ? "" : ' hide') + '">' + graphParam.split(';')[0] + '</div>' + reporterStr + approverStr + ((event.concise == null && ((event.reportformat == null || event.reportformat.length == 0) && (event.customreporting == null) && (event.reportedlocationsflag != true))) ? ('<button id="button-list-reporting-' + mmdd.replace('/', '-') + '-' + j + '-" part="button-list-reporting" class="material-icons ml-10 mb-20 button-list-reporting">edit_note</button>') : '') + '</div>';
5190
+ html += '<div class="d-flex align-center event-user-labels-container"><div part="badge-filter-name" class="graphparamname graphparamname1 mb-20' + (event.concise == null ? "" : ' hide') + '">' + graphParam.split(';')[0] + '</div>' + reporterStr + approverStr + ((event.concise == null && ((event.reportformat == null || event.reportformat.length == 0) && (event.customreporting == null) && (event.reportedlocationsflag != true))) ? ('<button id="button-list-reporting-' + mmdd.replace('/', '-') + '-' + j + '-" part="button-list-reporting" class="material-icons ml-10 mb-20 button-list-reporting">edit_note</button>') : '') + ((event.module == "compliances" || event.module == null) ? ('<input type="checkbox" id="input-checkbox-review-' + mmdd.replace('/', '-') + '-' + j + '" part="input-checkbox" class="material-icons mb-20 ml-10 input-checkbox-review"' + (event.review ? 'checked' : '') + '/><label for="input-checkbox-review-' + mmdd.replace('/', '-') + '-' + j + '" part="label-checkbox" class="label-checkbox mb-20">' + (event.review ? 'Reviewed' : 'Review') + '</label></div>') : '</div>');
5176
5191
  // }
5177
-
5192
+
5178
5193
  return html;
5179
5194
 
5180
5195
  }
@@ -6241,7 +6256,7 @@ export class SfIEvents extends LitElement {
6241
6256
  dateOfCompletion = "";
6242
6257
  }
6243
6258
  console.log('dateOfCompletion', dateOfCompletion)
6244
- await this.fetchEventDetails(event, mmddyyyy, null, eventsContainer, true, listReportingContainer, reportercomments, approvercomments, inputReportingPercentage, selectReportedLocation, documents, dateOfCompletion);
6259
+ await this.fetchEventDetails(event, mmddyyyy, null, eventsContainer, "", "", true, listReportingContainer, reportercomments, approvercomments, inputReportingPercentage, selectReportedLocation, documents, dateOfCompletion);
6245
6260
  })
6246
6261
  if (this.mode == "consumer" || this.mode == "next") {
6247
6262
  let inputReportingPercentage = listReportingContainer.querySelector('#input-reporter-percentage') as HTMLInputElement;
@@ -7048,6 +7063,25 @@ export class SfIEvents extends LitElement {
7048
7063
  })
7049
7064
  }
7050
7065
  }
7066
+
7067
+ attachReviewListeners = (eventsContainer: HTMLDivElement) => {
7068
+ let inputReviews = eventsContainer.querySelectorAll('.input-checkbox-review') as NodeListOf<HTMLInputElement>
7069
+ for (let inputReview of inputReviews) {
7070
+ inputReview?.addEventListener('click', async (ev: any) => {
7071
+ const id = ev.target.id;
7072
+ const idArr = id.split("-")
7073
+ const mmdd = idArr[3] + "/" + idArr[4];
7074
+ const yyyy = this.getYearFromMonthBetween(this.sdate, this.edate, idArr[3]);
7075
+ // const i = idArr[5];
7076
+ const j = idArr[5];
7077
+ console.log('review clicked', mmdd, yyyy, j, this.events[mmdd][j], ev.target.checked);
7078
+ let eventKey = this.events[mmdd][j].entityid + ';' + this.events[mmdd][j].locationid + ';' + this.events[mmdd][j].id;
7079
+ await this.markReviewed(eventKey, yyyy, ev.target.checked);
7080
+ const buttonRefresh = eventsContainer.querySelector('#button-refresh') as HTMLButtonElement
7081
+ buttonRefresh.click();
7082
+ })
7083
+ }
7084
+ }
7051
7085
  renderStreamEvents = (index: number, month: number, year: number, showGraph: boolean = true, showBackgroundButton: boolean = false) => {
7052
7086
 
7053
7087
  //console.log('flowgraph renderStreamEvents', this.flowGraph);
@@ -7224,11 +7258,18 @@ export class SfIEvents extends LitElement {
7224
7258
  this.processDateSelection(eventsContainer)
7225
7259
  })
7226
7260
 
7261
+ const chipSuspense = eventsContainer.querySelector('#chip-suspense') as HTMLDivElement
7262
+ chipSuspense?.addEventListener('click', async () => {
7263
+ this.suspenseFlag = !this.suspenseFlag
7264
+ this.processDateSelection(eventsContainer)
7265
+ })
7266
+
7227
7267
  this.attachListReportingListeners(eventsContainer);
7268
+ this.attachReviewListeners(eventsContainer);
7228
7269
  const buttonArr = eventsContainer.querySelectorAll('.button-expand') as NodeListOf<HTMLButtonElement>;
7229
7270
 
7230
7271
  for (var i = 0; i < buttonArr.length; i++) {
7231
-
7272
+ let indexPrevNext = i;
7232
7273
  buttonArr[i].addEventListener('click', (ev: any) => {
7233
7274
 
7234
7275
  const id = ev.target.id;
@@ -7263,7 +7304,39 @@ export class SfIEvents extends LitElement {
7263
7304
 
7264
7305
 
7265
7306
  // this.renderEventDetail(this.events[mmdd][j], mmdd + "/" + yyyy, null);
7266
- this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, eventsContainer);
7307
+ let prevString = "";
7308
+ let flagPrev = true;
7309
+ let indexPrev = indexPrevNext
7310
+ while (flagPrev) {
7311
+ if (indexPrev > 0) {
7312
+ if (Util.isVisible((buttonArr[indexPrev - 1] as HTMLButtonElement))) {
7313
+ prevString = (buttonArr[indexPrev - 1] as HTMLButtonElement).id;
7314
+ flagPrev = false;
7315
+ } else {
7316
+ prevString = "";
7317
+ indexPrev--
7318
+ }
7319
+ } else {
7320
+ flagPrev = false;
7321
+ }
7322
+ }
7323
+ let nextString = "";
7324
+ let flagNext = true;
7325
+ let indexNext = indexPrevNext
7326
+ while (flagNext) {
7327
+ if (indexNext < buttonArr.length - 1) {
7328
+ if (Util.isVisible((buttonArr[indexNext + 1] as HTMLButtonElement))) {
7329
+ nextString = (buttonArr[indexNext + 1] as HTMLButtonElement).id;
7330
+ flagNext = false;
7331
+ } else {
7332
+ nextString = "";
7333
+ indexNext++
7334
+ }
7335
+ } else {
7336
+ flagNext = false;
7337
+ }
7338
+ }
7339
+ this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, eventsContainer, prevString, nextString);
7267
7340
  }
7268
7341
  })
7269
7342
 
@@ -7271,7 +7344,7 @@ export class SfIEvents extends LitElement {
7271
7344
  const titleArr = eventsContainer.querySelectorAll('.button-event-title') as NodeListOf<HTMLButtonElement>;
7272
7345
 
7273
7346
  for (var i = 0; i < titleArr.length; i++) {
7274
-
7347
+ let indexPrevNext = i;
7275
7348
  titleArr[i].addEventListener('click', (ev: any) => {
7276
7349
 
7277
7350
  const id = ev.target.id;
@@ -7307,7 +7380,49 @@ export class SfIEvents extends LitElement {
7307
7380
 
7308
7381
  // (this._SfDetailContainer as HTMLDivElement).style.display = 'block'
7309
7382
 
7310
-
7383
+ let prevString = "";
7384
+ let flagPrev = true;
7385
+ let indexPrev = indexPrevNext
7386
+ while (flagPrev) {
7387
+ if (indexPrev > 0) {
7388
+ if (Util.isVisible((titleArr[indexPrev - 1] as HTMLButtonElement))) {
7389
+ prevString = (titleArr[indexPrev - 1] as HTMLButtonElement).id;
7390
+ let prevIdArr = prevString.split("-")
7391
+ if ((prevIdArr[7] ?? "") == "reportedlocations") {
7392
+ prevString = "";
7393
+ indexPrev--;
7394
+ } else {
7395
+ flagPrev = false;
7396
+ }
7397
+ } else {
7398
+ prevString = "";
7399
+ indexPrev--;
7400
+ }
7401
+ } else {
7402
+ flagPrev = false;
7403
+ }
7404
+ }
7405
+ let nextString = "";
7406
+ let flagNext = true;
7407
+ let indexNext = indexPrevNext
7408
+ while (flagNext) {
7409
+ if (indexNext < titleArr.length - 1) {
7410
+ if (Util.isVisible((titleArr[indexNext + 1] as HTMLButtonElement))) {
7411
+ nextString = (titleArr[indexNext + 1] as HTMLButtonElement).id;
7412
+ let nextIdArr = nextString.split("-")
7413
+ if ((nextIdArr[7] ?? "") == "reportedlocations") {
7414
+ nextString = "";
7415
+ indexNext++;
7416
+ } else {
7417
+ flagNext = false;
7418
+ }
7419
+ } else {
7420
+ indexNext++;
7421
+ }
7422
+ } else {
7423
+ flagNext = false;
7424
+ }
7425
+ }
7311
7426
 
7312
7427
  // this.renderEventDetail(this.events[mmdd][j], mmdd + "/" + yyyy, null);
7313
7428
  this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, eventsContainer);
@@ -11826,11 +11941,23 @@ export class SfIEvents extends LitElement {
11826
11941
  this.renderThis(index, showGraph, showBackgroundButton);
11827
11942
  })
11828
11943
 
11944
+ const chipSuspense = (this._SfThisContainer as HTMLDivElement).querySelector('#chip-suspense') as HTMLDivElement
11945
+ chipSuspense?.addEventListener('click', async () => {
11946
+ this.suspenseFlag = !this.suspenseFlag
11947
+ this.flowGraph = this.FLOW_GRAPH_COMPLETENESS;
11948
+ this.currentColumnIndex = index + "";
11949
+ const dateResult = this.calculateStartAndEndDateOfThis(index);
11950
+ // await this.fetchAndYearlyRenderUserCalendar_2(dateResult.startDate, dateResult.endDate);
11951
+ await this.renderWithFeatures(dateResult.startDate, dateResult.endDate);
11952
+ this.renderThis(index, showGraph, showBackgroundButton);
11953
+ })
11954
+
11829
11955
  this.attachListReportingListeners(this._SfThisContainer as HTMLDivElement);
11956
+ this.attachReviewListeners(this._SfThisContainer as HTMLDivElement);
11830
11957
  const buttonArr = (this._SfThisContainer as HTMLDivElement).querySelectorAll('.button-expand') as NodeListOf<HTMLButtonElement>;
11831
11958
 
11832
11959
  for (i = 0; i < buttonArr.length; i++) {
11833
-
11960
+ let indexPrevNext = i;
11834
11961
  buttonArr[i].addEventListener('click', (ev: any) => {
11835
11962
 
11836
11963
  const id = ev.target.id;
@@ -11862,9 +11989,40 @@ export class SfIEvents extends LitElement {
11862
11989
  // (this._SfDetailContainer as HTMLDivElement).style.display = 'block'
11863
11990
 
11864
11991
 
11865
-
11992
+ let prevString = "";
11993
+ let flagPrev = true;
11994
+ let indexPrev = indexPrevNext
11995
+ while (flagPrev) {
11996
+ if (indexPrev > 0) {
11997
+ if (Util.isVisible((buttonArr[indexPrev - 1] as HTMLButtonElement))) {
11998
+ prevString = (buttonArr[indexPrev - 1] as HTMLButtonElement).id;
11999
+ flagPrev = false;
12000
+ } else {
12001
+ prevString = "";
12002
+ indexPrev--
12003
+ }
12004
+ } else {
12005
+ flagPrev = false;
12006
+ }
12007
+ }
12008
+ let nextString = "";
12009
+ let flagNext = true;
12010
+ let indexNext = indexPrevNext
12011
+ while (flagNext) {
12012
+ if (indexNext < buttonArr.length - 1) {
12013
+ if (Util.isVisible((buttonArr[indexNext + 1] as HTMLButtonElement))) {
12014
+ nextString = (buttonArr[indexNext + 1] as HTMLButtonElement).id;
12015
+ flagNext = false;
12016
+ } else {
12017
+ nextString = "";
12018
+ indexNext++
12019
+ }
12020
+ } else {
12021
+ flagNext = false;
12022
+ }
12023
+ }
11866
12024
  // this.renderEventDetail(this.events[mmdd][j], mmdd + "/" + yyyy, (this._SfThisContainer as HTMLDivElement).querySelector('#stream-month-'+this.currentColumnIndex) as HTMLButtonElement);
11867
- this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, (this._SfThisContainer as HTMLDivElement).querySelector('#stream-month-' + this.currentColumnIndex) as HTMLButtonElement, this._SfThisContainer as HTMLDivElement);
12025
+ this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, (this._SfThisContainer as HTMLDivElement).querySelector('#stream-month-' + this.currentColumnIndex) as HTMLButtonElement, this._SfThisContainer as HTMLDivElement, prevString, nextString);
11868
12026
  }
11869
12027
  })
11870
12028
 
@@ -11873,7 +12031,7 @@ export class SfIEvents extends LitElement {
11873
12031
  const titleArr = (this._SfThisContainer as HTMLDivElement).querySelectorAll('.button-event-title') as NodeListOf<HTMLButtonElement>;
11874
12032
 
11875
12033
  for (var i = 0; i < titleArr.length; i++) {
11876
-
12034
+ let indexPrevNext = i;
11877
12035
  titleArr[i].addEventListener('click', (ev: any) => {
11878
12036
 
11879
12037
  const id = ev.target.id;
@@ -11910,9 +12068,51 @@ export class SfIEvents extends LitElement {
11910
12068
  // (this._SfDetailContainer as HTMLDivElement).style.display = 'block'
11911
12069
 
11912
12070
 
11913
-
12071
+ let prevString = "";
12072
+ let flagPrev = true;
12073
+ let indexPrev = indexPrevNext
12074
+ while (flagPrev) {
12075
+ if (indexPrev > 0) {
12076
+ if (Util.isVisible((titleArr[indexPrev - 1] as HTMLButtonElement))) {
12077
+ prevString = (titleArr[indexPrev - 1] as HTMLButtonElement).id;
12078
+ let prevIdArr = prevString.split("-")
12079
+ if ((prevIdArr[7] ?? "") == "reportedlocations") {
12080
+ prevString = "";
12081
+ indexPrev--;
12082
+ } else {
12083
+ flagPrev = false;
12084
+ }
12085
+ } else {
12086
+ prevString = "";
12087
+ indexPrev--;
12088
+ }
12089
+ } else {
12090
+ flagPrev = false;
12091
+ }
12092
+ }
12093
+ let nextString = "";
12094
+ let flagNext = true;
12095
+ let indexNext = indexPrevNext
12096
+ while (flagNext) {
12097
+ if (indexNext < titleArr.length - 1) {
12098
+ if (Util.isVisible((titleArr[indexNext + 1] as HTMLButtonElement))) {
12099
+ nextString = (titleArr[indexNext + 1] as HTMLButtonElement).id;
12100
+ let nextIdArr = nextString.split("-")
12101
+ if ((nextIdArr[7] ?? "") == "reportedlocations") {
12102
+ nextString = "";
12103
+ indexNext++;
12104
+ } else {
12105
+ flagNext = false;
12106
+ }
12107
+ } else {
12108
+ indexNext++;
12109
+ }
12110
+ } else {
12111
+ flagNext = false;
12112
+ }
12113
+ }
11914
12114
  // this.renderEventDetail(this.events[mmdd][j], mmdd + "/" + yyyy, null);
11915
- this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, (this._SfThisContainer as HTMLDivElement));
12115
+ this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, (this._SfThisContainer as HTMLDivElement), prevString, nextString);
11916
12116
  }
11917
12117
  })
11918
12118
 
@@ -12447,13 +12647,29 @@ export class SfIEvents extends LitElement {
12447
12647
  this.renderStream(index, showGraph, showBackgroundButton);
12448
12648
  })
12449
12649
 
12650
+ const chipSuspense = (this._SfStreamContainer as HTMLDivElement).querySelector('#chip-suspense') as HTMLDivElement
12651
+ chipSuspense?.addEventListener('click', async () => {
12652
+ this.suspenseFlag = !this.suspenseFlag
12653
+ const dateResult = this.calculateStartAndEndDateOfStream(index);
12654
+ const monthResult = this.calculateMonthFromIndex(index);
12655
+ console.log('monthResult', monthResult);
12656
+ console.log('dateresult', dateResult);
12657
+ this.currentColumnIndex = index + "";
12658
+ if (dateResult != null) {
12659
+ await this.renderWithFeatures(dateResult.startDate, dateResult.endDate, "", "yes", ("0" + monthResult).slice(-2));
12660
+ // await this.fetchAndYearlyRenderUserCalendar_2(dateResult.startDate, dateResult.endDate,"","yes",("0" + monthResult).slice(-2));
12661
+ }
12662
+ this.flowGraph = this.FLOW_GRAPH_COMPLETENESS;
12663
+ this.renderStream(index, showGraph, showBackgroundButton);
12664
+ })
12665
+
12450
12666
  this.attachListReportingListeners(this._SfStreamContainer as HTMLDivElement);
12667
+ this.attachReviewListeners(this._SfStreamContainer as HTMLDivElement);
12451
12668
  const buttonArr = (this._SfStreamContainer as HTMLDivElement).querySelectorAll('.button-expand') as NodeListOf<HTMLButtonElement>;
12452
12669
 
12453
12670
  for (i = 0; i < buttonArr.length; i++) {
12454
-
12671
+ let indexPrevNext = i;
12455
12672
  buttonArr[i].addEventListener('click', (ev: any) => {
12456
-
12457
12673
  const id = ev.target.id;
12458
12674
  const idArr = id.split("-")
12459
12675
  const mmdd = idArr[3] + "/" + idArr[4];
@@ -12486,10 +12702,42 @@ export class SfIEvents extends LitElement {
12486
12702
  //console.log('commentsinlist', (this._SfStreamContainer as HTMLDivElement).querySelector('#stream-month-'+this.currentColumnIndex) as HTMLButtonElement, this.events[mmdd][j].comments, mmdd, j);
12487
12703
 
12488
12704
 
12489
-
12705
+ let prevString = "";
12706
+ let flagPrev = true;
12707
+ let indexPrev = indexPrevNext
12708
+ while (flagPrev) {
12709
+ if (indexPrev > 0) {
12710
+ if (Util.isVisible((buttonArr[indexPrev - 1] as HTMLButtonElement))) {
12711
+ prevString = (buttonArr[indexPrev - 1] as HTMLButtonElement).id;
12712
+ flagPrev = false;
12713
+ } else {
12714
+ prevString = "";
12715
+ indexPrev--
12716
+ }
12717
+ } else {
12718
+ flagPrev = false;
12719
+ }
12720
+ }
12721
+ let nextString = "";
12722
+ let flagNext = true;
12723
+ let indexNext = indexPrevNext
12724
+ while (flagNext) {
12725
+ if (indexNext < buttonArr.length - 1) {
12726
+ if (Util.isVisible((buttonArr[indexNext + 1] as HTMLButtonElement))) {
12727
+ nextString = (buttonArr[indexNext + 1] as HTMLButtonElement).id;
12728
+ flagNext = false;
12729
+ } else {
12730
+ nextString = "";
12731
+ indexNext++
12732
+ }
12733
+ } else {
12734
+ flagNext = false;
12735
+ }
12736
+ }
12490
12737
  // this.renderEventDetail(this.events[mmdd][j], mmdd + "/" + yyyy, (this._SfStreamContainer as HTMLDivElement).querySelector('#stream-month-'+this.currentColumnIndex) as HTMLButtonElement);
12491
12738
  // console.log('errorFetchEvent', mmdd, j, buttonArr[i].outerHTML, idArr);
12492
- this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, (this._SfStreamContainer as HTMLDivElement).querySelector('#stream-month-' + this.currentColumnIndex) as HTMLButtonElement, this._SfStreamContainer as HTMLDivElement);
12739
+ console.log('previous event clicked', buttonArr[indexPrevNext - 1], prevString, indexPrevNext);
12740
+ this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, (this._SfStreamContainer as HTMLDivElement).querySelector('#stream-month-' + this.currentColumnIndex) as HTMLButtonElement, this._SfStreamContainer as HTMLDivElement, prevString, nextString);
12493
12741
  }
12494
12742
 
12495
12743
  })
@@ -12499,7 +12747,7 @@ export class SfIEvents extends LitElement {
12499
12747
  const titleArr = (this._SfStreamContainer as HTMLDivElement).querySelectorAll('.button-event-title') as NodeListOf<HTMLButtonElement>;
12500
12748
 
12501
12749
  for (var i = 0; i < titleArr.length; i++) {
12502
-
12750
+ let indexPrevNext = i;
12503
12751
  titleArr[i].addEventListener('click', (ev: any) => {
12504
12752
 
12505
12753
  const id = ev.target.id;
@@ -12536,9 +12784,51 @@ export class SfIEvents extends LitElement {
12536
12784
  // (this._SfDetailContainer as HTMLDivElement).style.display = 'block'
12537
12785
 
12538
12786
 
12539
-
12787
+ let prevString = "";
12788
+ let flagPrev = true;
12789
+ let indexPrev = indexPrevNext
12790
+ while (flagPrev) {
12791
+ if (indexPrev > 0) {
12792
+ if (Util.isVisible((titleArr[indexPrev - 1] as HTMLButtonElement))) {
12793
+ prevString = (titleArr[indexPrev - 1] as HTMLButtonElement).id;
12794
+ let prevIdArr = prevString.split("-")
12795
+ if ((prevIdArr[7] ?? "") == "reportedlocations") {
12796
+ prevString = "";
12797
+ indexPrev--;
12798
+ } else {
12799
+ flagPrev = false;
12800
+ }
12801
+ } else {
12802
+ prevString = "";
12803
+ indexPrev--;
12804
+ }
12805
+ } else {
12806
+ flagPrev = false;
12807
+ }
12808
+ }
12809
+ let nextString = "";
12810
+ let flagNext = true;
12811
+ let indexNext = indexPrevNext
12812
+ while (flagNext) {
12813
+ if (indexNext < titleArr.length - 1) {
12814
+ if (Util.isVisible((titleArr[indexNext + 1] as HTMLButtonElement))) {
12815
+ nextString = (titleArr[indexNext + 1] as HTMLButtonElement).id;
12816
+ let nextIdArr = nextString.split("-")
12817
+ if ((nextIdArr[7] ?? "") == "reportedlocations") {
12818
+ nextString = "";
12819
+ indexNext++;
12820
+ } else {
12821
+ flagNext = false;
12822
+ }
12823
+ } else {
12824
+ indexNext++;
12825
+ }
12826
+ } else {
12827
+ flagNext = false;
12828
+ }
12829
+ }
12540
12830
  // this.renderEventDetail(this.events[mmdd][j], mmdd + "/" + yyyy, null);
12541
- this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, (this._SfStreamContainer as HTMLDivElement));
12831
+ this.fetchEventDetails(this.events[mmdd][j], mmdd + "/" + yyyy, null, (this._SfStreamContainer as HTMLDivElement), prevString, nextString);
12542
12832
  }
12543
12833
  })
12544
12834
 
@@ -17434,7 +17724,7 @@ export class SfIEvents extends LitElement {
17434
17724
  }
17435
17725
  }
17436
17726
 
17437
- fetchEventDetails = async (listEvent: any, mmddyyyy: any, currentColumnButton: HTMLButtonElement | null, eventsContainer: HTMLDivElement, flagUploadGuidance: boolean = false, listEventContainer: HTMLDivElement | null = null, reportercomments: string | null = null, approvercomments: string | null = null, inputReportingPercentage: string | null = null, selectReportedLocation: string | null = null, documents: any | null = null, dateOfCompletion: string | null = null) => {
17727
+ fetchEventDetails = async (listEvent: any, mmddyyyy: any, currentColumnButton: HTMLButtonElement | null, eventsContainer: HTMLDivElement, previousId: string = "", nextId: string = "", flagUploadGuidance: boolean = false, listEventContainer: HTMLDivElement | null = null, reportercomments: string | null = null, approvercomments: string | null = null, inputReportingPercentage: string | null = null, selectReportedLocation: string | null = null, documents: any | null = null, dateOfCompletion: string | null = null) => {
17438
17728
  console.log('listEvent', listEvent, listEvent.id)
17439
17729
  let url = "https://" + this.apiId + "/getalleventdetails";
17440
17730
 
@@ -17476,7 +17766,7 @@ export class SfIEvents extends LitElement {
17476
17766
  this.renderListReporting(listEventContainer, data, mmddyyyy, eventsContainer)
17477
17767
  }
17478
17768
  } else {
17479
- this.renderEventDetail(jsonRespose.data, mmddyyyy, currentColumnButton, eventsContainer);
17769
+ this.renderEventDetail(jsonRespose.data, mmddyyyy, currentColumnButton, eventsContainer, previousId, nextId);
17480
17770
  }
17481
17771
 
17482
17772
  } else {
@@ -17498,9 +17788,9 @@ export class SfIEvents extends LitElement {
17498
17788
  }
17499
17789
  }
17500
17790
 
17501
- renderEventDetail = (event: any, mmddyyyy: any, currentColumnButton: HTMLButtonElement | null, eventsContainer: HTMLDivElement) => {
17791
+ renderEventDetail = (event: any, mmddyyyy: any, currentColumnButton: HTMLButtonElement | null, eventsContainer: HTMLDivElement, previousId: string, nextId: string) => {
17502
17792
  console.log('event details', event, mmddyyyy, currentColumnButton == null ? "null currentColumnButton" : currentColumnButton.id);
17503
-
17793
+ console.log('previousid', previousId, 'nextid', nextId);
17504
17794
  let comments, docs, approved, /*dateOfCompletion,*/ makercheckers: Array<string>, docsOptional: boolean | any, documentType: string | any;
17505
17795
  let entityId: string = "";
17506
17796
  let locationId: string = "";
@@ -17555,6 +17845,15 @@ export class SfIEvents extends LitElement {
17555
17845
 
17556
17846
  `;
17557
17847
 
17848
+ if (previousId != "" || nextId != "") {
17849
+ html += `
17850
+ <div part="compliance-detail-prev-next" class="d-flex justify-between m-20">
17851
+ <button id="button-detail-previous" part="button-icon" class="material-icons${previousId != "" ? "" : " invisible"}">chevron_left</button>
17852
+ <button id="button-detail-next" part="button-icon" class="material-icons${nextId != "" ? "" : " invisible"}">chevron_right</button>
17853
+ </div>
17854
+ `
17855
+ }
17856
+
17558
17857
  if (this.selectedItemIds.length > 1) {
17559
17858
 
17560
17859
  html += `
@@ -18016,6 +18315,24 @@ export class SfIEvents extends LitElement {
18016
18315
 
18017
18316
  });
18018
18317
 
18318
+ (this._SfDetailContainer as HTMLDivElement).querySelector('#button-detail-previous')?.addEventListener('click', () => {
18319
+ var clickEvent = new MouseEvent("click", {
18320
+ "view": window,
18321
+ "bubbles": true,
18322
+ "cancelable": false
18323
+ });
18324
+ ((eventsContainer as HTMLDivElement).querySelector('#' + previousId) as HTMLElement)?.dispatchEvent(clickEvent);
18325
+ });
18326
+
18327
+ (this._SfDetailContainer as HTMLDivElement).querySelector('#button-detail-next')?.addEventListener('click', () => {
18328
+ var clickEvent = new MouseEvent("click", {
18329
+ "view": window,
18330
+ "bubbles": true,
18331
+ "cancelable": false
18332
+ });
18333
+ ((eventsContainer as HTMLDivElement).querySelector('#' + nextId) as HTMLElement)?.dispatchEvent(clickEvent);
18334
+ });
18335
+
18019
18336
  (this._SfDetailContainer as HTMLDivElement).querySelector('.head-basic')?.addEventListener('click', () => {
18020
18337
 
18021
18338
  //console.log('head basic clicked', ((this._SfDetailContainer as HTMLDivElement).querySelector('.body-basic') as HTMLDivElement).style.display);
@@ -24010,7 +24327,7 @@ export class SfIEvents extends LitElement {
24010
24327
  var html = '';
24011
24328
 
24012
24329
  html += '<div class="d-flex justify-end align-start">';
24013
- if ((this.selectedFeatures.indexOf('compliances') >= 0) && (this.selectedFeatures.indexOf('notices') < 0) && (this.selectedFeatures.indexOf('contracts') < 0) && (this.selectedFeatures.indexOf('licenses') < 0) && (this.selectedFeatures.indexOf('rcmresources') < 0)) {
24330
+ if ((this.selectedFeatures.indexOf('compliances') >= 0) && (this.selectedFeatures.indexOf('notices') < 0) && (this.selectedFeatures.indexOf('contracts') < 0) && (this.selectedFeatures.indexOf('licenses') < 0) && (this.selectedFeatures.indexOf('rcmresources') < 0)) {
24014
24331
  html += '<button class="tab-button" id="input-show-reported-locations" part="' + (this.showReportedLocations ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected') + '" class="mr-10"><span class="material-symbols-outlined">arrow_or_edge</span></button>';
24015
24332
  }
24016
24333
  if (selectedTab === 0) {
@@ -28901,6 +29218,34 @@ export class SfIEvents extends LitElement {
28901
29218
  }
28902
29219
  }
28903
29220
 
29221
+ markReviewed = async (suspenseKey: any, year: string, review: boolean) => {
29222
+ let url = "https://" + this.apiId + "/markreviewed";
29223
+
29224
+ //console.log('fetch calendar url', url);
29225
+ let urlBody: any = { "projectid": this.projectId, "eventid": suspenseKey.split(';')[2], "entityid": suspenseKey.split(';')[0], "locationid": suspenseKey.split(';')[1], "year": year, "mark" : review };
29226
+
29227
+ //console.log('urlbody', urlBody);
29228
+
29229
+ const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
29230
+ const xhr: any = (await this.prepareXhr(urlBody, url, this._SfLoader, authorization, 'Preparing')) as any;
29231
+ this._SfLoader.innerHTML = '';
29232
+ if (xhr.status == 200) {
29233
+
29234
+ const jsonResponse = JSON.parse(xhr.responseText);
29235
+ console.log('jsonResponse', jsonResponse);
29236
+ return jsonResponse;
29237
+ } else {
29238
+ if (xhr.status == 401) {
29239
+ let changeEvent = new CustomEvent('tokenExpired', { bubbles: true });
29240
+ this.dispatchEvent(changeEvent);
29241
+ } else {
29242
+ const jsonRespose = JSON.parse(xhr.responseText);
29243
+ this.setError(jsonRespose.error);
29244
+ }
29245
+
29246
+ }
29247
+ }
29248
+
28904
29249
  fetchSuspenseList = async () => {
28905
29250
 
28906
29251
  let url = "https://" + this.apiId + "/getsuspenselist";
@@ -29096,7 +29441,7 @@ export class SfIEvents extends LitElement {
29096
29441
  view = "entity";
29097
29442
  }
29098
29443
 
29099
- path = "getallcountryevents4";
29444
+ path = "getallcountryevents5";
29100
29445
 
29101
29446
  let sDate = "";
29102
29447
  let eDate = "";
@@ -29115,7 +29460,7 @@ export class SfIEvents extends LitElement {
29115
29460
  let url = "https://" + this.apiId + "/" + path;
29116
29461
 
29117
29462
  //console.log('fetch calendar url', url);
29118
- let urlBody: any = { "projectid": this.projectId, "userprofileid": this.userProfileId, "role": this.myRole, "entityid": this.entityId, "countryid": this.countryId, "functionid": this.functionId, "locationid": this.locationId, "tagid": this.tagId, "adhoc": "false", "exclusivestartkey": 0, "sdate": sDate, "edate": eDate, "view": view, "year": year, "list": list, "month": month };
29463
+ let urlBody: any = { "projectid": this.projectId, "userprofileid": this.userProfileId, "role": this.myRole, "entityid": this.entityId, "countryid": this.countryId, "functionid": this.functionId, "locationid": this.locationId, "tagid": this.tagId, "adhoc": "false", "exclusivestartkey": 0, "sdate": sDate, "edate": eDate, "view": view, "year": year, "list": list, "month": month, "suspense": this.suspenseFlag };
29119
29464
 
29120
29465
  if (searchString.length > 0) {
29121
29466
  urlBody["searchstring"] = searchString;
@@ -29238,7 +29583,7 @@ export class SfIEvents extends LitElement {
29238
29583
  view = "entity";
29239
29584
  }
29240
29585
 
29241
- path = "getallcountryevents4";
29586
+ path = "getallcountryevents5";
29242
29587
 
29243
29588
  let url = "https://" + this.apiId + "/" + path;
29244
29589
  let temptagid = tagid;
@@ -30677,7 +31022,7 @@ export class SfIEvents extends LitElement {
30677
31022
  const buttonArr = this._SfIEventsC.querySelectorAll('.button-expand') as NodeListOf<HTMLButtonElement>;
30678
31023
 
30679
31024
  for (var i = 0; i < buttonArr.length; i++) {
30680
-
31025
+ let indexPrevNext = i;
30681
31026
  buttonArr[i].addEventListener('click', (ev: any) => {
30682
31027
 
30683
31028
  const id = ev.target.id;
@@ -30722,7 +31067,15 @@ export class SfIEvents extends LitElement {
30722
31067
  }
30723
31068
  console.log('redering detail', this.myRole)
30724
31069
  // this.renderEventDetail(eventsData[role][mmdd][j], mmdd + "/" + yyyy, null);
30725
- this.fetchEventDetails(eventsData[role][mmdd][j], mmdd + "/" + yyyy, null, (this._SfIEventsC as HTMLDivElement));
31070
+ let prevString = "";
31071
+ if (indexPrevNext > 0) {
31072
+ prevString = (buttonArr[indexPrevNext - 1] as HTMLButtonElement).id;
31073
+ }
31074
+ let nextString = "";
31075
+ if (indexPrevNext < buttonArr.length - 1) {
31076
+ nextString = (buttonArr[indexPrevNext + 1] as HTMLButtonElement).id;
31077
+ }
31078
+ this.fetchEventDetails(eventsData[role][mmdd][j], mmdd + "/" + yyyy, null, (this._SfIEventsC as HTMLDivElement), prevString, nextString);
30726
31079
 
30727
31080
  })
30728
31081
 
@@ -30969,7 +31322,7 @@ export class SfIEvents extends LitElement {
30969
31322
  day = '0' + day;
30970
31323
  let eDate = month + "/" + day + "/" + year
30971
31324
  let urlBody: any = { "projectid": this.projectId, "userprofileid": this.userProfileId, "role": this.myRole, "entityid": complianceEntityId, "countryid": "", "functionid": "", "locationid": complianceLocationId, "tagid": this.tagId, "adhoc": "false", "exclusivestartkey": 0, "sdate": sDate, "edate": eDate, "view": "location", "year": this.calendarStartYYYY };
30972
- let url = "https://" + this.apiId + "/getallcountryevents4";
31325
+ let url = "https://" + this.apiId + "/getallcountryevents5";
30973
31326
  const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
30974
31327
  const xhr: any = (await this.prepareXhr(urlBody, url, this._SfLoader, authorization, 'Preparing')) as any;
30975
31328
  this._SfLoader.innerHTML = '';
@@ -31062,7 +31415,7 @@ export class SfIEvents extends LitElement {
31062
31415
  console.log('fetching compliances', sortid)
31063
31416
  let complianceEntityId = sortid.split(';')[1]
31064
31417
  let complianceLocationId = sortid.split(';')[2]
31065
- let url = "https://" + this.apiId + "/getallcountryevents4";
31418
+ let url = "https://" + this.apiId + "/getallcountryevents5";
31066
31419
  let sDateObj = selectedDate
31067
31420
  sDateObj.setDate(selectedDate.getDate() - 60)
31068
31421
  let day = '' + sDateObj.getDate();