sf-i-events 1.0.30 → 1.0.32

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sf-i-events",
3
3
  "private": false,
4
- "version": "1.0.30",
4
+ "version": "1.0.32",
5
5
  "description": "Superflows Navigation Component",
6
6
  "main": "sf-i-events.js",
7
7
  "module": "sf-i-events.js",
package/sf-i-events.d.ts CHANGED
@@ -16,6 +16,9 @@ import { LitElement, PropertyValueMap } from 'lit';
16
16
  * @property selectedValue - callback function
17
17
  */
18
18
  export declare class SfIEvents extends LitElement {
19
+ TAB_YEAR: string;
20
+ TAB_STREAM: string;
21
+ TAB_UPCOMING: string;
19
22
  apiIdList: string;
20
23
  apiIdDetail: string;
21
24
  apiMethodList: string;
@@ -45,11 +48,14 @@ export declare class SfIEvents extends LitElement {
45
48
  _SfLoader: any;
46
49
  _SfCalendarContainer: any;
47
50
  _SfStreamContainer: any;
51
+ _SfUpcomingContainer: any;
48
52
  _SfTabContainer: any;
49
53
  getEventField: (field: string) => any;
50
54
  getParentFieldFromDepedencies: (field: string) => any;
51
55
  getEventTexts: (field: string, selectedId: Array<string>, row: any) => string;
52
- enableStream(value: boolean): void;
56
+ enableCalendar: () => void;
57
+ enableStream: () => void;
58
+ enableUpcoming(): void;
53
59
  prepareXhr: (data: any, url: string, loaderElement: any, authorization: any) => Promise<unknown>;
54
60
  clearMessages: () => void;
55
61
  setError: (msg: string) => void;
@@ -60,9 +66,11 @@ export declare class SfIEvents extends LitElement {
60
66
  insertDates: (month: number, year: number) => string;
61
67
  insertDayNames: () => string;
62
68
  renderStreamEvents: (index: number, month: number, year: number) => string;
69
+ renderUpcomingEvents: (index: number, startDate: Date, count: number) => string;
70
+ renderUpcoming: (index?: number) => void;
63
71
  renderStream: (index?: number) => void;
64
72
  renderCalendar: () => void;
65
- renderTabs: (enableStream: boolean) => void;
73
+ renderTabs: (selectedTab: string) => void;
66
74
  processEvent: (value: any) => void;
67
75
  fetchDetail: (value: any) => Promise<void>;
68
76
  fetchList: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"sf-i-events.d.ts","sourceRoot":"","sources":["src/sf-i-events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,UAAU,EAAa,gBAAgB,EAAC,MAAM,KAAK,CAAC;AAe5D;;;;;;;;;;GAUG;AACH,qBACa,SAAU,SAAQ,UAAU;IAGvC,SAAS,EAAG,MAAM,CAAC;IAGnB,WAAW,EAAG,MAAM,CAAC;IAGrB,aAAa,EAAG,MAAM,CAAC;IAGvB,eAAe,EAAG,MAAM,CAAC;IAGzB,WAAW,EAAG,MAAM,CAAC;IAGrB,aAAa,EAAG,MAAM,CAAC;IAGvB,oBAAoB,EAAG,MAAM,CAAC;IAG9B,eAAe,EAAG,MAAM,CAAC;IAGzB,eAAe,EAAG,MAAM,CAAC;IAGzB,iBAAiB,EAAG,MAAM,CAAC;IAG3B,QAAQ,EAAE,IAAI,EAAG,CAAM;IAGvB,UAAU,EAAE,MAAM,EAAG,CAA+H;IAGpJ,MAAM,EAAE,GAAG,CAAQ;IAGnB,WAAW,EAAE,GAAG,CAAQ;IAExB,cAAc,YAEb;IAGD,sBAAsB,EAAE,GAAG,CAAQ;IAEnC,yBAAyB,YAExB;IAED,cAAc,YAOb;IAED,gBAAgB,YAEf;IAGD,IAAI,EAAG,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,CAAM;IAElB,OAAgB,MAAM,0BAsVpB;IAGF,WAAW,EAAE,GAAG,CAAC;IAGjB,kBAAkB,EAAE,GAAG,CAAC;IAGxB,aAAa,EAAE,GAAG,CAAC;IAGnB,oBAAoB,EAAE,GAAG,CAAC;IAG1B,SAAS,EAAE,GAAG,CAAC;IAGf,oBAAoB,EAAE,GAAG,CAAC;IAG1B,kBAAkB,EAAE,GAAG,CAAC;IAGxB,eAAe,EAAE,GAAG,CAAC;IAErB,aAAa,UAAW,MAAM,SAU7B;IAED,6BAA6B,UAAW,MAAM,SAY7C;IAED,aAAa,UAAW,MAAM,cAAc,MAAM,MAAM,CAAC,OAAO,GAAG,YAsDlE;IAED,YAAY,CAAC,KAAK,EAAE,OAAO;IAY3B,UAAU,SAAgB,GAAG,OAAO,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,sBAQjF;IAED,aAAa,aAKZ;IAED,QAAQ,QAAS,MAAM,UAKtB;IAED,UAAU,QAAS,MAAM,UAKxB;IAED,qBAAqB,UAAW,MAAM,QAAQ,MAAM,YAGnD;IAED,iBAAiB,UAAW,MAAM,QAAQ,MAAM,YAG/C;IAED,SAAS,UAAW,MAAM,QAAQ,MAAM,YAMvC;IAED,WAAW,UAAW,MAAM,QAAQ,MAAM,YAqDzC;IAED,cAAc,eAsCb;IAED,kBAAkB,UAAW,MAAM,SAAS,MAAM,QAAQ,MAAM,YA+E/D;IAED,YAAY,WAAW,MAAM,UAoD5B;IAED,cAAc,aAsCb;IAED,UAAU,iBAAkB,OAAO,UAmBlC;IAED,YAAY,UAAW,GAAG,UAoEzB;IAED,WAAW,UAAiB,GAAG,mBAqB9B;IAED,SAAS,sBAmCR;IAED,YAAY,sBAsBX;IAED,UAAU,aAKT;IAED,aAAa,aAGZ;IAED,QAAQ,sBAiBP;;cAMkB,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI;IAMnG,iBAAiB;IAIjB,MAAM;CAsChB;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,SAAS,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"sf-i-events.d.ts","sourceRoot":"","sources":["src/sf-i-events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,UAAU,EAAa,gBAAgB,EAAC,MAAM,KAAK,CAAC;AAe5D;;;;;;;;;;GAUG;AACH,qBACa,SAAU,SAAQ,UAAU;IAEvC,QAAQ,SAAU;IAClB,UAAU,SAAY;IACtB,YAAY,SAAc;IAG1B,SAAS,EAAG,MAAM,CAAC;IAGnB,WAAW,EAAG,MAAM,CAAC;IAGrB,aAAa,EAAG,MAAM,CAAC;IAGvB,eAAe,EAAG,MAAM,CAAC;IAGzB,WAAW,EAAG,MAAM,CAAC;IAGrB,aAAa,EAAG,MAAM,CAAC;IAGvB,oBAAoB,EAAG,MAAM,CAAC;IAG9B,eAAe,EAAG,MAAM,CAAC;IAGzB,eAAe,EAAG,MAAM,CAAC;IAGzB,iBAAiB,EAAG,MAAM,CAAC;IAG3B,QAAQ,EAAE,IAAI,EAAG,CAAM;IAGvB,UAAU,EAAE,MAAM,EAAG,CAA+H;IAGpJ,MAAM,EAAE,GAAG,CAAQ;IAGnB,WAAW,EAAE,GAAG,CAAQ;IAExB,cAAc,YAEb;IAGD,sBAAsB,EAAE,GAAG,CAAQ;IAEnC,yBAAyB,YAExB;IAED,cAAc,YAOb;IAED,gBAAgB,YAEf;IAGD,IAAI,EAAG,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,CAAM;IAElB,OAAgB,MAAM,0BA0VpB;IAGF,WAAW,EAAE,GAAG,CAAC;IAGjB,kBAAkB,EAAE,GAAG,CAAC;IAGxB,aAAa,EAAE,GAAG,CAAC;IAGnB,oBAAoB,EAAE,GAAG,CAAC;IAG1B,SAAS,EAAE,GAAG,CAAC;IAGf,oBAAoB,EAAE,GAAG,CAAC;IAG1B,kBAAkB,EAAE,GAAG,CAAC;IAGxB,oBAAoB,EAAE,GAAG,CAAC;IAG1B,eAAe,EAAE,GAAG,CAAC;IAErB,aAAa,UAAW,MAAM,SAU7B;IAED,6BAA6B,UAAW,MAAM,SAY7C;IAED,aAAa,UAAW,MAAM,cAAc,MAAM,MAAM,CAAC,OAAO,GAAG,YAsDlE;IAED,cAAc,aAIb;IAED,YAAY,aAIX;IAED,cAAc;IAMd,UAAU,SAAgB,GAAG,OAAO,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,sBAQjF;IAED,aAAa,aAKZ;IAED,QAAQ,QAAS,MAAM,UAKtB;IAED,UAAU,QAAS,MAAM,UAKxB;IAED,qBAAqB,UAAW,MAAM,QAAQ,MAAM,YAGnD;IAED,iBAAiB,UAAW,MAAM,QAAQ,MAAM,YAG/C;IAED,SAAS,UAAW,MAAM,QAAQ,MAAM,YAMvC;IAED,WAAW,UAAW,MAAM,QAAQ,MAAM,YAqDzC;IAED,cAAc,eAsCb;IAED,kBAAkB,UAAW,MAAM,SAAS,MAAM,QAAQ,MAAM,YA+E/D;IAED,oBAAoB,UAAU,MAAM,aAAa,IAAI,SAAS,MAAM,YAsFnE;IAED,cAAc,WAAW,MAAM,UAkE9B;IAED,YAAY,WAAW,MAAM,UAoD5B;IAED,cAAc,aAsCb;IAED,UAAU,gBAAiB,MAAM,UAyBhC;IAED,YAAY,UAAW,GAAG,UAoEzB;IAED,WAAW,UAAiB,GAAG,mBAqB9B;IAED,SAAS,sBAmCR;IAED,YAAY,sBAsBX;IAED,UAAU,aAKT;IAED,aAAa,aAGZ;IAED,QAAQ,sBAkBP;;cAMkB,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI;IAMnG,iBAAiB;IAIjB,MAAM;CAyChB;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,SAAS,CAAC;KAC1B;CACF"}
package/sf-i-events.js CHANGED
@@ -35,6 +35,9 @@ DB: partitionKey, rangeKey, values
35
35
  let SfIEvents = class SfIEvents extends LitElement {
36
36
  constructor() {
37
37
  super();
38
+ this.TAB_YEAR = "year";
39
+ this.TAB_STREAM = "stream";
40
+ this.TAB_UPCOMING = "upcoming";
38
41
  this.calendar = [];
39
42
  this.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
40
43
  this.events = null;
@@ -110,6 +113,16 @@ let SfIEvents = class SfIEvents extends LitElement {
110
113
  }
111
114
  return "";
112
115
  };
116
+ this.enableCalendar = () => {
117
+ this._SfCalendarContainer.style.display = 'flex';
118
+ this._SfStreamContainer.style.display = 'none';
119
+ this._SfUpcomingContainer.style.display = 'none';
120
+ };
121
+ this.enableStream = () => {
122
+ this._SfCalendarContainer.style.display = 'none';
123
+ this._SfStreamContainer.style.display = 'flex';
124
+ this._SfUpcomingContainer.style.display = 'none';
125
+ };
113
126
  this.prepareXhr = async (data, url, loaderElement, authorization) => {
114
127
  if (loaderElement != null) {
115
128
  loaderElement.innerHTML = '<div class="lds-dual-ring"></div>';
@@ -272,7 +285,7 @@ let SfIEvents = class SfIEvents extends LitElement {
272
285
  else {
273
286
  if (!hide) {
274
287
  html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected">';
275
- html += '<div>' + ("0" + i).slice(-2) + ' |</div>';
288
+ html += '<div>' + ("0" + i).slice(-2) + '</div>';
276
289
  html += '</div>';
277
290
  }
278
291
  else {
@@ -286,6 +299,136 @@ let SfIEvents = class SfIEvents extends LitElement {
286
299
  html += '</div>';
287
300
  return html;
288
301
  };
302
+ this.renderUpcomingEvents = (index, startDate, count) => {
303
+ var html = '<div id="stream-event-' + index + '" part="stream-event-list" class="stream-event-list">';
304
+ for (var i = 1; i <= count; i++) {
305
+ const mmdd = ("0" + (startDate.getMonth() + 1)).slice(-2) + "/" + ("0" + startDate.getDate()).slice(-2);
306
+ var hide = true;
307
+ if (this.events[mmdd] != null) {
308
+ hide = false;
309
+ }
310
+ else if (i === 1) {
311
+ hide = false;
312
+ }
313
+ else if (i === (count)) {
314
+ hide = false;
315
+ }
316
+ else {
317
+ const startNextDate = new Date(startDate.getTime());
318
+ startNextDate.setDate(startDate.getDate() + 1);
319
+ const startPrevDate = new Date(startDate.getTime());
320
+ startPrevDate.setDate(startDate.getDate() - 1);
321
+ const mmddNext = ("0" + (startNextDate.getMonth() + 1)).slice(-2) + "/" + ("0" + (startNextDate.getDate())).slice(-2);
322
+ const mmddPrev = ("0" + (startPrevDate.getMonth() + 1)).slice(-2) + "/" + ("0" + (startPrevDate.getDate())).slice(-2);
323
+ console.log('hide', i, hide, startNextDate, startPrevDate, mmddNext, mmddPrev);
324
+ if ((this.events[mmddPrev] != null || this.events[mmddNext] != null)) {
325
+ hide = false;
326
+ }
327
+ }
328
+ if (this.events[mmdd] != null) {
329
+ html += '<div part="stream-event-selected" class="d-flex stream-event-selected">';
330
+ html += '<div part="stream-event-selected-date">' + ("0" + startDate.getDate()).slice(-2) + '/' + (startDate.getMonth() + 1) + ' |</div>';
331
+ for (var j = 0; j < this.events[mmdd].length; j++) {
332
+ html += '<div class="stream-events-container flex-grow">';
333
+ html += '<table>';
334
+ html += '<thead>';
335
+ for (var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {
336
+ html += '<th part="td-head">';
337
+ html += Object.keys(this.events[mmdd][j])[k];
338
+ html += '</th>';
339
+ }
340
+ html += '</thead>';
341
+ html += '<tbody>';
342
+ for (var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {
343
+ html += '<th part="td-body">';
344
+ if (this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].indexOf("[") >= 0) {
345
+ html += this.getEventTexts(Object.keys(this.events[mmdd][j])[k], JSON.parse(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]]), this.events[mmdd][j]);
346
+ }
347
+ else {
348
+ html += this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].replace(/"/g, "");
349
+ }
350
+ html += '</th>';
351
+ }
352
+ html += '</tbody>';
353
+ html += '</table>';
354
+ html += '</div>';
355
+ }
356
+ html += '</div>';
357
+ }
358
+ else {
359
+ if (!hide) {
360
+ html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected">';
361
+ html += '<div>' + ("0" + startDate.getDate()).slice(-2) + '/' + (startDate.getMonth() + 1) + '</div>';
362
+ html += '</div>';
363
+ }
364
+ else {
365
+ html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected-hidden">';
366
+ //html += '<div>'+("0" + i).slice(-2)+' |</div>';
367
+ html += '<div>.</div>';
368
+ html += '</div>';
369
+ }
370
+ }
371
+ startDate.setDate(startDate.getDate() + 1);
372
+ }
373
+ html += '</div>';
374
+ return html;
375
+ };
376
+ this.renderUpcoming = (index = 0) => {
377
+ var _a;
378
+ var html = '';
379
+ html += '<div class="d-flex flex-grow">';
380
+ html += '<div class="calendar-left-col">';
381
+ var part = "";
382
+ if (index === 0) {
383
+ part = "stream-month-selected";
384
+ }
385
+ else {
386
+ part = "stream-month-not-selected";
387
+ }
388
+ html += '<div part="' + part + '" id="stream-month-0" part="month-title" class="title-item ' + part + '">7 Days</div>';
389
+ part = "";
390
+ if (index === 1) {
391
+ part = "stream-month-selected";
392
+ }
393
+ else {
394
+ part = "stream-month-not-selected";
395
+ }
396
+ html += '<div part="' + part + '" id="stream-month-1" part="month-title" class="title-item ' + part + '">30 Days</div>';
397
+ part = "";
398
+ if (index === 2) {
399
+ part = "stream-month-selected";
400
+ }
401
+ else {
402
+ part = "stream-month-not-selected";
403
+ }
404
+ html += '<div part="' + part + '" id="stream-month-2" part="month-title" class="title-item ' + part + '">90 Days</div>';
405
+ html += '</div>';
406
+ html += '<div class="calendar-right-data">';
407
+ // var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);
408
+ var startDate = new Date();
409
+ if (index === 0) {
410
+ html += this.renderUpcomingEvents(index, startDate, 7);
411
+ startDate.setDate(startDate.getDate() + 1);
412
+ }
413
+ if (index === 1) {
414
+ html += this.renderUpcomingEvents(index, startDate, 30);
415
+ startDate.setDate(startDate.getDate() + 1);
416
+ }
417
+ if (index === 2) {
418
+ html += this.renderUpcomingEvents(index, startDate, 90);
419
+ startDate.setDate(startDate.getDate() + 1);
420
+ }
421
+ html += '</div>';
422
+ html += '</div>';
423
+ this._SfUpcomingContainer.innerHTML = html;
424
+ for (var i = 0; i < 3; i++) {
425
+ (_a = this._SfUpcomingContainer.querySelector('#stream-month-' + i)) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (ev) => {
426
+ const target = parseInt(ev.target.id.split('-')[2]);
427
+ console.log('clicked ', target);
428
+ this.renderUpcoming(target);
429
+ });
430
+ }
431
+ };
289
432
  this.renderStream = (index = 0) => {
290
433
  var _a;
291
434
  console.log('renderstream', index);
@@ -345,25 +488,30 @@ let SfIEvents = class SfIEvents extends LitElement {
345
488
  for (var i = 0; i < 12; i++) {
346
489
  (_a = this._SfCalendarContainer.querySelector('#calendar-button-' + i)) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (ev) => {
347
490
  const id = ev.target.id.split("-")[2];
348
- this.enableStream(true);
491
+ this.enableStream();
349
492
  this.renderStream(parseInt(id));
350
- this.renderTabs(true);
493
+ this.renderTabs(this.TAB_STREAM);
351
494
  });
352
495
  }
353
496
  };
354
- this.renderTabs = (enableStream) => {
355
- var _a, _b;
497
+ this.renderTabs = (selectedTab) => {
498
+ var _a, _b, _c;
356
499
  var html = '';
357
- html += '<button class="tab-button" id="calendar-tab-year" part="' + (enableStream ? 'calendar-tab-button-not-selected' : 'calendar-tab-button-selected') + '">Year</button>';
358
- html += '<button class="tab-button" id="calendar-tab-month" part="' + (enableStream ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected') + '">Month</button>';
500
+ html += '<button class="tab-button" id="calendar-tab-year" part="' + (selectedTab == this.TAB_YEAR ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected') + '">Year</button>';
501
+ html += '<button class="tab-button" id="calendar-tab-month" part="' + (selectedTab == this.TAB_STREAM ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected') + '">Month</button>';
502
+ html += '<button class="tab-button" id="calendar-tab-upcoming" part="' + (selectedTab == this.TAB_UPCOMING ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected') + '">Upcoming</button>';
359
503
  this._SfTabContainer.innerHTML = html;
360
504
  (_a = this._SfTabContainer.querySelector('#calendar-tab-year')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', () => {
361
- this.enableStream(false);
362
- this.renderTabs(false);
505
+ this.enableCalendar();
506
+ this.renderTabs(this.TAB_YEAR);
363
507
  });
364
508
  (_b = this._SfTabContainer.querySelector('#calendar-tab-month')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', () => {
365
- this.enableStream(true);
366
- this.renderTabs(true);
509
+ this.enableStream();
510
+ this.renderTabs(this.TAB_STREAM);
511
+ });
512
+ (_c = this._SfTabContainer.querySelector('#calendar-tab-upcoming')) === null || _c === void 0 ? void 0 : _c.addEventListener('click', () => {
513
+ this.enableUpcoming();
514
+ this.renderTabs(this.TAB_UPCOMING);
367
515
  });
368
516
  };
369
517
  this.processEvent = (value) => {
@@ -476,28 +624,24 @@ let SfIEvents = class SfIEvents extends LitElement {
476
624
  this.initListeners = () => {
477
625
  };
478
626
  this.loadMode = async () => {
479
- this.enableStream(false);
627
+ this.enableCalendar();
480
628
  this.initListeners();
481
629
  this.initInputs();
482
630
  this.initCalendar();
483
631
  console.log('calendar init done');
484
632
  await this.fetchList();
485
633
  if (this.events != null) {
486
- this.renderTabs(false);
634
+ this.renderTabs(this.TAB_YEAR);
487
635
  this.renderCalendar();
488
636
  this.renderStream();
637
+ this.renderUpcoming();
489
638
  }
490
639
  };
491
640
  }
492
- enableStream(value) {
493
- if (value) {
494
- this._SfCalendarContainer.style.display = 'none';
495
- this._SfStreamContainer.style.display = 'flex';
496
- }
497
- else {
498
- this._SfCalendarContainer.style.display = 'flex';
499
- this._SfStreamContainer.style.display = 'none';
500
- }
641
+ enableUpcoming() {
642
+ this._SfCalendarContainer.style.display = 'none';
643
+ this._SfStreamContainer.style.display = 'none';
644
+ this._SfUpcomingContainer.style.display = 'flex';
501
645
  }
502
646
  firstUpdated(_changedProperties) {
503
647
  this.loadMode();
@@ -523,6 +667,9 @@ let SfIEvents = class SfIEvents extends LitElement {
523
667
  </div>
524
668
  <div class="d-flex flex-grow flex-wrap justify-center align-stretch" id="stream-container">
525
669
 
670
+ </div>
671
+ <div class="d-flex flex-grow flex-wrap justify-center align-stretch" id="upcoming-container">
672
+
526
673
  </div>
527
674
  </div>
528
675
  <div class="d-flex justify-between">
@@ -589,6 +736,10 @@ SfIEvents.styles = css `
589
736
  padding: 2%;
590
737
  }
591
738
 
739
+ #upcoming-container {
740
+ padding: 2%;
741
+ }
742
+
592
743
  .stream-event-list {
593
744
  margin-left: 10px;
594
745
  padding: 10px;
@@ -957,6 +1108,9 @@ __decorate([
957
1108
  __decorate([
958
1109
  query('#stream-container')
959
1110
  ], SfIEvents.prototype, "_SfStreamContainer", void 0);
1111
+ __decorate([
1112
+ query('#upcoming-container')
1113
+ ], SfIEvents.prototype, "_SfUpcomingContainer", void 0);
960
1114
  __decorate([
961
1115
  query('#tab-container')
962
1116
  ], SfIEvents.prototype, "_SfTabContainer", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sf-i-events.js","sourceRoot":"","sources":["src/sf-i-events.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Superflow.dev\n * SPDX-License-Identifier: MIT\n */\n\nimport {LitElement, html, css, PropertyValueMap} from 'lit';\n// import {customElement, query, queryAssignedElements, property} from 'lit/decorators.js';\nimport {customElement, query, property} from 'lit/decorators.js';\nimport Util from './util';\n// import {LitElement, html, css} from 'lit';\n// import {customElement} from 'lit/decorators.js';\n\n\n/*\n\nModes: View, Add, Edit, Delete, Admin\nDB: partitionKey, rangeKey, values\n\n*/\n\n/**\n * SfIEvents element.\n * @fires renderComplete - When the list is populated\n * @fires valueChanged - When the value is changed\n * @property apiId - backend api id\n * @property label - input label\n * @property name - name of the input\n * @property mode - mode of operation\n * @property selectedId - id to preselect\n * @property selectedValue - callback function\n */\n@customElement('sf-i-events')\nexport class SfIEvents extends LitElement {\n \n @property()\n apiIdList!: string;\n\n @property()\n apiIdDetail!: string;\n\n @property()\n apiMethodList!: string;\n\n @property()\n apiMethodDetail!: string;\n\n @property()\n apiBodyList!: string;\n\n @property()\n apiBodyDetail!: string;\n\n @property()\n apiResponseFieldList!: string;\n\n @property()\n calendarStartDD!: string;\n\n @property()\n calendarStartMM!: string;\n\n @property()\n calendarStartYYYY!: string;\n\n @property()\n calendar: Date [] = [];\n\n @property()\n monthNames: string [] = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n\n @property()\n events: any = null;\n\n @property()\n eventFields: any = null;\n\n getEventFields = () => {\n return JSON.parse(this.eventFields);\n }\n\n @property()\n eventFieldDependencies: any = null;\n\n getEventFieldDependencies = () => {\n return JSON.parse(this.eventFieldDependencies);\n }\n\n getApiBodyList = () => {\n console.log('calendar api body list', this.apiBodyList);\n try {\n return JSON.parse(this.apiBodyList);\n } catch (e: any) {\n return {};\n }\n }\n\n getApiBodyDetail = () => {\n return JSON.parse(this.apiBodyDetail);\n }\n\n @property()\n mode!: string;\n\n @property()\n flow: string = \"\";\n\n static override styles = css`\n\n \n .SfIEventsC {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: space-between;\n }\n\n .flex-grow {\n flex-grow: 1;\n }\n\n .flex-wrap {\n flex-wrap: wrap;\n }\n\n .left-sticky {\n left: 0px;\n position: sticky;\n }\n\n .link {\n text-decoration: underline;\n cursor: pointer;\n }\n\n .gone {\n display: none\n }\n\n .loader-element {\n position: fixed;\n right: 10px;\n top: 10px;\n margin-left: 5px;\n }\n\n #calendar-container {\n width: 90%;\n }\n\n #stream-container {\n padding: 2%;\n }\n\n .stream-event-list {\n margin-left: 10px;\n padding: 10px;\n }\n\n .stream-events-container {\n overflow-x: auto;\n width: 200px;\n }\n .stream-event-selected {\n padding-left: 20px;\n padding-right: 10px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n \n .stream-event-not-selected {\n padding-left: 20px;\n padding-right: 10px;\n padding-top: 5px;\n padding-bottom: 5px;\n color: #aaa;\n font-size: 80%;\n }\n\n .stream-event-not-selected-hidden {\n padding-left: 20px;\n padding-right: 10px;\n padding-top: 5px;\n padding-bottom: 5px;\n color: #aaa;\n line-height: 0.05;\n }\n\n .stream-month-selected {\n padding: 10px;\n text-align: center;\n }\n\n .stream-month-not-selected {\n padding: 10px;\n text-align: center;\n }\n\n .calendar-left-col {\n width: 30%;\n }\n\n .calendar-right-data {\n width: 70%;\n }\n\n .day-item {\n width: 14%;\n margin-bottom: 5px;\n text-align: center;\n }\n\n .date-item {\n font-size: 80%;\n color: #333;\n }\n\n .date-item-before {\n font-size: 80%;\n color: #999;\n }\n\n .dot {\n width: 6px;\n height: 6px;\n border-radius: 3px;\n }\n\n .title-item {\n padding: 5px;\n margin-bottom: 20px;\n }\n\n .calendar-item {\n width: 90%;\n margin-bottom: 20px;\n }\n\n .td-head {\n text-transform: capitalize;\n }\n\n .tab-button {\n padding: 10px;\n padding-left: 15px;\n padding-right: 15px;\n font-size: 105%;\n margin-left: 5px;\n margin-right: 5px;\n }\n\n .td-body {\n padding: 5px;\n }\n\n .td-dark {\n background-color: #e9e9e9;\n }\n\n .td-highlight {\n background-color: black;\n color: white;\n }\n\n .td-light {\n background-color: #f6f6f6;\n }\n\n td {\n white-space: nowrap;\n }\n\n .fw-100 {\n font-weight: 100;\n }\n\n .fw-200 {\n font-weight: 200;\n }\n\n .fw-300 {\n font-weight: 300;\n }\n\n .fw-600 {\n font-weight: 600;\n }\n\n .align-start {\n align-items: flex-start;\n }\n\n .align-stretch {\n align-items: stretch;\n }\n\n .align-baseline {\n align-items: baseline;\n }\n\n .align-end {\n align-items: flex-end;\n }\n\n .align-center {\n align-items: center;\n }\n \n .lds-dual-ring {\n display: inline-block;\n width: 50px;\n height: 50px;\n }\n .lds-dual-ring:after {\n content: \" \";\n display: block;\n width: 50px;\n height: 50px;\n margin: 0px;\n border-radius: 50%;\n border: 2px solid #fff;\n border-color: #888 #ddd #888 #ddd;\n background-color: white;\n animation: lds-dual-ring 0.8s linear infinite;\n }\n\n .lds-dual-ring-lg {\n display: inline-block;\n width: 30px;\n height: 30px;\n }\n .lds-dual-ring-lg:after {\n content: \" \";\n display: block;\n width: 30px;\n height: 30px;\n margin: 0px;\n border-radius: 50%;\n border: 3px solid #fff;\n border-color: #888 #ddd #888 #ddd;\n animation: lds-dual-ring 0.8s linear infinite;\n }\n\n .div-row-error {\n display: flex;\n justify-content: center;\n position: fixed;\n position: fixed;\n top: 0px;\n right: 0px;\n margin-top: 20px;\n margin-right: 20px;\n display: none;\n align-items:center;\n background-color: white;\n border: dashed 1px red;\n padding: 20px;\n }\n\n .div-row-error-message {\n color: red;\n padding: 5px;\n background-color: white;\n text-align: center;\n }\n\n .div-row-success {\n display: flex;\n justify-content: center;\n position: fixed;\n top: 0px;\n right: 0px;\n margin-top: 20px;\n margin-right: 20px;\n display: none;\n align-items:center;\n background-color: white;\n border: dashed 1px green;\n padding: 20px;\n }\n\n .div-row-success-message {\n color: green;\n padding: 5px;\n background-color: white;\n text-align: center;\n }\n\n .d-flex {\n display: flex;\n }\n\n .flex-col {\n flex-direction: column;\n }\n\n .justify-center {\n justify-content: center;\n }\n\n .justify-between {\n justify-content: space-between;\n }\n\n .justify-end {\n justify-content: flex-end;\n }\n\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n } \n\n .hide {\n display: none;\n }\n\n .lb {\n width: 5%\n }\n .rb {\n width: 5%\n }\n\n @media (orientation: landscape) {\n\n .lb {\n width: 30%\n }\n .rb {\n width: 30%\n }\n\n #calendar-container {\n width: 40%;\n }\n\n .calendar-item {\n width: 20%;\n margin: 2%;\n padding: 1%;\n }\n\n }\n\n `;\n \n @query('.div-row-error')\n _SfRowError: any;\n\n @query('.div-row-error-message')\n _SfRowErrorMessage: any;\n\n @query('.div-row-success')\n _SfRowSuccess: any;\n\n @query('.div-row-success-message')\n _SfRowSuccessMessage: any;\n\n @query('.loader-element')\n _SfLoader: any;\n\n @query('#calendar-container')\n _SfCalendarContainer: any;\n\n @query('#stream-container')\n _SfStreamContainer: any;\n\n @query('#tab-container')\n _SfTabContainer: any;\n\n getEventField = (field: string) => {\n\n for(var i = 0; i < this.getEventFields().length; i++) {\n\n if(this.getEventFields()[i].field == field) {\n return this.getEventFields()[i];\n }\n\n }\n\n }\n\n getParentFieldFromDepedencies = (field: string) => {\n\n for(var i = 0; i < this.getEventFieldDependencies().length; i++) {\n\n if(this.getEventFieldDependencies()[i].type == \"foreignkey\" && this.getEventFieldDependencies()[i].child == field) {\n return this.getEventFieldDependencies()[i].parent;\n }\n\n }\n\n return null;\n\n }\n\n getEventTexts = (field: string, selectedId: Array<string>, row: any) => {\n\n console.log('get event texts', field, selectedId, row);\n\n if(this.getEventField(field) != null && this.getEventField(field).type == \"sf-i-select\") {\n\n var selectedIds = \"\";\n selectedIds += '[';\n for(var i = 0; i < selectedId.length; i++) {\n selectedIds += ('&quot;'+selectedId[i]+'&quot;');\n if(i < selectedId.length - 1) {\n selectedIds += ',';\n }\n }\n selectedIds += ']';\n\n return '<sf-i-select apiId=\"'+this.getEventField(field).apiId+'\" name=\"Select\" label=\"Select\" mode=\"text\" selectedId=\"'+selectedIds+'\"></sf-i-select>'\n\n }\n\n if(this.getEventField(field) != null && this.getEventField(field).type == \"sf-i-sub-select\") {\n\n const parentField = this.getParentFieldFromDepedencies(field);\n\n console.log('parentfield', parentField);\n\n var selectedIds = \"\";\n selectedIds += '[';\n for(var i = 0; i < selectedId.length; i++) {\n selectedIds += ('&quot;'+selectedId[i]+'&quot;');\n if(i < selectedId.length - 1) {\n selectedIds += ',';\n }\n }\n selectedIds += ']';\n\n const filterId = JSON.parse(row[parentField])[0];\n\n console.log('<sf-i-sub-select apiId=\"'+this.getEventField(field).apiId+'\" name=\"Select\" label=\"Select\" mode=\"text\" selectedId=\"'+selectedIds+'\" filterId=\"'+filterId+'\"></sf-i-sub-select>');\n\n return '<sf-i-sub-select apiId=\"'+this.getEventField(field).apiId+'\" name=\"Select\" label=\"Select\" mode=\"text\" selectedId=\"'+selectedIds+'\" filterId=\"'+filterId+'\"></sf-i-sub-select>'\n\n }\n\n if(this.getEventField(field) != null && this.getEventField(field).type == \"sf-i-form\") {\n\n console.log('<sf-i-form name=\"Select\" apiId=\"'+this.getEventField(field).apiId+'\" selectedId=\"'+selectedId[0]+'\" projectField=\"'+this.getEventField(field).projectField+'\" mode=\"text\"></sf-i-form>');\n\n return '<sf-i-form name=\"Select\" apiId=\"'+this.getEventField(field).apiId+'\" selectedId=\"'+selectedId[0]+'\" projectField=\"'+this.getEventField(field).projectField+'\" mode=\"text\"></sf-i-form>'\n }\n\n \n\n return \"\";\n }\n\n enableStream(value: boolean) {\n\n if(value) {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'flex';\n } else {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'flex';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n }\n\n }\n\n prepareXhr = async (data: any, url: string, loaderElement: any, authorization: any) => {\n\n \n if(loaderElement != null) {\n loaderElement.innerHTML = '<div class=\"lds-dual-ring\"></div>';\n }\n return await Util.callApi(url, data, authorization);\n\n }\n\n clearMessages = () => {\n this._SfRowError.style.display = 'none';\n this._SfRowErrorMessage.innerHTML = '';\n this._SfRowSuccess.style.display = 'none';\n this._SfRowSuccessMessage.innerHTML = '';\n }\n\n setError = (msg: string) => {\n this._SfRowError.style.display = 'flex';\n this._SfRowErrorMessage.innerHTML = msg;\n this._SfRowSuccess.style.display = 'none';\n this._SfRowSuccessMessage.innerHTML = '';\n }\n\n setSuccess = (msg: string) => {\n this._SfRowError.style.display = 'none';\n this._SfRowErrorMessage.innerHTML = '';\n this._SfRowSuccess.style.display = 'flex';\n this._SfRowSuccessMessage.innerHTML = msg;\n }\n\n getLastDayOfLastMonth = (month: number, year: number) => {\n const date = new Date(year, month, 0);\n return date.getDate()\n }\n\n getLastDayOfMonth = (month: number, year: number) => {\n const date = new Date(year, month + 1, 0);\n return date.getDate()\n }\n\n getBlanks = (month: number, year: number) => {\n\n const date = new Date((\"0\" + (month+1)).slice(-2) + '/01/' + year);\n const day = date.getDay();\n return day;\n\n }\n\n insertDates = (month: number, year: number) => {\n\n var html = \"\";\n\n html += '<div class=\"d-flex align-baseline flex-grow flex-wrap\">';\n\n const dateNumber = this.getLastDayOfLastMonth(month, year);\n\n for(var i = 0; i < this.getBlanks(month, year); i++) {\n\n html += '<div class=\"day-item date-item-before fw-100\">';\n html += dateNumber-(this.getBlanks(month, year) - i - 1);\n html += '</div>'; \n\n }\n\n for(i = 0; i < this.getLastDayOfMonth(month, year); i++) {\n\n const mmdd = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + (i+1)).slice(-2);\n\n var partName = \"\";\n\n if(this.events[mmdd] != null) {\n partName = \"compliance-calendar-day-with-compliance\";\n html += '<div part=\"' + partName + '\" class=\"day-item date-item fw-600\">';\n html += '<div>'\n html += (i + 1);\n html += '</div>'\n html += '<div class=\"d-flex justify-center\">'\n html += '<div part=\"compliance-date-indicator-primary\" class=\"dot\"></div>'\n html += '</div>'\n html += '</div>'; \n } else {\n partName = \"compliance-calendar-day-without-compliance\";\n html += '<div part=\"' + partName + '\" class=\"day-item date-item fw-100\">';\n html += '<div>'\n html += (i + 1);\n html += '</div>'\n html += '</div>'; \n }\n\n }\n\n for(i = 0; i < 42 - (this.getBlanks(month, year) + this.getLastDayOfMonth(month, year)); i++) {\n html += '<div class=\"day-item date-item-before fw-100\">';\n html += (i+1);\n html += '</div>'; \n }\n\n html += '</div>';\n\n return html;\n\n }\n\n insertDayNames = () => {\n\n var html = \"\";\n\n html += '<div class=\"d-flex align-center flex-grow\">';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'S';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'M';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'T';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'W';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'T';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'F';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'S';\n html += '</div>';\n\n html += '</div>';\n\n return html;\n\n }\n\n renderStreamEvents = (index: number, month: number, year: number) => {\n\n const lastDay = this.getLastDayOfMonth(month, year);\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n for(var i = 1; i <= lastDay; i++) {\n\n const mmdd = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + i).slice(-2);\n\n var hide = true;\n\n if(this.events[mmdd] != null) {\n hide = false;\n } else if(i === 1){\n hide = false;\n } else if(i === lastDay){\n hide = false;\n } else {\n const mmddPrev = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + (i-1)).slice(-2);\n const mmddNext = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + (i+1)).slice(-2);\n console.log('hide', i, hide);\n if((this.events[mmddPrev] != null || this.events[mmddNext] != null)) {\n hide = false;\n }\n }\n\n console.log('hide', i, hide);\n\n if(this.events[mmdd] != null) {\n //html += '<div>'+month + ',' + year + ',' + i+'</div>'\n html += '<div part=\"stream-event-selected\" class=\"d-flex stream-event-selected\">';\n html += '<div part=\"stream-event-selected-date\">'+(\"0\" + i).slice(-2)+' |</div>';\n for(var j = 0; j < (this.events[mmdd] as Array<any>).length; j++) {\n html += '<div class=\"stream-events-container flex-grow\">';\n html += '<table>';\n html += '<thead>';\n for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {\n html += '<th part=\"td-head\">';\n html += Object.keys(this.events[mmdd][j])[k];\n html += '</th>';\n }\n html += '</thead>';\n html += '<tbody>';\n for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {\n html += '<th part=\"td-body\">';\n if(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(this.events[mmdd][j])[k], JSON.parse(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]]), this.events[mmdd][j]);\n } else {\n html += this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].replace(/\"/g, \"\");\n }\n \n html += '</th>';\n }\n html += '</tbody>';\n html += '</table>';\n html += '</div>';\n }\n html += '</div>';\n } else {\n if(!hide) {\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected\">';\n html += '<div>'+(\"0\" + i).slice(-2)+' |</div>';\n html += '</div>';\n } else {\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected-hidden\">';\n //html += '<div>'+(\"0\" + i).slice(-2)+' |</div>';\n html += '<div>.</div>';\n html += '</div>';\n }\n }\n \n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderStream = (index: number = 0) => {\n\n console.log('renderstream', index);\n\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n var html = '';\n\n html += '<div class=\"d-flex flex-grow\">';\n html += '<div class=\"calendar-left-col\">';\n\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n for(var i = 0; i < 12; i++) {\n\n var part = \"\";\n\n if(i === index) {\n part = \"stream-month-selected\";\n } else {\n part = \"stream-month-not-selected\";\n }\n\n html += '<div part=\"'+part+'\" id=\"stream-month-'+i+'\" part=\"month-title\" class=\"title-item '+part+'\">' + this.monthNames[startDate.getMonth()] + '&nbsp;&nbsp;' + startDate.getFullYear() + '</div>';\n startDate.setMonth(startDate.getMonth() + 1);\n }\n\n html += '</div>';\n html += '<div class=\"calendar-right-data\">';\n\n startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n for(i = 0; i < 12; i++) {\n if(i === index) {\n console.log(i, index)\n html += this.renderStreamEvents(i, startDate.getMonth(), startDate.getFullYear())\n }\n startDate.setMonth(startDate.getMonth() + 1);\n }\n html += '</div>';\n html += '</div>';\n\n (this._SfStreamContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 12; i++) {\n (this._SfStreamContainer as HTMLDivElement).querySelector('#stream-month-' + i)?.addEventListener('click', (ev: any)=> {\n\n const target = parseInt((ev.target as HTMLDivElement).id.split('-')[2]);\n this.renderStream(target);\n\n })\n }\n\n }\n\n renderCalendar = () => {\n\n console.log('redering calendar', this.events);\n\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n var html = '';\n\n for(var i = 0; i < 12; i++) {\n\n html += '<div class=\"calendar-item d-flex flex-col flex-grow\" part=\"calendar-month\">';\n html += '<div class=\"d-flex justify-between align-center\">';\n html += '<div part=\"month-title\" class=\"title-item\">' + this.monthNames[startDate.getMonth()] + '&nbsp;&nbsp;' + startDate.getFullYear() + '</div>';\n html += '<button id=\"calendar-button-'+i+'\" part=\"button-icon-small\" class=\"title-item material-icons\">open_in_new</button>'\n html += '</div>';\n html += this.insertDayNames();\n html += this.insertDates(startDate.getMonth(), startDate.getFullYear());\n html += '</div>';\n\n startDate.setMonth(startDate.getMonth() + 1);\n \n }\n\n (this._SfCalendarContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 12; i++) {\n\n (this._SfCalendarContainer as HTMLDivElement).querySelector('#calendar-button-' + i)?.addEventListener('click', (ev: any) => {\n\n const id = (ev.target as HTMLButtonElement).id.split(\"-\")[2];\n this.enableStream(true);\n this.renderStream(parseInt(id));\n this.renderTabs(true);\n\n })\n\n }\n\n }\n\n renderTabs = (enableStream: boolean) => {\n\n var html = '';\n\n html += '<button class=\"tab-button\" id=\"calendar-tab-year\" part=\"'+(enableStream ? 'calendar-tab-button-not-selected' : 'calendar-tab-button-selected')+'\">Year</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-month\" part=\"'+(enableStream ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Month</button>';\n\n (this._SfTabContainer as HTMLDivElement).innerHTML = html;\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-year')?.addEventListener('click', () => {\n this.enableStream(false);\n this.renderTabs(false);\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-month')?.addEventListener('click', () => {\n this.enableStream(true);\n this.renderTabs(true);\n });\n\n }\n\n processEvent = (value: any) => {\n\n console.log('processing due date', value.duedate.replace(/['\"]+/g, ''));\n const duedateArr = value.duedate.replace(/['\"]+/g, '').split(\",\") as Array<string>;\n\n const startMonth = parseInt(this.calendarStartMM);\n\n for(var i = 0; i < duedateArr.length; i++) {\n\n const dateArr = duedateArr[i].split(\"/\");\n console.log('datearr', dateArr);\n\n if(dateArr[2] == \"*\") {\n if(dateArr[1] == \"*\") {\n\n var j = startMonth;\n\n while(true) {\n\n console.log('processing event',dateArr[2],dateArr[1],j);\n\n const mmdd = (\"0\" +j).slice(-2) + \"/\" + (\"0\" + dateArr[0]).slice(-2);\n\n if(this.events == null) {\n this.events = {};\n }\n if(this.events[mmdd] == null) {\n this.events[mmdd] = [];\n }\n (this.events[mmdd] as Array<any>).push(value);\n\n\n if(startMonth !== 12) {\n\n if(j === (startMonth - 1)) {\n break;\n }\n }\n\n\n j++;\n\n if(j === 13) {\n j = 0;\n }\n\n } \n\n } else {\n\n const mmdd = (\"0\" +(parseInt(dateArr[1]))).slice(-2) + \"/\" + (\"0\" + dateArr[0]).slice(-2);\n\n if(this.events == null) {\n this.events = {};\n }\n if(this.events[mmdd] == null) {\n this.events[mmdd] = [];\n }\n (this.events[mmdd] as Array<any>).push(value);\n\n }\n }\n\n }\n\n console.log('calendar processed', this.calendar);\n console.log('event processed', this.events);\n\n }\n\n fetchDetail = async (value: any) => {\n\n const body: any = this.getApiBodyList();\n body.id = value;\n console.log('detail', value, body);\n let url = \"https://\"+this.apiIdDetail+\".execute-api.us-east-1.amazonaws.com/test/\" + this.apiMethodDetail;\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\n this._SfLoader.innerHTML = '';\n if(xhr.status == 200) {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n console.log('jsonResponse', jsonRespose);\n this.processEvent(jsonRespose.data.value)\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n fetchList = async () => {\n\n console.log('calendar fetching list', this.apiIdList);\n\n const body: any = this.getApiBodyList();\n\n if(this.apiIdList != null) {\n\n let url = \"https://\"+this.apiIdList+\".execute-api.us-east-1.amazonaws.com/test/\" + this.apiMethodList;\n\n console.log('calendar request body', body);\n console.log('calendar request url', url);\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\n this._SfLoader.innerHTML = '';\n if(xhr.status == 200) {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n const fieldArr = JSON.parse(jsonRespose.data.value[this.apiResponseFieldList]) as Array<string>;\n\n for(var i = 0; i < fieldArr.length; i++) {\n\n console.log('events', fieldArr[i]);\n await this.fetchDetail(fieldArr[i])\n\n }\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n }\n\n initCalendar = async () => {\n\n var newDate = null;\n var newMonth = null;\n var newYear = null;\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n console.log('startDate', startDate);\n \n do {\n\n this.calendar.push(startDate);\n startDate.setDate(startDate.getDate() + 1);\n\n newDate = (\"0\" + startDate.getDate()).slice(-2);\n newMonth = (\"0\" + startDate.getMonth()).slice(-2);\n newYear = (startDate.getFullYear());\n\n } while(!(newDate == this.calendarStartDD && newMonth == ((\"0\" + ((parseInt(this.calendarStartMM) - 1) + \"\")).slice(-2)) && newYear === (parseInt(this.calendarStartYYYY) + 1)));\n\n console.log(this.calendar);\n\n }\n\n initInputs = () => {\n\n this.calendarStartDD = (\"0\" + this.calendarStartDD).slice(-2);\n this.calendarStartMM = (\"0\" + this.calendarStartMM).slice(-2);\n\n }\n\n initListeners = () => {\n\n \n }\n\n loadMode = async () => {\n\n this.enableStream(false);\n this.initListeners();\n this.initInputs();\n this.initCalendar();\n\n console.log('calendar init done');\n\n await this.fetchList();\n \n if(this.events != null) {\n this.renderTabs(false);\n this.renderCalendar();\n this.renderStream();\n }\n\n }\n\n constructor() {\n super();\n }\n\n protected override firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\n this.loadMode();\n\n }\n \n override connectedCallback() {\n super.connectedCallback()\n }\n \n override render() {\n\n return html`\n \n <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n <div class=\"SfIEventsC\">\n \n <div class=\"d-flex justify-center\">\n <div class=\"loader-element\"></div>\n </div>\n <div class=\"d-flex justify-center\" id=\"tab-container\">\n\n </div>\n <div class=\"d-flex justify-center\">\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"calendar-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"stream-container\">\n \n </div>\n </div>\n <div class=\"d-flex justify-between\">\n <div class=\"lb\"></div>\n <div>\n <div class=\"div-row-error div-row-submit gone\">\n <div part=\"errormsg\" class=\"div-row-error-message\"></div>\n </div>\n <div class=\"div-row-success div-row-submit gone\">\n <div part=\"successmsg\" class=\"div-row-success-message\"></div>\n </div>\n </div>\n <div class=\"rb\"></div>\n </div>\n </div>\n\n `;\n }\n\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sf-i-events': SfIEvents;\n }\n}\n"]}
1
+ {"version":3,"file":"sf-i-events.js","sourceRoot":"","sources":["src/sf-i-events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;AAEH,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAmB,MAAM,KAAK,CAAC;AAC5D,2FAA2F;AAC3F,OAAO,EAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AACjE,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,6CAA6C;AAC7C,mDAAmD;AAGnD;;;;;EAKE;AAEF;;;;;;;;;;GAUG;AAEH,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,UAAU;IAytCvC;QACE,KAAK,EAAE,CAAC;QAxtCV,aAAQ,GAAG,MAAM,CAAC;QAClB,eAAU,GAAG,QAAQ,CAAC;QACtB,iBAAY,GAAG,UAAU,CAAC;QAiC1B,aAAQ,GAAY,EAAE,CAAC;QAGvB,eAAU,GAAe,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAGpJ,WAAM,GAAQ,IAAI,CAAC;QAGnB,gBAAW,GAAQ,IAAI,CAAC;QAExB,mBAAc,GAAG,GAAG,EAAE;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAA;QAGD,2BAAsB,GAAQ,IAAI,CAAC;QAEnC,8BAAyB,GAAG,GAAG,EAAE;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjD,CAAC,CAAA;QAED,mBAAc,GAAG,GAAG,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACrC;YAAC,OAAO,CAAM,EAAE;gBACf,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAA;QAED,qBAAgB,GAAG,GAAG,EAAE;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC,CAAA;QAMD,SAAI,GAAW,EAAE,CAAC;QAyXlB,kBAAa,GAAG,CAAC,KAAa,EAAE,EAAE;YAEhC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAEpD,IAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE;oBAC1C,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;iBACjC;aAEF;QAEH,CAAC,CAAA;QAED,kCAA6B,GAAG,CAAC,KAAa,EAAE,EAAE;YAEhD,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAE/D,IAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE;oBACjH,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;iBACnD;aAEF;YAED,OAAO,IAAI,CAAC;QAEd,CAAC,CAAA;QAED,kBAAa,GAAG,CAAC,KAAa,EAAE,UAAyB,EAAE,GAAQ,EAAE,EAAE;YAErE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAEvD,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,aAAa,EAAE;gBAEvF,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,WAAW,IAAI,GAAG,CAAC;gBACnB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,WAAW,IAAI,CAAC,QAAQ,GAAC,UAAU,CAAC,CAAC,CAAC,GAAC,QAAQ,CAAC,CAAC;oBACjD,IAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,WAAW,IAAI,GAAG,CAAC;qBACpB;iBACF;gBACD,WAAW,IAAI,GAAG,CAAC;gBAEnB,OAAO,sBAAsB,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAC,yDAAyD,GAAC,WAAW,GAAC,kBAAkB,CAAA;aAEvJ;YAED,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,iBAAiB,EAAE;gBAE3F,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;gBAE9D,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gBAExC,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,WAAW,IAAI,GAAG,CAAC;gBACnB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,WAAW,IAAI,CAAC,QAAQ,GAAC,UAAU,CAAC,CAAC,CAAC,GAAC,QAAQ,CAAC,CAAC;oBACjD,IAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,WAAW,IAAI,GAAG,CAAC;qBACpB;iBACF;gBACD,WAAW,IAAI,GAAG,CAAC;gBAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjD,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAC,yDAAyD,GAAC,WAAW,GAAC,cAAc,GAAC,QAAQ,GAAC,sBAAsB,CAAC,CAAC;gBAE7L,OAAO,0BAA0B,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAC,yDAAyD,GAAC,WAAW,GAAC,cAAc,GAAC,QAAQ,GAAC,sBAAsB,CAAA;aAEvL;YAED,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,WAAW,EAAE;gBAErF,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAC,gBAAgB,GAAC,UAAU,CAAC,CAAC,CAAC,GAAC,kBAAkB,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,YAAY,GAAC,4BAA4B,CAAC,CAAC;gBAEtM,OAAO,kCAAkC,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAC,gBAAgB,GAAC,UAAU,CAAC,CAAC,CAAC,GAAC,kBAAkB,GAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,YAAY,GAAC,4BAA4B,CAAA;aAChM;YAID,OAAO,EAAE,CAAC;QACZ,CAAC,CAAA;QAED,mBAAc,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,oBAAuC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACpE,IAAI,CAAC,kBAAqC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAClE,IAAI,CAAC,oBAAuC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvE,CAAC,CAAA;QAED,iBAAY,GAAG,GAAG,EAAE;YACf,IAAI,CAAC,oBAAuC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACpE,IAAI,CAAC,kBAAqC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAClE,IAAI,CAAC,oBAAuC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzE,CAAC,CAAA;QAQD,eAAU,GAAG,KAAK,EAAE,IAAS,EAAE,GAAW,EAAE,aAAkB,EAAE,aAAkB,EAAE,EAAE;YAGpF,IAAG,aAAa,IAAI,IAAI,EAAE;gBACxB,aAAa,CAAC,SAAS,GAAG,mCAAmC,CAAC;aAC/D;YACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAEtD,CAAC,CAAA;QAED,kBAAa,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC1C,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3C,CAAC,CAAA;QAED,aAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,GAAG,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC1C,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3C,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC1C,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,GAAG,CAAC;QAC5C,CAAC,CAAA;QAED,0BAAqB,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;QACvB,CAAC,CAAA;QAED,sBAAiB,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;QACvB,CAAC,CAAA;QAED,cAAS,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;YAE1C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC;QAEb,CAAC,CAAA;QAED,gBAAW,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;YAE5C,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,IAAI,yDAAyD,CAAC;YAElE,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE3D,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAEnD,IAAI,IAAI,gDAAgD,CAAC;gBACzD,IAAI,IAAI,UAAU,GAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzD,IAAI,IAAI,QAAQ,CAAC;aAElB;YAED,KAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAEvD,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzE,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAElB,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAC5B,QAAQ,GAAG,yCAAyC,CAAC;oBACrD,IAAI,IAAI,aAAa,GAAG,QAAQ,GAAG,sCAAsC,CAAC;oBACxE,IAAI,IAAI,OAAO,CAAA;oBACb,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClB,IAAI,IAAI,QAAQ,CAAA;oBAChB,IAAI,IAAI,qCAAqC,CAAA;oBAC3C,IAAI,IAAI,kEAAkE,CAAA;oBAC5E,IAAI,IAAI,QAAQ,CAAA;oBAClB,IAAI,IAAI,QAAQ,CAAC;iBAClB;qBAAM;oBACL,QAAQ,GAAG,4CAA4C,CAAC;oBACxD,IAAI,IAAI,aAAa,GAAG,QAAQ,GAAG,sCAAsC,CAAC;oBACxE,IAAI,IAAI,OAAO,CAAA;oBACb,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClB,IAAI,IAAI,QAAQ,CAAA;oBAClB,IAAI,IAAI,QAAQ,CAAC;iBAClB;aAEF;YAED,KAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5F,IAAI,IAAI,gDAAgD,CAAC;gBACzD,IAAI,IAAI,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;gBACd,IAAI,IAAI,QAAQ,CAAC;aAClB;YAED,IAAI,IAAI,QAAQ,CAAC;YAEjB,OAAO,IAAI,CAAC;QAEd,CAAC,CAAA;QAED,mBAAc,GAAG,GAAG,EAAE;YAEpB,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,IAAI,6CAA6C,CAAC;YAEtD,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,wDAAwD,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,IAAI,QAAQ,CAAC;YAEjB,IAAI,IAAI,QAAQ,CAAC;YAEjB,OAAO,IAAI,CAAC;QAEd,CAAC,CAAA;QAED,uBAAkB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;YAElE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEpD,IAAI,IAAI,GAAG,wBAAwB,GAAC,KAAK,GAAC,uDAAuD,CAAC;YAElG,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;gBAEhC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAErE,IAAI,IAAI,GAAG,IAAI,CAAC;gBAEhB,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAC5B,IAAI,GAAG,KAAK,CAAC;iBACd;qBAAM,IAAG,CAAC,KAAK,CAAC,EAAC;oBAChB,IAAI,GAAG,KAAK,CAAC;iBACd;qBAAM,IAAG,CAAC,KAAK,OAAO,EAAC;oBACtB,IAAI,GAAG,KAAK,CAAC;iBACd;qBAAM;oBACL,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC7B,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE;wBACnE,IAAI,GAAG,KAAK,CAAC;qBACd;iBACF;gBAED,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAE7B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAC5B,uDAAuD;oBACvD,IAAI,IAAI,yEAAyE,CAAC;oBAChF,IAAI,IAAI,yCAAyC,GAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAC,UAAU,CAAC;oBACjF,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAChE,IAAI,IAAI,iDAAiD,CAAC;wBACxD,IAAI,IAAI,SAAS,CAAC;wBAClB,IAAI,IAAI,SAAS,CAAC;wBAClB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAChE,IAAI,IAAI,qBAAqB,CAAC;4BAC9B,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7C,IAAI,IAAI,OAAO,CAAC;yBACjB;wBACD,IAAI,IAAI,UAAU,CAAC;wBACnB,IAAI,IAAI,SAAS,CAAC;wBAClB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAChE,IAAI,IAAI,qBAAqB,CAAC;4BAC9B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gCAC/E,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;6BAChK;iCAAM;gCACL,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;6BACtF;4BAED,IAAI,IAAI,OAAO,CAAC;yBACjB;wBACD,IAAI,IAAI,UAAU,CAAC;wBACnB,IAAI,IAAI,UAAU,CAAC;wBACrB,IAAI,IAAI,QAAQ,CAAC;qBAClB;oBACH,IAAI,IAAI,QAAQ,CAAC;iBAClB;qBAAM;oBACL,IAAG,CAAC,IAAI,EAAE;wBACR,IAAI,IAAI,iFAAiF,CAAC;wBAC1F,IAAI,IAAI,OAAO,GAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAC,QAAQ,CAAC;wBAC7C,IAAI,IAAI,QAAQ,CAAC;qBAClB;yBAAM;wBACL,IAAI,IAAI,wFAAwF,CAAC;wBACjG,iDAAiD;wBACjD,IAAI,IAAI,cAAc,CAAC;wBACvB,IAAI,IAAI,QAAQ,CAAC;qBAClB;iBACF;aAGF;YAED,IAAI,IAAI,QAAQ,CAAA;YAEhB,OAAO,IAAI,CAAC;QAEd,CAAC,CAAA;QAED,yBAAoB,GAAG,CAAC,KAAY,EAAE,SAAe,EAAE,KAAa,EAAE,EAAE;YAEtE,IAAI,IAAI,GAAG,wBAAwB,GAAC,KAAK,GAAC,uDAAuD,CAAC;YAElG,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;gBAE9B,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEtG,IAAI,IAAI,GAAG,IAAI,CAAC;gBAEhB,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAC5B,IAAI,GAAG,KAAK,CAAC;iBACd;qBAAM,IAAG,CAAC,KAAK,CAAC,EAAC;oBAChB,IAAI,GAAG,KAAK,CAAC;iBACd;qBAAM,IAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC;oBACtB,IAAI,GAAG,KAAK,CAAC;iBACd;qBAAM;oBAEL,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpD,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBAE/C,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpD,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBAE/C,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpH,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpH,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC/E,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE;wBACnE,IAAI,GAAG,KAAK,CAAC;qBACd;iBACF;gBAED,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAE5B,IAAI,IAAI,yEAAyE,CAAC;oBAChF,IAAI,IAAI,yCAAyC,GAAC,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,GAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAC,CAAC,CAAC,GAAC,UAAU,CAAC;oBAChI,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAChE,IAAI,IAAI,iDAAiD,CAAC;wBACxD,IAAI,IAAI,SAAS,CAAC;wBAClB,IAAI,IAAI,SAAS,CAAC;wBAClB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAChE,IAAI,IAAI,qBAAqB,CAAC;4BAC9B,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7C,IAAI,IAAI,OAAO,CAAC;yBACjB;wBACD,IAAI,IAAI,UAAU,CAAC;wBACnB,IAAI,IAAI,SAAS,CAAC;wBAClB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAChE,IAAI,IAAI,qBAAqB,CAAC;4BAC9B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gCAC/E,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;6BAChK;iCAAM;gCACL,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;6BACtF;4BAED,IAAI,IAAI,OAAO,CAAC;yBACjB;wBACD,IAAI,IAAI,UAAU,CAAC;wBACnB,IAAI,IAAI,UAAU,CAAC;wBACrB,IAAI,IAAI,QAAQ,CAAC;qBAClB;oBACH,IAAI,IAAI,QAAQ,CAAC;iBAElB;qBAAM;oBAEL,IAAG,CAAC,IAAI,EAAE;wBACR,IAAI,IAAI,iFAAiF,CAAC;wBAC1F,IAAI,IAAI,OAAO,GAAC,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,GAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAC,CAAC,CAAC,GAAC,QAAQ,CAAC;wBAC5F,IAAI,IAAI,QAAQ,CAAC;qBAClB;yBAAM;wBACL,IAAI,IAAI,wFAAwF,CAAC;wBACjG,iDAAiD;wBACjD,IAAI,IAAI,cAAc,CAAC;wBACvB,IAAI,IAAI,QAAQ,CAAC;qBAClB;iBAEF;gBAED,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aAE5C;YAED,IAAI,IAAI,QAAQ,CAAA;YAEhB,OAAO,IAAI,CAAC;QAEd,CAAC,CAAA;QAED,mBAAc,GAAG,CAAC,QAAgB,CAAC,EAAE,EAAE;;YAErC,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,IAAI,gCAAgC,CAAC;YACvC,IAAI,IAAI,iCAAiC,CAAC;YAExC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAG,KAAK,KAAK,CAAC,EAAE;gBACd,IAAI,GAAG,uBAAuB,CAAC;aAChC;iBAAM;gBACL,IAAI,GAAG,2BAA2B,CAAC;aACpC;YACD,IAAI,IAAI,aAAa,GAAC,IAAI,GAAC,6DAA6D,GAAC,IAAI,GAAC,gBAAgB,CAAC;YAE/G,IAAI,GAAG,EAAE,CAAC;YACV,IAAG,KAAK,KAAK,CAAC,EAAE;gBACd,IAAI,GAAG,uBAAuB,CAAC;aAChC;iBAAM;gBACL,IAAI,GAAG,2BAA2B,CAAC;aACpC;YACD,IAAI,IAAI,aAAa,GAAC,IAAI,GAAC,6DAA6D,GAAC,IAAI,GAAC,iBAAiB,CAAC;YAEhH,IAAI,GAAG,EAAE,CAAC;YACV,IAAG,KAAK,KAAK,CAAC,EAAE;gBACd,IAAI,GAAG,uBAAuB,CAAC;aAChC;iBAAM;gBACL,IAAI,GAAG,2BAA2B,CAAC;aACpC;YACD,IAAI,IAAI,aAAa,GAAC,IAAI,GAAC,6DAA6D,GAAC,IAAI,GAAC,iBAAiB,CAAC;YAElH,IAAI,IAAI,QAAQ,CAAC;YACjB,IAAI,IAAI,mCAAmC,CAAC;YAE3C,8GAA8G;YAC9G,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAG,KAAK,KAAK,CAAC,EAAE;gBACd,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACvD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aAC5C;YAED,IAAG,KAAK,KAAK,CAAC,EAAE;gBACd,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;gBACxD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aAC5C;YAED,IAAG,KAAK,KAAK,CAAC,EAAE;gBACd,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;gBACxD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aAC5C;YAGD,IAAI,IAAI,QAAQ,CAAC;YACnB,IAAI,IAAI,QAAQ,CAAC;YAEhB,IAAI,CAAC,oBAAuC,CAAC,SAAS,GAAG,IAAI,CAAC;YAE/D,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzB,MAAC,IAAI,CAAC,oBAAuC,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAO,EAAC,EAAE;oBACtH,MAAM,MAAM,GAAG,QAAQ,CAAE,EAAE,CAAC,MAAyB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAE9B,CAAC,CAAC,CAAA;aACH;QAEH,CAAC,CAAA;QAED,iBAAY,GAAG,CAAC,QAAgB,CAAC,EAAE,EAAE;;YAEnC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAEnC,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE3G,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,IAAI,gCAAgC,CAAC;YACvC,IAAI,IAAI,iCAAiC,CAAC;YAExC,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE3G,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAE1B,IAAI,IAAI,GAAG,EAAE,CAAC;gBAEd,IAAG,CAAC,KAAK,KAAK,EAAE;oBACd,IAAI,GAAG,uBAAuB,CAAC;iBAChC;qBAAM;oBACL,IAAI,GAAG,2BAA2B,CAAC;iBACpC;gBAED,IAAI,IAAI,aAAa,GAAC,IAAI,GAAC,qBAAqB,GAAC,CAAC,GAAC,yCAAyC,GAAC,IAAI,GAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;gBACrM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aAC9C;YAEH,IAAI,IAAI,QAAQ,CAAC;YACjB,IAAI,IAAI,mCAAmC,CAAC;YAE1C,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvG,KAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAG,CAAC,KAAK,KAAK,EAAE;oBACd,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;oBACrB,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;iBAClF;gBACD,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aAC9C;YACH,IAAI,IAAI,QAAQ,CAAC;YACnB,IAAI,IAAI,QAAQ,CAAC;YAEhB,IAAI,CAAC,kBAAqC,CAAC,SAAS,GAAG,IAAI,CAAC;YAE7D,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAC,IAAI,CAAC,kBAAqC,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAO,EAAC,EAAE;oBAEpH,MAAM,MAAM,GAAG,QAAQ,CAAE,EAAE,CAAC,MAAyB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAE5B,CAAC,CAAC,CAAA;aACH;QAEH,CAAC,CAAA;QAED,mBAAc,GAAG,GAAG,EAAE;;YAEpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE3G,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAE1B,IAAI,IAAI,6EAA6E,CAAC;gBACtF,IAAI,IAAI,mDAAmD,CAAC;gBAC5D,IAAI,IAAI,6CAA6C,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;gBACpJ,IAAI,IAAI,8BAA8B,GAAC,CAAC,GAAC,mFAAmF,CAAA;gBAC5H,IAAI,IAAI,QAAQ,CAAC;gBACjB,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC9B,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACxE,IAAI,IAAI,QAAQ,CAAC;gBAEjB,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aAE9C;YAEA,IAAI,CAAC,oBAAuC,CAAC,SAAS,GAAG,IAAI,CAAC;YAE/D,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAE1B,MAAC,IAAI,CAAC,oBAAuC,CAAC,aAAa,CAAC,mBAAmB,GAAG,CAAC,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAO,EAAE,EAAE;oBAE1H,MAAM,EAAE,GAAI,EAAE,CAAC,MAA4B,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEnC,CAAC,CAAC,CAAA;aAEH;QAEH,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,WAAmB,EAAE,EAAE;;YAEnC,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,IAAI,0DAA0D,GAAC,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kCAAkC,CAAC,GAAC,iBAAiB,CAAC;YAC1L,IAAI,IAAI,2DAA2D,GAAC,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kCAAkC,CAAC,GAAC,kBAAkB,CAAC;YAC9L,IAAI,IAAI,8DAA8D,GAAC,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kCAAkC,CAAC,GAAC,qBAAqB,CAAC;YAErM,IAAI,CAAC,eAAkC,CAAC,SAAS,GAAG,IAAI,CAAC;YAE1D,MAAC,IAAI,CAAC,eAAkC,CAAC,aAAa,CAAC,oBAAoB,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3G,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,MAAC,IAAI,CAAC,eAAkC,CAAC,aAAa,CAAC,qBAAqB,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC5G,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,MAAC,IAAI,CAAC,eAAkC,CAAC,aAAa,CAAC,wBAAwB,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC/G,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QAEL,CAAC,CAAA;QAED,iBAAY,GAAG,CAAC,KAAU,EAAE,EAAE;YAE5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;YAEnF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAElD,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAEzC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAEhC,IAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;oBACpB,IAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;wBAEpB,IAAI,CAAC,GAAG,UAAU,CAAC;wBAEnB,OAAM,IAAI,EAAE;4BAEV,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,OAAO,CAAC,CAAC,CAAC,EAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;4BAExD,MAAM,IAAI,GAAI,CAAC,GAAG,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BAEtE,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;gCACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;6BAClB;4BACD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;gCAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;6BACxB;4BACA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAG9C,IAAG,UAAU,KAAK,EAAE,EAAE;gCAEpB,IAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;oCACzB,MAAM;iCACP;6BACF;4BAGD,CAAC,EAAE,CAAC;4BAEJ,IAAG,CAAC,KAAK,EAAE,EAAE;gCACX,CAAC,GAAG,CAAC,CAAC;6BACP;yBAEF;qBAEF;yBAAM;wBAEH,MAAM,IAAI,GAAI,CAAC,GAAG,GAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE3F,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;4BACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;yBAClB;wBACD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;4BAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;yBACxB;wBACA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAEjD;iBACF;aAEF;YAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9C,CAAC,CAAA;QAED,gBAAW,GAAG,KAAK,EAAE,KAAU,EAAE,EAAE;YAEjC,MAAM,IAAI,GAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,GAAG,UAAU,GAAC,IAAI,CAAC,WAAW,GAAC,4CAA4C,GAAG,IAAI,CAAC,eAAe,CAAC;YAE1G,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5F,MAAM,GAAG,GAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAQ,CAAC;YAC3F,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;YAC9B,IAAG,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;gBAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aAE1C;iBAAM;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAClC;QAEH,CAAC,CAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE;YAErB,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,GAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;YAExC,IAAG,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAEzB,IAAI,GAAG,GAAG,UAAU,GAAC,IAAI,CAAC,SAAS,GAAC,4CAA4C,GAAG,IAAI,CAAC,aAAa,CAAC;gBAEtG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;gBAEzC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC5F,MAAM,GAAG,GAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAQ,CAAC;gBAC3F,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC9B,IAAG,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAkB,CAAC;oBAEhG,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAEvC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;qBAEpC;iBAEF;qBAAM;oBACL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACjD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBAClC;aAEF;QAEH,CAAC,CAAA;QAED,iBAAY,GAAG,KAAK,IAAI,EAAE;YAExB,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE3G,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAEpC,GAAG;gBAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAE3C,OAAO,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,QAAQ,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;aAErC,QAAO,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,IAAI,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAEjL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7B,CAAC,CAAA;QAED,eAAU,GAAG,GAAG,EAAE;YAEhB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,CAAC,CAAA;QAED,kBAAa,GAAG,GAAG,EAAE;QAGrB,CAAC,CAAA;QAED,aAAQ,GAAG,KAAK,IAAI,EAAE;YAEpB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAElC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEvB,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;QAEH,CAAC,CAAA;IAID,CAAC;IAxrBD,cAAc;QACX,IAAI,CAAC,oBAAuC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACpE,IAAI,CAAC,kBAAqC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAClE,IAAI,CAAC,oBAAuC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACvE,CAAC;IAsrBkB,YAAY,CAAC,kBAAqE;QAEnG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAElB,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAC3B,CAAC;IAEQ,MAAM;QAEb,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoCV,CAAC;IACJ,CAAC;CAEF,CAAA;AAlsCiB,gBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0V1B,CAAA;AAjaF;IADC,QAAQ,EAAE;4CACQ;AAGnB;IADC,QAAQ,EAAE;8CACU;AAGrB;IADC,QAAQ,EAAE;gDACY;AAGvB;IADC,QAAQ,EAAE;kDACc;AAGzB;IADC,QAAQ,EAAE;8CACU;AAGrB;IADC,QAAQ,EAAE;gDACY;AAGvB;IADC,QAAQ,EAAE;uDACmB;AAG9B;IADC,QAAQ,EAAE;kDACc;AAGzB;IADC,QAAQ,EAAE;kDACc;AAGzB;IADC,QAAQ,EAAE;oDACgB;AAG3B;IADC,QAAQ,EAAE;2CACY;AAGvB;IADC,QAAQ,EAAE;6CACyI;AAGpJ;IADC,QAAQ,EAAE;yCACQ;AAGnB;IADC,QAAQ,EAAE;8CACa;AAOxB;IADC,QAAQ,EAAE;yDACwB;AAoBnC;IADC,QAAQ,EAAE;uCACG;AAGd;IADC,QAAQ,EAAE;uCACO;AA+VlB;IADC,KAAK,CAAC,gBAAgB,CAAC;8CACP;AAGjB;IADC,KAAK,CAAC,wBAAwB,CAAC;qDACR;AAGxB;IADC,KAAK,CAAC,kBAAkB,CAAC;gDACP;AAGnB;IADC,KAAK,CAAC,0BAA0B,CAAC;uDACR;AAG1B;IADC,KAAK,CAAC,iBAAiB,CAAC;4CACV;AAGf;IADC,KAAK,CAAC,qBAAqB,CAAC;uDACH;AAG1B;IADC,KAAK,CAAC,mBAAmB,CAAC;qDACH;AAGxB;IADC,KAAK,CAAC,qBAAqB,CAAC;uDACH;AAG1B;IADC,KAAK,CAAC,gBAAgB,CAAC;kDACH;AAncV,SAAS;IADrB,aAAa,CAAC,aAAa,CAAC;GAChB,SAAS,CAgxCrB;SAhxCY,SAAS","sourcesContent":["/**\n * @license\n * Copyright 2022 Superflow.dev\n * SPDX-License-Identifier: MIT\n */\n\nimport {LitElement, html, css, PropertyValueMap} from 'lit';\n// import {customElement, query, queryAssignedElements, property} from 'lit/decorators.js';\nimport {customElement, query, property} from 'lit/decorators.js';\nimport Util from './util';\n// import {LitElement, html, css} from 'lit';\n// import {customElement} from 'lit/decorators.js';\n\n\n/*\n\nModes: View, Add, Edit, Delete, Admin\nDB: partitionKey, rangeKey, values\n\n*/\n\n/**\n * SfIEvents element.\n * @fires renderComplete - When the list is populated\n * @fires valueChanged - When the value is changed\n * @property apiId - backend api id\n * @property label - input label\n * @property name - name of the input\n * @property mode - mode of operation\n * @property selectedId - id to preselect\n * @property selectedValue - callback function\n */\n@customElement('sf-i-events')\nexport class SfIEvents extends LitElement {\n\n TAB_YEAR = \"year\";\n TAB_STREAM = \"stream\";\n TAB_UPCOMING = \"upcoming\";\n \n @property()\n apiIdList!: string;\n\n @property()\n apiIdDetail!: string;\n\n @property()\n apiMethodList!: string;\n\n @property()\n apiMethodDetail!: string;\n\n @property()\n apiBodyList!: string;\n\n @property()\n apiBodyDetail!: string;\n\n @property()\n apiResponseFieldList!: string;\n\n @property()\n calendarStartDD!: string;\n\n @property()\n calendarStartMM!: string;\n\n @property()\n calendarStartYYYY!: string;\n\n @property()\n calendar: Date [] = [];\n\n @property()\n monthNames: string [] = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n\n @property()\n events: any = null;\n\n @property()\n eventFields: any = null;\n\n getEventFields = () => {\n return JSON.parse(this.eventFields);\n }\n\n @property()\n eventFieldDependencies: any = null;\n\n getEventFieldDependencies = () => {\n return JSON.parse(this.eventFieldDependencies);\n }\n\n getApiBodyList = () => {\n console.log('calendar api body list', this.apiBodyList);\n try {\n return JSON.parse(this.apiBodyList);\n } catch (e: any) {\n return {};\n }\n }\n\n getApiBodyDetail = () => {\n return JSON.parse(this.apiBodyDetail);\n }\n\n @property()\n mode!: string;\n\n @property()\n flow: string = \"\";\n\n static override styles = css`\n\n \n .SfIEventsC {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: space-between;\n }\n\n .flex-grow {\n flex-grow: 1;\n }\n\n .flex-wrap {\n flex-wrap: wrap;\n }\n\n .left-sticky {\n left: 0px;\n position: sticky;\n }\n\n .link {\n text-decoration: underline;\n cursor: pointer;\n }\n\n .gone {\n display: none\n }\n\n .loader-element {\n position: fixed;\n right: 10px;\n top: 10px;\n margin-left: 5px;\n }\n\n #calendar-container {\n width: 90%;\n }\n\n #stream-container {\n padding: 2%;\n }\n\n #upcoming-container {\n padding: 2%;\n }\n\n .stream-event-list {\n margin-left: 10px;\n padding: 10px;\n }\n\n .stream-events-container {\n overflow-x: auto;\n width: 200px;\n }\n .stream-event-selected {\n padding-left: 20px;\n padding-right: 10px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n \n .stream-event-not-selected {\n padding-left: 20px;\n padding-right: 10px;\n padding-top: 5px;\n padding-bottom: 5px;\n color: #aaa;\n font-size: 80%;\n }\n\n .stream-event-not-selected-hidden {\n padding-left: 20px;\n padding-right: 10px;\n padding-top: 5px;\n padding-bottom: 5px;\n color: #aaa;\n line-height: 0.05;\n }\n\n .stream-month-selected {\n padding: 10px;\n text-align: center;\n }\n\n .stream-month-not-selected {\n padding: 10px;\n text-align: center;\n }\n\n .calendar-left-col {\n width: 30%;\n }\n\n .calendar-right-data {\n width: 70%;\n }\n\n .day-item {\n width: 14%;\n margin-bottom: 5px;\n text-align: center;\n }\n\n .date-item {\n font-size: 80%;\n color: #333;\n }\n\n .date-item-before {\n font-size: 80%;\n color: #999;\n }\n\n .dot {\n width: 6px;\n height: 6px;\n border-radius: 3px;\n }\n\n .title-item {\n padding: 5px;\n margin-bottom: 20px;\n }\n\n .calendar-item {\n width: 90%;\n margin-bottom: 20px;\n }\n\n .td-head {\n text-transform: capitalize;\n }\n\n .tab-button {\n padding: 10px;\n padding-left: 15px;\n padding-right: 15px;\n font-size: 105%;\n margin-left: 5px;\n margin-right: 5px;\n }\n\n .td-body {\n padding: 5px;\n }\n\n .td-dark {\n background-color: #e9e9e9;\n }\n\n .td-highlight {\n background-color: black;\n color: white;\n }\n\n .td-light {\n background-color: #f6f6f6;\n }\n\n td {\n white-space: nowrap;\n }\n\n .fw-100 {\n font-weight: 100;\n }\n\n .fw-200 {\n font-weight: 200;\n }\n\n .fw-300 {\n font-weight: 300;\n }\n\n .fw-600 {\n font-weight: 600;\n }\n\n .align-start {\n align-items: flex-start;\n }\n\n .align-stretch {\n align-items: stretch;\n }\n\n .align-baseline {\n align-items: baseline;\n }\n\n .align-end {\n align-items: flex-end;\n }\n\n .align-center {\n align-items: center;\n }\n \n .lds-dual-ring {\n display: inline-block;\n width: 50px;\n height: 50px;\n }\n .lds-dual-ring:after {\n content: \" \";\n display: block;\n width: 50px;\n height: 50px;\n margin: 0px;\n border-radius: 50%;\n border: 2px solid #fff;\n border-color: #888 #ddd #888 #ddd;\n background-color: white;\n animation: lds-dual-ring 0.8s linear infinite;\n }\n\n .lds-dual-ring-lg {\n display: inline-block;\n width: 30px;\n height: 30px;\n }\n .lds-dual-ring-lg:after {\n content: \" \";\n display: block;\n width: 30px;\n height: 30px;\n margin: 0px;\n border-radius: 50%;\n border: 3px solid #fff;\n border-color: #888 #ddd #888 #ddd;\n animation: lds-dual-ring 0.8s linear infinite;\n }\n\n .div-row-error {\n display: flex;\n justify-content: center;\n position: fixed;\n position: fixed;\n top: 0px;\n right: 0px;\n margin-top: 20px;\n margin-right: 20px;\n display: none;\n align-items:center;\n background-color: white;\n border: dashed 1px red;\n padding: 20px;\n }\n\n .div-row-error-message {\n color: red;\n padding: 5px;\n background-color: white;\n text-align: center;\n }\n\n .div-row-success {\n display: flex;\n justify-content: center;\n position: fixed;\n top: 0px;\n right: 0px;\n margin-top: 20px;\n margin-right: 20px;\n display: none;\n align-items:center;\n background-color: white;\n border: dashed 1px green;\n padding: 20px;\n }\n\n .div-row-success-message {\n color: green;\n padding: 5px;\n background-color: white;\n text-align: center;\n }\n\n .d-flex {\n display: flex;\n }\n\n .flex-col {\n flex-direction: column;\n }\n\n .justify-center {\n justify-content: center;\n }\n\n .justify-between {\n justify-content: space-between;\n }\n\n .justify-end {\n justify-content: flex-end;\n }\n\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n } \n\n .hide {\n display: none;\n }\n\n .lb {\n width: 5%\n }\n .rb {\n width: 5%\n }\n\n @media (orientation: landscape) {\n\n .lb {\n width: 30%\n }\n .rb {\n width: 30%\n }\n\n #calendar-container {\n width: 40%;\n }\n\n .calendar-item {\n width: 20%;\n margin: 2%;\n padding: 1%;\n }\n\n }\n\n `;\n \n @query('.div-row-error')\n _SfRowError: any;\n\n @query('.div-row-error-message')\n _SfRowErrorMessage: any;\n\n @query('.div-row-success')\n _SfRowSuccess: any;\n\n @query('.div-row-success-message')\n _SfRowSuccessMessage: any;\n\n @query('.loader-element')\n _SfLoader: any;\n\n @query('#calendar-container')\n _SfCalendarContainer: any;\n\n @query('#stream-container')\n _SfStreamContainer: any;\n\n @query('#upcoming-container')\n _SfUpcomingContainer: any;\n\n @query('#tab-container')\n _SfTabContainer: any;\n\n getEventField = (field: string) => {\n\n for(var i = 0; i < this.getEventFields().length; i++) {\n\n if(this.getEventFields()[i].field == field) {\n return this.getEventFields()[i];\n }\n\n }\n\n }\n\n getParentFieldFromDepedencies = (field: string) => {\n\n for(var i = 0; i < this.getEventFieldDependencies().length; i++) {\n\n if(this.getEventFieldDependencies()[i].type == \"foreignkey\" && this.getEventFieldDependencies()[i].child == field) {\n return this.getEventFieldDependencies()[i].parent;\n }\n\n }\n\n return null;\n\n }\n\n getEventTexts = (field: string, selectedId: Array<string>, row: any) => {\n\n console.log('get event texts', field, selectedId, row);\n\n if(this.getEventField(field) != null && this.getEventField(field).type == \"sf-i-select\") {\n\n var selectedIds = \"\";\n selectedIds += '[';\n for(var i = 0; i < selectedId.length; i++) {\n selectedIds += ('&quot;'+selectedId[i]+'&quot;');\n if(i < selectedId.length - 1) {\n selectedIds += ',';\n }\n }\n selectedIds += ']';\n\n return '<sf-i-select apiId=\"'+this.getEventField(field).apiId+'\" name=\"Select\" label=\"Select\" mode=\"text\" selectedId=\"'+selectedIds+'\"></sf-i-select>'\n\n }\n\n if(this.getEventField(field) != null && this.getEventField(field).type == \"sf-i-sub-select\") {\n\n const parentField = this.getParentFieldFromDepedencies(field);\n\n console.log('parentfield', parentField);\n\n var selectedIds = \"\";\n selectedIds += '[';\n for(var i = 0; i < selectedId.length; i++) {\n selectedIds += ('&quot;'+selectedId[i]+'&quot;');\n if(i < selectedId.length - 1) {\n selectedIds += ',';\n }\n }\n selectedIds += ']';\n\n const filterId = JSON.parse(row[parentField])[0];\n\n console.log('<sf-i-sub-select apiId=\"'+this.getEventField(field).apiId+'\" name=\"Select\" label=\"Select\" mode=\"text\" selectedId=\"'+selectedIds+'\" filterId=\"'+filterId+'\"></sf-i-sub-select>');\n\n return '<sf-i-sub-select apiId=\"'+this.getEventField(field).apiId+'\" name=\"Select\" label=\"Select\" mode=\"text\" selectedId=\"'+selectedIds+'\" filterId=\"'+filterId+'\"></sf-i-sub-select>'\n\n }\n\n if(this.getEventField(field) != null && this.getEventField(field).type == \"sf-i-form\") {\n\n console.log('<sf-i-form name=\"Select\" apiId=\"'+this.getEventField(field).apiId+'\" selectedId=\"'+selectedId[0]+'\" projectField=\"'+this.getEventField(field).projectField+'\" mode=\"text\"></sf-i-form>');\n\n return '<sf-i-form name=\"Select\" apiId=\"'+this.getEventField(field).apiId+'\" selectedId=\"'+selectedId[0]+'\" projectField=\"'+this.getEventField(field).projectField+'\" mode=\"text\"></sf-i-form>'\n }\n\n \n\n return \"\";\n }\n\n enableCalendar = () => {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'flex';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n }\n\n enableStream = () => {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'flex';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n }\n\n enableUpcoming() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'flex';\n }\n\n prepareXhr = async (data: any, url: string, loaderElement: any, authorization: any) => {\n\n \n if(loaderElement != null) {\n loaderElement.innerHTML = '<div class=\"lds-dual-ring\"></div>';\n }\n return await Util.callApi(url, data, authorization);\n\n }\n\n clearMessages = () => {\n this._SfRowError.style.display = 'none';\n this._SfRowErrorMessage.innerHTML = '';\n this._SfRowSuccess.style.display = 'none';\n this._SfRowSuccessMessage.innerHTML = '';\n }\n\n setError = (msg: string) => {\n this._SfRowError.style.display = 'flex';\n this._SfRowErrorMessage.innerHTML = msg;\n this._SfRowSuccess.style.display = 'none';\n this._SfRowSuccessMessage.innerHTML = '';\n }\n\n setSuccess = (msg: string) => {\n this._SfRowError.style.display = 'none';\n this._SfRowErrorMessage.innerHTML = '';\n this._SfRowSuccess.style.display = 'flex';\n this._SfRowSuccessMessage.innerHTML = msg;\n }\n\n getLastDayOfLastMonth = (month: number, year: number) => {\n const date = new Date(year, month, 0);\n return date.getDate()\n }\n\n getLastDayOfMonth = (month: number, year: number) => {\n const date = new Date(year, month + 1, 0);\n return date.getDate()\n }\n\n getBlanks = (month: number, year: number) => {\n\n const date = new Date((\"0\" + (month+1)).slice(-2) + '/01/' + year);\n const day = date.getDay();\n return day;\n\n }\n\n insertDates = (month: number, year: number) => {\n\n var html = \"\";\n\n html += '<div class=\"d-flex align-baseline flex-grow flex-wrap\">';\n\n const dateNumber = this.getLastDayOfLastMonth(month, year);\n\n for(var i = 0; i < this.getBlanks(month, year); i++) {\n\n html += '<div class=\"day-item date-item-before fw-100\">';\n html += dateNumber-(this.getBlanks(month, year) - i - 1);\n html += '</div>'; \n\n }\n\n for(i = 0; i < this.getLastDayOfMonth(month, year); i++) {\n\n const mmdd = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + (i+1)).slice(-2);\n\n var partName = \"\";\n\n if(this.events[mmdd] != null) {\n partName = \"compliance-calendar-day-with-compliance\";\n html += '<div part=\"' + partName + '\" class=\"day-item date-item fw-600\">';\n html += '<div>'\n html += (i + 1);\n html += '</div>'\n html += '<div class=\"d-flex justify-center\">'\n html += '<div part=\"compliance-date-indicator-primary\" class=\"dot\"></div>'\n html += '</div>'\n html += '</div>'; \n } else {\n partName = \"compliance-calendar-day-without-compliance\";\n html += '<div part=\"' + partName + '\" class=\"day-item date-item fw-100\">';\n html += '<div>'\n html += (i + 1);\n html += '</div>'\n html += '</div>'; \n }\n\n }\n\n for(i = 0; i < 42 - (this.getBlanks(month, year) + this.getLastDayOfMonth(month, year)); i++) {\n html += '<div class=\"day-item date-item-before fw-100\">';\n html += (i+1);\n html += '</div>'; \n }\n\n html += '</div>';\n\n return html;\n\n }\n\n insertDayNames = () => {\n\n var html = \"\";\n\n html += '<div class=\"d-flex align-center flex-grow\">';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'S';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'M';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'T';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'W';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'T';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'F';\n html += '</div>';\n\n html += '<div part=\"calendar-day-name\" class=\"day-item fw-100\">';\n html += 'S';\n html += '</div>';\n\n html += '</div>';\n\n return html;\n\n }\n\n renderStreamEvents = (index: number, month: number, year: number) => {\n\n const lastDay = this.getLastDayOfMonth(month, year);\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n for(var i = 1; i <= lastDay; i++) {\n\n const mmdd = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + i).slice(-2);\n\n var hide = true;\n\n if(this.events[mmdd] != null) {\n hide = false;\n } else if(i === 1){\n hide = false;\n } else if(i === lastDay){\n hide = false;\n } else {\n const mmddPrev = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + (i-1)).slice(-2);\n const mmddNext = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + (i+1)).slice(-2);\n console.log('hide', i, hide);\n if((this.events[mmddPrev] != null || this.events[mmddNext] != null)) {\n hide = false;\n }\n }\n\n console.log('hide', i, hide);\n\n if(this.events[mmdd] != null) {\n //html += '<div>'+month + ',' + year + ',' + i+'</div>'\n html += '<div part=\"stream-event-selected\" class=\"d-flex stream-event-selected\">';\n html += '<div part=\"stream-event-selected-date\">'+(\"0\" + i).slice(-2)+' |</div>';\n for(var j = 0; j < (this.events[mmdd] as Array<any>).length; j++) {\n html += '<div class=\"stream-events-container flex-grow\">';\n html += '<table>';\n html += '<thead>';\n for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {\n html += '<th part=\"td-head\">';\n html += Object.keys(this.events[mmdd][j])[k];\n html += '</th>';\n }\n html += '</thead>';\n html += '<tbody>';\n for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {\n html += '<th part=\"td-body\">';\n if(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(this.events[mmdd][j])[k], JSON.parse(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]]), this.events[mmdd][j]);\n } else {\n html += this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].replace(/\"/g, \"\");\n }\n \n html += '</th>';\n }\n html += '</tbody>';\n html += '</table>';\n html += '</div>';\n }\n html += '</div>';\n } else {\n if(!hide) {\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected\">';\n html += '<div>'+(\"0\" + i).slice(-2)+'</div>';\n html += '</div>';\n } else {\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected-hidden\">';\n //html += '<div>'+(\"0\" + i).slice(-2)+' |</div>';\n html += '<div>.</div>';\n html += '</div>';\n }\n }\n \n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderUpcomingEvents = (index:number, startDate: Date, count: number) => {\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (startDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + startDate.getDate()).slice(-2);\n\n var hide = true;\n\n if(this.events[mmdd] != null) {\n hide = false;\n } else if(i === 1){\n hide = false;\n } else if(i === (count)){\n hide = false;\n } else {\n\n const startNextDate = new Date(startDate.getTime());\n startNextDate.setDate(startDate.getDate() + 1);\n\n const startPrevDate = new Date(startDate.getTime());\n startPrevDate.setDate(startDate.getDate() - 1);\n\n const mmddNext = (\"0\" + (startNextDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + (startNextDate.getDate())).slice(-2);\n const mmddPrev = (\"0\" + (startPrevDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + (startPrevDate.getDate())).slice(-2);\n console.log('hide', i, hide, startNextDate, startPrevDate, mmddNext, mmddPrev);\n if((this.events[mmddPrev] != null || this.events[mmddNext] != null)) {\n hide = false;\n }\n }\n\n if(this.events[mmdd] != null) {\n\n html += '<div part=\"stream-event-selected\" class=\"d-flex stream-event-selected\">';\n html += '<div part=\"stream-event-selected-date\">'+(\"0\" + startDate.getDate()).slice(-2)+'/'+(startDate.getMonth()+1)+' |</div>';\n for(var j = 0; j < (this.events[mmdd] as Array<any>).length; j++) {\n html += '<div class=\"stream-events-container flex-grow\">';\n html += '<table>';\n html += '<thead>';\n for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {\n html += '<th part=\"td-head\">';\n html += Object.keys(this.events[mmdd][j])[k];\n html += '</th>';\n }\n html += '</thead>';\n html += '<tbody>';\n for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {\n html += '<th part=\"td-body\">';\n if(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(this.events[mmdd][j])[k], JSON.parse(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]]), this.events[mmdd][j]);\n } else {\n html += this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].replace(/\"/g, \"\");\n }\n \n html += '</th>';\n }\n html += '</tbody>';\n html += '</table>';\n html += '</div>';\n }\n html += '</div>';\n\n } else {\n\n if(!hide) {\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected\">';\n html += '<div>'+(\"0\" + startDate.getDate()).slice(-2)+'/'+(startDate.getMonth()+1)+'</div>';\n html += '</div>';\n } else {\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected-hidden\">';\n //html += '<div>'+(\"0\" + i).slice(-2)+' |</div>';\n html += '<div>.</div>';\n html += '</div>';\n }\n\n }\n\n startDate.setDate(startDate.getDate() + 1);\n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderUpcoming = (index: number = 0) => {\n\n var html = '';\n\n html += '<div class=\"d-flex flex-grow\">';\n html += '<div class=\"calendar-left-col\">';\n\n var part = \"\";\n if(index === 0) {\n part = \"stream-month-selected\";\n } else {\n part = \"stream-month-not-selected\";\n }\n html += '<div part=\"'+part+'\" id=\"stream-month-0\" part=\"month-title\" class=\"title-item '+part+'\">7 Days</div>';\n\n part = \"\";\n if(index === 1) {\n part = \"stream-month-selected\";\n } else {\n part = \"stream-month-not-selected\";\n }\n html += '<div part=\"'+part+'\" id=\"stream-month-1\" part=\"month-title\" class=\"title-item '+part+'\">30 Days</div>';\n\n part = \"\";\n if(index === 2) {\n part = \"stream-month-selected\";\n } else {\n part = \"stream-month-not-selected\";\n }\n html += '<div part=\"'+part+'\" id=\"stream-month-2\" part=\"month-title\" class=\"title-item '+part+'\">90 Days</div>';\n\n html += '</div>';\n html += '<div class=\"calendar-right-data\">';\n\n // var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n var startDate = new Date();\n if(index === 0) {\n html += this.renderUpcomingEvents(index, startDate, 7);\n startDate.setDate(startDate.getDate() + 1);\n }\n\n if(index === 1) {\n html += this.renderUpcomingEvents(index, startDate, 30);\n startDate.setDate(startDate.getDate() + 1);\n }\n\n if(index === 2) {\n html += this.renderUpcomingEvents(index, startDate, 90);\n startDate.setDate(startDate.getDate() + 1);\n }\n\n \n html += '</div>';\n html += '</div>';\n\n (this._SfUpcomingContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 3; i++) {\n (this._SfUpcomingContainer as HTMLDivElement).querySelector('#stream-month-' + i)?.addEventListener('click', (ev: any)=> {\n const target = parseInt((ev.target as HTMLDivElement).id.split('-')[2]);\n console.log('clicked ', target);\n this.renderUpcoming(target);\n\n })\n }\n\n }\n\n renderStream = (index: number = 0) => {\n\n console.log('renderstream', index);\n\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n var html = '';\n\n html += '<div class=\"d-flex flex-grow\">';\n html += '<div class=\"calendar-left-col\">';\n\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n for(var i = 0; i < 12; i++) {\n\n var part = \"\";\n\n if(i === index) {\n part = \"stream-month-selected\";\n } else {\n part = \"stream-month-not-selected\";\n }\n\n html += '<div part=\"'+part+'\" id=\"stream-month-'+i+'\" part=\"month-title\" class=\"title-item '+part+'\">' + this.monthNames[startDate.getMonth()] + '&nbsp;&nbsp;' + startDate.getFullYear() + '</div>';\n startDate.setMonth(startDate.getMonth() + 1);\n }\n\n html += '</div>';\n html += '<div class=\"calendar-right-data\">';\n\n startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n for(i = 0; i < 12; i++) {\n if(i === index) {\n console.log(i, index)\n html += this.renderStreamEvents(i, startDate.getMonth(), startDate.getFullYear())\n }\n startDate.setMonth(startDate.getMonth() + 1);\n }\n html += '</div>';\n html += '</div>';\n\n (this._SfStreamContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 12; i++) {\n (this._SfStreamContainer as HTMLDivElement).querySelector('#stream-month-' + i)?.addEventListener('click', (ev: any)=> {\n\n const target = parseInt((ev.target as HTMLDivElement).id.split('-')[2]);\n this.renderStream(target);\n\n })\n }\n\n }\n\n renderCalendar = () => {\n\n console.log('redering calendar', this.events);\n\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n var html = '';\n\n for(var i = 0; i < 12; i++) {\n\n html += '<div class=\"calendar-item d-flex flex-col flex-grow\" part=\"calendar-month\">';\n html += '<div class=\"d-flex justify-between align-center\">';\n html += '<div part=\"month-title\" class=\"title-item\">' + this.monthNames[startDate.getMonth()] + '&nbsp;&nbsp;' + startDate.getFullYear() + '</div>';\n html += '<button id=\"calendar-button-'+i+'\" part=\"button-icon-small\" class=\"title-item material-icons\">open_in_new</button>'\n html += '</div>';\n html += this.insertDayNames();\n html += this.insertDates(startDate.getMonth(), startDate.getFullYear());\n html += '</div>';\n\n startDate.setMonth(startDate.getMonth() + 1);\n \n }\n\n (this._SfCalendarContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 12; i++) {\n\n (this._SfCalendarContainer as HTMLDivElement).querySelector('#calendar-button-' + i)?.addEventListener('click', (ev: any) => {\n\n const id = (ev.target as HTMLButtonElement).id.split(\"-\")[2];\n this.enableStream();\n this.renderStream(parseInt(id));\n this.renderTabs(this.TAB_STREAM);\n\n })\n\n }\n\n }\n\n renderTabs = (selectedTab: string) => {\n\n var html = '';\n\n html += '<button class=\"tab-button\" id=\"calendar-tab-year\" part=\"'+(selectedTab == this.TAB_YEAR ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Year</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-month\" part=\"'+(selectedTab == this.TAB_STREAM ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Month</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-upcoming\" part=\"'+(selectedTab == this.TAB_UPCOMING ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Upcoming</button>';\n\n (this._SfTabContainer as HTMLDivElement).innerHTML = html;\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-year')?.addEventListener('click', () => {\n this.enableCalendar();\n this.renderTabs(this.TAB_YEAR);\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-month')?.addEventListener('click', () => {\n this.enableStream();\n this.renderTabs(this.TAB_STREAM);\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-upcoming')?.addEventListener('click', () => {\n this.enableUpcoming();\n this.renderTabs(this.TAB_UPCOMING);\n });\n\n }\n\n processEvent = (value: any) => {\n\n console.log('processing due date', value.duedate.replace(/['\"]+/g, ''));\n const duedateArr = value.duedate.replace(/['\"]+/g, '').split(\",\") as Array<string>;\n\n const startMonth = parseInt(this.calendarStartMM);\n\n for(var i = 0; i < duedateArr.length; i++) {\n\n const dateArr = duedateArr[i].split(\"/\");\n console.log('datearr', dateArr);\n\n if(dateArr[2] == \"*\") {\n if(dateArr[1] == \"*\") {\n\n var j = startMonth;\n\n while(true) {\n\n console.log('processing event',dateArr[2],dateArr[1],j);\n\n const mmdd = (\"0\" +j).slice(-2) + \"/\" + (\"0\" + dateArr[0]).slice(-2);\n\n if(this.events == null) {\n this.events = {};\n }\n if(this.events[mmdd] == null) {\n this.events[mmdd] = [];\n }\n (this.events[mmdd] as Array<any>).push(value);\n\n\n if(startMonth !== 12) {\n\n if(j === (startMonth - 1)) {\n break;\n }\n }\n\n\n j++;\n\n if(j === 13) {\n j = 0;\n }\n\n } \n\n } else {\n\n const mmdd = (\"0\" +(parseInt(dateArr[1]))).slice(-2) + \"/\" + (\"0\" + dateArr[0]).slice(-2);\n\n if(this.events == null) {\n this.events = {};\n }\n if(this.events[mmdd] == null) {\n this.events[mmdd] = [];\n }\n (this.events[mmdd] as Array<any>).push(value);\n\n }\n }\n\n }\n\n console.log('calendar processed', this.calendar);\n console.log('event processed', this.events);\n\n }\n\n fetchDetail = async (value: any) => {\n\n const body: any = this.getApiBodyList();\n body.id = value;\n console.log('detail', value, body);\n let url = \"https://\"+this.apiIdDetail+\".execute-api.us-east-1.amazonaws.com/test/\" + this.apiMethodDetail;\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\n this._SfLoader.innerHTML = '';\n if(xhr.status == 200) {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n console.log('jsonResponse', jsonRespose);\n this.processEvent(jsonRespose.data.value)\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n fetchList = async () => {\n\n console.log('calendar fetching list', this.apiIdList);\n\n const body: any = this.getApiBodyList();\n\n if(this.apiIdList != null) {\n\n let url = \"https://\"+this.apiIdList+\".execute-api.us-east-1.amazonaws.com/test/\" + this.apiMethodList;\n\n console.log('calendar request body', body);\n console.log('calendar request url', url);\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\n this._SfLoader.innerHTML = '';\n if(xhr.status == 200) {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n const fieldArr = JSON.parse(jsonRespose.data.value[this.apiResponseFieldList]) as Array<string>;\n\n for(var i = 0; i < fieldArr.length; i++) {\n\n console.log('events', fieldArr[i]);\n await this.fetchDetail(fieldArr[i])\n\n }\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n }\n\n initCalendar = async () => {\n\n var newDate = null;\n var newMonth = null;\n var newYear = null;\n var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n\n console.log('startDate', startDate);\n \n do {\n\n this.calendar.push(startDate);\n startDate.setDate(startDate.getDate() + 1);\n\n newDate = (\"0\" + startDate.getDate()).slice(-2);\n newMonth = (\"0\" + startDate.getMonth()).slice(-2);\n newYear = (startDate.getFullYear());\n\n } while(!(newDate == this.calendarStartDD && newMonth == ((\"0\" + ((parseInt(this.calendarStartMM) - 1) + \"\")).slice(-2)) && newYear === (parseInt(this.calendarStartYYYY) + 1)));\n\n console.log(this.calendar);\n\n }\n\n initInputs = () => {\n\n this.calendarStartDD = (\"0\" + this.calendarStartDD).slice(-2);\n this.calendarStartMM = (\"0\" + this.calendarStartMM).slice(-2);\n\n }\n\n initListeners = () => {\n\n \n }\n\n loadMode = async () => {\n\n this.enableCalendar();\n this.initListeners();\n this.initInputs();\n this.initCalendar();\n\n console.log('calendar init done');\n\n await this.fetchList();\n \n if(this.events != null) {\n this.renderTabs(this.TAB_YEAR);\n this.renderCalendar();\n this.renderStream();\n this.renderUpcoming();\n }\n\n }\n\n constructor() {\n super();\n }\n\n protected override firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\n this.loadMode();\n\n }\n \n override connectedCallback() {\n super.connectedCallback()\n }\n \n override render() {\n\n return html`\n \n <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n <div class=\"SfIEventsC\">\n \n <div class=\"d-flex justify-center\">\n <div class=\"loader-element\"></div>\n </div>\n <div class=\"d-flex justify-center\" id=\"tab-container\">\n\n </div>\n <div class=\"d-flex justify-center\">\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"calendar-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"stream-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"upcoming-container\">\n \n </div>\n </div>\n <div class=\"d-flex justify-between\">\n <div class=\"lb\"></div>\n <div>\n <div class=\"div-row-error div-row-submit gone\">\n <div part=\"errormsg\" class=\"div-row-error-message\"></div>\n </div>\n <div class=\"div-row-success div-row-submit gone\">\n <div part=\"successmsg\" class=\"div-row-success-message\"></div>\n </div>\n </div>\n <div class=\"rb\"></div>\n </div>\n </div>\n\n `;\n }\n\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sf-i-events': SfIEvents;\n }\n}\n"]}
@@ -32,6 +32,10 @@ DB: partitionKey, rangeKey, values
32
32
  */
33
33
  @customElement('sf-i-events')
34
34
  export class SfIEvents extends LitElement {
35
+
36
+ TAB_YEAR = "year";
37
+ TAB_STREAM = "stream";
38
+ TAB_UPCOMING = "upcoming";
35
39
 
36
40
  @property()
37
41
  apiIdList!: string;
@@ -152,6 +156,10 @@ export class SfIEvents extends LitElement {
152
156
  padding: 2%;
153
157
  }
154
158
 
159
+ #upcoming-container {
160
+ padding: 2%;
161
+ }
162
+
155
163
  .stream-event-list {
156
164
  margin-left: 10px;
157
165
  padding: 10px;
@@ -470,6 +478,9 @@ export class SfIEvents extends LitElement {
470
478
  @query('#stream-container')
471
479
  _SfStreamContainer: any;
472
480
 
481
+ @query('#upcoming-container')
482
+ _SfUpcomingContainer: any;
483
+
473
484
  @query('#tab-container')
474
485
  _SfTabContainer: any;
475
486
 
@@ -555,16 +566,22 @@ export class SfIEvents extends LitElement {
555
566
  return "";
556
567
  }
557
568
 
558
- enableStream(value: boolean) {
569
+ enableCalendar = () => {
570
+ (this._SfCalendarContainer as HTMLDivElement).style.display = 'flex';
571
+ (this._SfStreamContainer as HTMLDivElement).style.display = 'none';
572
+ (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';
573
+ }
559
574
 
560
- if(value) {
575
+ enableStream = () => {
561
576
  (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';
562
577
  (this._SfStreamContainer as HTMLDivElement).style.display = 'flex';
563
- } else {
564
- (this._SfCalendarContainer as HTMLDivElement).style.display = 'flex';
565
- (this._SfStreamContainer as HTMLDivElement).style.display = 'none';
566
- }
578
+ (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';
579
+ }
567
580
 
581
+ enableUpcoming() {
582
+ (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';
583
+ (this._SfStreamContainer as HTMLDivElement).style.display = 'none';
584
+ (this._SfUpcomingContainer as HTMLDivElement).style.display = 'flex';
568
585
  }
569
586
 
570
587
  prepareXhr = async (data: any, url: string, loaderElement: any, authorization: any) => {
@@ -773,7 +790,7 @@ export class SfIEvents extends LitElement {
773
790
  } else {
774
791
  if(!hide) {
775
792
  html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected">';
776
- html += '<div>'+("0" + i).slice(-2)+' |</div>';
793
+ html += '<div>'+("0" + i).slice(-2)+'</div>';
777
794
  html += '</div>';
778
795
  } else {
779
796
  html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected-hidden">';
@@ -792,6 +809,162 @@ export class SfIEvents extends LitElement {
792
809
 
793
810
  }
794
811
 
812
+ renderUpcomingEvents = (index:number, startDate: Date, count: number) => {
813
+
814
+ var html = '<div id="stream-event-'+index+'" part="stream-event-list" class="stream-event-list">';
815
+
816
+ for(var i = 1; i <= count; i++) {
817
+
818
+ const mmdd = ("0" + (startDate.getMonth()+1)).slice(-2) + "/" + ("0" + startDate.getDate()).slice(-2);
819
+
820
+ var hide = true;
821
+
822
+ if(this.events[mmdd] != null) {
823
+ hide = false;
824
+ } else if(i === 1){
825
+ hide = false;
826
+ } else if(i === (count)){
827
+ hide = false;
828
+ } else {
829
+
830
+ const startNextDate = new Date(startDate.getTime());
831
+ startNextDate.setDate(startDate.getDate() + 1);
832
+
833
+ const startPrevDate = new Date(startDate.getTime());
834
+ startPrevDate.setDate(startDate.getDate() - 1);
835
+
836
+ const mmddNext = ("0" + (startNextDate.getMonth()+1)).slice(-2) + "/" + ("0" + (startNextDate.getDate())).slice(-2);
837
+ const mmddPrev = ("0" + (startPrevDate.getMonth()+1)).slice(-2) + "/" + ("0" + (startPrevDate.getDate())).slice(-2);
838
+ console.log('hide', i, hide, startNextDate, startPrevDate, mmddNext, mmddPrev);
839
+ if((this.events[mmddPrev] != null || this.events[mmddNext] != null)) {
840
+ hide = false;
841
+ }
842
+ }
843
+
844
+ if(this.events[mmdd] != null) {
845
+
846
+ html += '<div part="stream-event-selected" class="d-flex stream-event-selected">';
847
+ html += '<div part="stream-event-selected-date">'+("0" + startDate.getDate()).slice(-2)+'/'+(startDate.getMonth()+1)+' |</div>';
848
+ for(var j = 0; j < (this.events[mmdd] as Array<any>).length; j++) {
849
+ html += '<div class="stream-events-container flex-grow">';
850
+ html += '<table>';
851
+ html += '<thead>';
852
+ for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {
853
+ html += '<th part="td-head">';
854
+ html += Object.keys(this.events[mmdd][j])[k];
855
+ html += '</th>';
856
+ }
857
+ html += '</thead>';
858
+ html += '<tbody>';
859
+ for(var k = 0; k < Object.keys(this.events[mmdd][j]).length; k++) {
860
+ html += '<th part="td-body">';
861
+ if(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].indexOf("[") >= 0) {
862
+ html += this.getEventTexts(Object.keys(this.events[mmdd][j])[k], JSON.parse(this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]]), this.events[mmdd][j]);
863
+ } else {
864
+ html += this.events[mmdd][j][Object.keys(this.events[mmdd][j])[k]].replace(/"/g, "");
865
+ }
866
+
867
+ html += '</th>';
868
+ }
869
+ html += '</tbody>';
870
+ html += '</table>';
871
+ html += '</div>';
872
+ }
873
+ html += '</div>';
874
+
875
+ } else {
876
+
877
+ if(!hide) {
878
+ html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected">';
879
+ html += '<div>'+("0" + startDate.getDate()).slice(-2)+'/'+(startDate.getMonth()+1)+'</div>';
880
+ html += '</div>';
881
+ } else {
882
+ html += '<div part="stream-event-not-selected" class="d-flex stream-event-not-selected-hidden">';
883
+ //html += '<div>'+("0" + i).slice(-2)+' |</div>';
884
+ html += '<div>.</div>';
885
+ html += '</div>';
886
+ }
887
+
888
+ }
889
+
890
+ startDate.setDate(startDate.getDate() + 1);
891
+
892
+ }
893
+
894
+ html += '</div>'
895
+
896
+ return html;
897
+
898
+ }
899
+
900
+ renderUpcoming = (index: number = 0) => {
901
+
902
+ var html = '';
903
+
904
+ html += '<div class="d-flex flex-grow">';
905
+ html += '<div class="calendar-left-col">';
906
+
907
+ var part = "";
908
+ if(index === 0) {
909
+ part = "stream-month-selected";
910
+ } else {
911
+ part = "stream-month-not-selected";
912
+ }
913
+ html += '<div part="'+part+'" id="stream-month-0" part="month-title" class="title-item '+part+'">7 Days</div>';
914
+
915
+ part = "";
916
+ if(index === 1) {
917
+ part = "stream-month-selected";
918
+ } else {
919
+ part = "stream-month-not-selected";
920
+ }
921
+ html += '<div part="'+part+'" id="stream-month-1" part="month-title" class="title-item '+part+'">30 Days</div>';
922
+
923
+ part = "";
924
+ if(index === 2) {
925
+ part = "stream-month-selected";
926
+ } else {
927
+ part = "stream-month-not-selected";
928
+ }
929
+ html += '<div part="'+part+'" id="stream-month-2" part="month-title" class="title-item '+part+'">90 Days</div>';
930
+
931
+ html += '</div>';
932
+ html += '<div class="calendar-right-data">';
933
+
934
+ // var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);
935
+ var startDate = new Date();
936
+ if(index === 0) {
937
+ html += this.renderUpcomingEvents(index, startDate, 7);
938
+ startDate.setDate(startDate.getDate() + 1);
939
+ }
940
+
941
+ if(index === 1) {
942
+ html += this.renderUpcomingEvents(index, startDate, 30);
943
+ startDate.setDate(startDate.getDate() + 1);
944
+ }
945
+
946
+ if(index === 2) {
947
+ html += this.renderUpcomingEvents(index, startDate, 90);
948
+ startDate.setDate(startDate.getDate() + 1);
949
+ }
950
+
951
+
952
+ html += '</div>';
953
+ html += '</div>';
954
+
955
+ (this._SfUpcomingContainer as HTMLDivElement).innerHTML = html;
956
+
957
+ for(var i = 0; i < 3; i++) {
958
+ (this._SfUpcomingContainer as HTMLDivElement).querySelector('#stream-month-' + i)?.addEventListener('click', (ev: any)=> {
959
+ const target = parseInt((ev.target as HTMLDivElement).id.split('-')[2]);
960
+ console.log('clicked ', target);
961
+ this.renderUpcoming(target);
962
+
963
+ })
964
+ }
965
+
966
+ }
967
+
795
968
  renderStream = (index: number = 0) => {
796
969
 
797
970
  console.log('renderstream', index);
@@ -876,9 +1049,9 @@ export class SfIEvents extends LitElement {
876
1049
  (this._SfCalendarContainer as HTMLDivElement).querySelector('#calendar-button-' + i)?.addEventListener('click', (ev: any) => {
877
1050
 
878
1051
  const id = (ev.target as HTMLButtonElement).id.split("-")[2];
879
- this.enableStream(true);
1052
+ this.enableStream();
880
1053
  this.renderStream(parseInt(id));
881
- this.renderTabs(true);
1054
+ this.renderTabs(this.TAB_STREAM);
882
1055
 
883
1056
  })
884
1057
 
@@ -886,23 +1059,29 @@ export class SfIEvents extends LitElement {
886
1059
 
887
1060
  }
888
1061
 
889
- renderTabs = (enableStream: boolean) => {
1062
+ renderTabs = (selectedTab: string) => {
890
1063
 
891
1064
  var html = '';
892
1065
 
893
- html += '<button class="tab-button" id="calendar-tab-year" part="'+(enableStream ? 'calendar-tab-button-not-selected' : 'calendar-tab-button-selected')+'">Year</button>';
894
- html += '<button class="tab-button" id="calendar-tab-month" part="'+(enableStream ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'">Month</button>';
1066
+ html += '<button class="tab-button" id="calendar-tab-year" part="'+(selectedTab == this.TAB_YEAR ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'">Year</button>';
1067
+ html += '<button class="tab-button" id="calendar-tab-month" part="'+(selectedTab == this.TAB_STREAM ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'">Month</button>';
1068
+ html += '<button class="tab-button" id="calendar-tab-upcoming" part="'+(selectedTab == this.TAB_UPCOMING ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'">Upcoming</button>';
895
1069
 
896
1070
  (this._SfTabContainer as HTMLDivElement).innerHTML = html;
897
1071
 
898
1072
  (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-year')?.addEventListener('click', () => {
899
- this.enableStream(false);
900
- this.renderTabs(false);
1073
+ this.enableCalendar();
1074
+ this.renderTabs(this.TAB_YEAR);
901
1075
  });
902
1076
 
903
1077
  (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-month')?.addEventListener('click', () => {
904
- this.enableStream(true);
905
- this.renderTabs(true);
1078
+ this.enableStream();
1079
+ this.renderTabs(this.TAB_STREAM);
1080
+ });
1081
+
1082
+ (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-upcoming')?.addEventListener('click', () => {
1083
+ this.enableUpcoming();
1084
+ this.renderTabs(this.TAB_UPCOMING);
906
1085
  });
907
1086
 
908
1087
  }
@@ -1075,7 +1254,7 @@ export class SfIEvents extends LitElement {
1075
1254
 
1076
1255
  loadMode = async () => {
1077
1256
 
1078
- this.enableStream(false);
1257
+ this.enableCalendar();
1079
1258
  this.initListeners();
1080
1259
  this.initInputs();
1081
1260
  this.initCalendar();
@@ -1085,9 +1264,10 @@ export class SfIEvents extends LitElement {
1085
1264
  await this.fetchList();
1086
1265
 
1087
1266
  if(this.events != null) {
1088
- this.renderTabs(false);
1267
+ this.renderTabs(this.TAB_YEAR);
1089
1268
  this.renderCalendar();
1090
1269
  this.renderStream();
1270
+ this.renderUpcoming();
1091
1271
  }
1092
1272
 
1093
1273
  }
@@ -1125,6 +1305,9 @@ export class SfIEvents extends LitElement {
1125
1305
  </div>
1126
1306
  <div class="d-flex flex-grow flex-wrap justify-center align-stretch" id="stream-container">
1127
1307
 
1308
+ </div>
1309
+ <div class="d-flex flex-grow flex-wrap justify-center align-stretch" id="upcoming-container">
1310
+
1128
1311
  </div>
1129
1312
  </div>
1130
1313
  <div class="d-flex justify-between">