sf-i-events 1.0.937 → 1.0.939

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) && event.concise == 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
 
@@ -16715,12 +17005,15 @@ export class SfIEvents extends LitElement {
16715
17005
  if (reportingSchemaValues != "") reportingReporting.prepopulateValJson = reportingSchemaValues
16716
17006
  reportingReporting.mode = (this.myRole == this.TAB_REPORTER || this.myRole == this.TAB_FUNCTION_HEAD) ? "edit" : "view"
16717
17007
  reportingReporting.editdisable = (this.myRole == this.TAB_REPORTER || this.myRole == this.TAB_FUNCTION_HEAD) ? "false" : "true"
17008
+ // reportingReporting.mode = (this.myRole == this.TAB_REPORTER || this.myRole == this.TAB_APPROVER || this.myRole == this.TAB_FUNCTION_HEAD) ? "edit" : "view"
17009
+ // reportingReporting.editdisable = (this.myRole == this.TAB_REPORTER || this.myRole == this.TAB_APPROVER || this.myRole == this.TAB_FUNCTION_HEAD) ? "false" : "true"
16718
17010
  reportingReporting.flow = "reporting"
16719
17011
  setTimeout(() => {
16720
17012
  reportingReporting.loadMode();
16721
17013
  console.log('list-customreporting', reportingSchemaJson);
16722
17014
  console.log('list-customreporting1', reportingSchemaValues);
16723
17015
  console.log('list-customreporting2', reportingReporting.mode);
17016
+ console.log('list-customreporting3', this.myRole);
16724
17017
  }, 500)
16725
17018
  }
16726
17019
 
@@ -16801,12 +17094,13 @@ export class SfIEvents extends LitElement {
16801
17094
  }, 3000);
16802
17095
  return;
16803
17096
  }
16804
- let reportformatvalues = ""
17097
+ let reportformatvalues: any = {}
16805
17098
  let reportingReporting = (this._SfDetailContainer as HTMLDivElement).querySelector('#reporting-reporting') as SfIReporting
16806
17099
  console.log('renew reporting', reportingReporting)
16807
17100
  if (reportingReporting != null) {
16808
- reportformatvalues = JSON.stringify(reportingReporting!.selectedValues()) ?? "";
17101
+ reportformatvalues = reportingReporting!.selectedValues()
16809
17102
  }
17103
+ console.log('reportformatvalues', Util.compareObjects(reportformatvalues, JSON.parse(listEvent.reportformatvalues)))
16810
17104
  var clickEvent = new MouseEvent("click", {
16811
17105
  "view": window,
16812
17106
  "bubbles": true,
@@ -16827,7 +17121,7 @@ export class SfIEvents extends LitElement {
16827
17121
  for (var p = 0; p < this.events[mmdd].length; p++) {
16828
17122
  if (this.events[mmdd][p].id == listEvent.id && this.events[mmdd][p].locationid == locationId && this.events[mmdd][p].entityid == entityId) {
16829
17123
  this.events[mmdd][p].approved = approved
16830
- this.events[mmdd][p].terminated = (JSON.parse(reportformatvalues).terminated) ?? false
17124
+ this.events[mmdd][p].terminated = (reportformatvalues.terminated) ?? false
16831
17125
  this.events[mmdd][p].comments.push({ 'author': 'Approver', 'comment': comments + ` (Approved: ${approved ? 'Yes' : 'No'})`, 'timestamp': new Date().toString() })
16832
17126
  this.events[mmdd][p].lastupdated = new Date().toString()
16833
17127
  }
@@ -17434,7 +17728,7 @@ export class SfIEvents extends LitElement {
17434
17728
  }
17435
17729
  }
17436
17730
 
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) => {
17731
+ 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
17732
  console.log('listEvent', listEvent, listEvent.id)
17439
17733
  let url = "https://" + this.apiId + "/getalleventdetails";
17440
17734
 
@@ -17476,7 +17770,7 @@ export class SfIEvents extends LitElement {
17476
17770
  this.renderListReporting(listEventContainer, data, mmddyyyy, eventsContainer)
17477
17771
  }
17478
17772
  } else {
17479
- this.renderEventDetail(jsonRespose.data, mmddyyyy, currentColumnButton, eventsContainer);
17773
+ this.renderEventDetail(jsonRespose.data, mmddyyyy, currentColumnButton, eventsContainer, previousId, nextId);
17480
17774
  }
17481
17775
 
17482
17776
  } else {
@@ -17498,9 +17792,9 @@ export class SfIEvents extends LitElement {
17498
17792
  }
17499
17793
  }
17500
17794
 
17501
- renderEventDetail = (event: any, mmddyyyy: any, currentColumnButton: HTMLButtonElement | null, eventsContainer: HTMLDivElement) => {
17795
+ renderEventDetail = (event: any, mmddyyyy: any, currentColumnButton: HTMLButtonElement | null, eventsContainer: HTMLDivElement, previousId: string, nextId: string) => {
17502
17796
  console.log('event details', event, mmddyyyy, currentColumnButton == null ? "null currentColumnButton" : currentColumnButton.id);
17503
-
17797
+ console.log('previousid', previousId, 'nextid', nextId);
17504
17798
  let comments, docs, approved, /*dateOfCompletion,*/ makercheckers: Array<string>, docsOptional: boolean | any, documentType: string | any;
17505
17799
  let entityId: string = "";
17506
17800
  let locationId: string = "";
@@ -17555,6 +17849,15 @@ export class SfIEvents extends LitElement {
17555
17849
 
17556
17850
  `;
17557
17851
 
17852
+ if (previousId != "" || nextId != "") {
17853
+ html += `
17854
+ <div part="compliance-detail-prev-next" class="d-flex justify-between m-20">
17855
+ <button id="button-detail-previous" part="button-icon" class="material-icons${previousId != "" ? "" : " invisible"}">chevron_left</button>
17856
+ <button id="button-detail-next" part="button-icon" class="material-icons${nextId != "" ? "" : " invisible"}">chevron_right</button>
17857
+ </div>
17858
+ `
17859
+ }
17860
+
17558
17861
  if (this.selectedItemIds.length > 1) {
17559
17862
 
17560
17863
  html += `
@@ -18016,6 +18319,24 @@ export class SfIEvents extends LitElement {
18016
18319
 
18017
18320
  });
18018
18321
 
18322
+ (this._SfDetailContainer as HTMLDivElement).querySelector('#button-detail-previous')?.addEventListener('click', () => {
18323
+ var clickEvent = new MouseEvent("click", {
18324
+ "view": window,
18325
+ "bubbles": true,
18326
+ "cancelable": false
18327
+ });
18328
+ ((eventsContainer as HTMLDivElement).querySelector('#' + previousId) as HTMLElement)?.dispatchEvent(clickEvent);
18329
+ });
18330
+
18331
+ (this._SfDetailContainer as HTMLDivElement).querySelector('#button-detail-next')?.addEventListener('click', () => {
18332
+ var clickEvent = new MouseEvent("click", {
18333
+ "view": window,
18334
+ "bubbles": true,
18335
+ "cancelable": false
18336
+ });
18337
+ ((eventsContainer as HTMLDivElement).querySelector('#' + nextId) as HTMLElement)?.dispatchEvent(clickEvent);
18338
+ });
18339
+
18019
18340
  (this._SfDetailContainer as HTMLDivElement).querySelector('.head-basic')?.addEventListener('click', () => {
18020
18341
 
18021
18342
  //console.log('head basic clicked', ((this._SfDetailContainer as HTMLDivElement).querySelector('.body-basic') as HTMLDivElement).style.display);
@@ -24010,7 +24331,7 @@ export class SfIEvents extends LitElement {
24010
24331
  var html = '';
24011
24332
 
24012
24333
  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)) {
24334
+ 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
24335
  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
24336
  }
24016
24337
  if (selectedTab === 0) {
@@ -28901,6 +29222,34 @@ export class SfIEvents extends LitElement {
28901
29222
  }
28902
29223
  }
28903
29224
 
29225
+ markReviewed = async (suspenseKey: any, year: string, review: boolean) => {
29226
+ let url = "https://" + this.apiId + "/markreviewed";
29227
+
29228
+ //console.log('fetch calendar url', url);
29229
+ let urlBody: any = { "projectid": this.projectId, "eventid": suspenseKey.split(';')[2], "entityid": suspenseKey.split(';')[0], "locationid": suspenseKey.split(';')[1], "year": year, "mark" : review };
29230
+
29231
+ //console.log('urlbody', urlBody);
29232
+
29233
+ const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
29234
+ const xhr: any = (await this.prepareXhr(urlBody, url, this._SfLoader, authorization, 'Preparing')) as any;
29235
+ this._SfLoader.innerHTML = '';
29236
+ if (xhr.status == 200) {
29237
+
29238
+ const jsonResponse = JSON.parse(xhr.responseText);
29239
+ console.log('jsonResponse', jsonResponse);
29240
+ return jsonResponse;
29241
+ } else {
29242
+ if (xhr.status == 401) {
29243
+ let changeEvent = new CustomEvent('tokenExpired', { bubbles: true });
29244
+ this.dispatchEvent(changeEvent);
29245
+ } else {
29246
+ const jsonRespose = JSON.parse(xhr.responseText);
29247
+ this.setError(jsonRespose.error);
29248
+ }
29249
+
29250
+ }
29251
+ }
29252
+
28904
29253
  fetchSuspenseList = async () => {
28905
29254
 
28906
29255
  let url = "https://" + this.apiId + "/getsuspenselist";
@@ -29096,7 +29445,7 @@ export class SfIEvents extends LitElement {
29096
29445
  view = "entity";
29097
29446
  }
29098
29447
 
29099
- path = "getallcountryevents4";
29448
+ path = "getallcountryevents5";
29100
29449
 
29101
29450
  let sDate = "";
29102
29451
  let eDate = "";
@@ -29115,7 +29464,7 @@ export class SfIEvents extends LitElement {
29115
29464
  let url = "https://" + this.apiId + "/" + path;
29116
29465
 
29117
29466
  //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 };
29467
+ 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
29468
 
29120
29469
  if (searchString.length > 0) {
29121
29470
  urlBody["searchstring"] = searchString;
@@ -29238,7 +29587,7 @@ export class SfIEvents extends LitElement {
29238
29587
  view = "entity";
29239
29588
  }
29240
29589
 
29241
- path = "getallcountryevents4";
29590
+ path = "getallcountryevents5";
29242
29591
 
29243
29592
  let url = "https://" + this.apiId + "/" + path;
29244
29593
  let temptagid = tagid;
@@ -30677,7 +31026,7 @@ export class SfIEvents extends LitElement {
30677
31026
  const buttonArr = this._SfIEventsC.querySelectorAll('.button-expand') as NodeListOf<HTMLButtonElement>;
30678
31027
 
30679
31028
  for (var i = 0; i < buttonArr.length; i++) {
30680
-
31029
+ let indexPrevNext = i;
30681
31030
  buttonArr[i].addEventListener('click', (ev: any) => {
30682
31031
 
30683
31032
  const id = ev.target.id;
@@ -30722,7 +31071,15 @@ export class SfIEvents extends LitElement {
30722
31071
  }
30723
31072
  console.log('redering detail', this.myRole)
30724
31073
  // this.renderEventDetail(eventsData[role][mmdd][j], mmdd + "/" + yyyy, null);
30725
- this.fetchEventDetails(eventsData[role][mmdd][j], mmdd + "/" + yyyy, null, (this._SfIEventsC as HTMLDivElement));
31074
+ let prevString = "";
31075
+ if (indexPrevNext > 0) {
31076
+ prevString = (buttonArr[indexPrevNext - 1] as HTMLButtonElement).id;
31077
+ }
31078
+ let nextString = "";
31079
+ if (indexPrevNext < buttonArr.length - 1) {
31080
+ nextString = (buttonArr[indexPrevNext + 1] as HTMLButtonElement).id;
31081
+ }
31082
+ this.fetchEventDetails(eventsData[role][mmdd][j], mmdd + "/" + yyyy, null, (this._SfIEventsC as HTMLDivElement), prevString, nextString);
30726
31083
 
30727
31084
  })
30728
31085
 
@@ -30969,7 +31326,7 @@ export class SfIEvents extends LitElement {
30969
31326
  day = '0' + day;
30970
31327
  let eDate = month + "/" + day + "/" + year
30971
31328
  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";
31329
+ let url = "https://" + this.apiId + "/getallcountryevents5";
30973
31330
  const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
30974
31331
  const xhr: any = (await this.prepareXhr(urlBody, url, this._SfLoader, authorization, 'Preparing')) as any;
30975
31332
  this._SfLoader.innerHTML = '';
@@ -31062,7 +31419,7 @@ export class SfIEvents extends LitElement {
31062
31419
  console.log('fetching compliances', sortid)
31063
31420
  let complianceEntityId = sortid.split(';')[1]
31064
31421
  let complianceLocationId = sortid.split(';')[2]
31065
- let url = "https://" + this.apiId + "/getallcountryevents4";
31422
+ let url = "https://" + this.apiId + "/getallcountryevents5";
31066
31423
  let sDateObj = selectedDate
31067
31424
  sDateObj.setDate(selectedDate.getDate() - 60)
31068
31425
  let day = '' + sDateObj.getDate();