sf-i-events 1.0.1

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/LICENSE +28 -0
  3. package/README copy.md +588 -0
  4. package/README.md +3 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +146 -0
  9. package/coverage/lcov-report/prettify.css +1 -0
  10. package/coverage/lcov-report/prettify.js +2 -0
  11. package/coverage/lcov-report/sf-i-select.ts.html +4384 -0
  12. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  13. package/coverage/lcov-report/sorter.js +196 -0
  14. package/coverage/lcov.info +1719 -0
  15. package/dev/index.html +476 -0
  16. package/index.html +11 -0
  17. package/package.json +84 -0
  18. package/rollup.config.js +38 -0
  19. package/sf-i-events.d.ts +69 -0
  20. package/sf-i-events.d.ts.map +1 -0
  21. package/sf-i-events.js +617 -0
  22. package/sf-i-events.js.map +1 -0
  23. package/src/sf-i-events.ts +726 -0
  24. package/src/test/sf-i-form_test.ts +23 -0
  25. package/src/util.ts +56 -0
  26. package/test/sf-i-form_test.d.ts +7 -0
  27. package/test/sf-i-form_test.d.ts.map +1 -0
  28. package/test/sf-i-form_test.js +18 -0
  29. package/test/sf-i-form_test.js.map +1 -0
  30. package/test/sf-i-select_test.d.ts +7 -0
  31. package/test/sf-i-select_test.d.ts.map +1 -0
  32. package/test/sf-i-select_test.js +18 -0
  33. package/test/sf-i-select_test.js.map +1 -0
  34. package/test/sf-nav_profile_test.d.ts +7 -0
  35. package/test/sf-nav_profile_test.d.ts.map +1 -0
  36. package/test/sf-nav_profile_test.js +139 -0
  37. package/test/sf-nav_profile_test.js.map +1 -0
  38. package/test/sf-nav_test.d.ts +7 -0
  39. package/test/sf-nav_test.d.ts.map +1 -0
  40. package/test/sf-nav_test.js +358 -0
  41. package/test/sf-nav_test.js.map +1 -0
  42. package/tsconfig.json +33 -0
  43. package/util.d.ts +9 -0
  44. package/util.d.ts.map +1 -0
  45. package/util.js +47 -0
  46. package/util.js.map +1 -0
  47. package/web-dev-server.config.js +25 -0
  48. package/web-test-runner.config.js +124 -0
package/sf-i-events.js ADDED
@@ -0,0 +1,617 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Superflow.dev
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
7
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
11
+ };
12
+ import { LitElement, html, css } from 'lit';
13
+ // import {customElement, query, queryAssignedElements, property} from 'lit/decorators.js';
14
+ import { customElement, query, property } from 'lit/decorators.js';
15
+ import Util from './util';
16
+ // import {LitElement, html, css} from 'lit';
17
+ // import {customElement} from 'lit/decorators.js';
18
+ /*
19
+
20
+ Modes: View, Add, Edit, Delete, Admin
21
+ DB: partitionKey, rangeKey, values
22
+
23
+ */
24
+ /**
25
+ * SfIEvents element.
26
+ * @fires renderComplete - When the list is populated
27
+ * @fires valueChanged - When the value is changed
28
+ * @property apiId - backend api id
29
+ * @property label - input label
30
+ * @property name - name of the input
31
+ * @property mode - mode of operation
32
+ * @property selectedId - id to preselect
33
+ * @property selectedValue - callback function
34
+ */
35
+ let SfIEvents = class SfIEvents extends LitElement {
36
+ constructor() {
37
+ super();
38
+ this.calendar = [];
39
+ this.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
40
+ this.events = null;
41
+ this.getApiBodyList = () => {
42
+ return JSON.parse(this.apiBodyList);
43
+ };
44
+ this.getApiBodyDetail = () => {
45
+ return JSON.parse(this.apiBodyDetail);
46
+ };
47
+ this.flow = "";
48
+ this.prepareXhr = async (data, url, loaderElement, authorization) => {
49
+ if (loaderElement != null) {
50
+ loaderElement.innerHTML = '<div class="lds-dual-ring"></div>';
51
+ }
52
+ return await Util.callApi(url, data, authorization);
53
+ };
54
+ this.clearMessages = () => {
55
+ this._SfRowError.style.display = 'none';
56
+ this._SfRowErrorMessage.innerHTML = '';
57
+ this._SfRowSuccess.style.display = 'none';
58
+ this._SfRowSuccessMessage.innerHTML = '';
59
+ };
60
+ this.setError = (msg) => {
61
+ this._SfRowError.style.display = 'flex';
62
+ this._SfRowErrorMessage.innerHTML = msg;
63
+ this._SfRowSuccess.style.display = 'none';
64
+ this._SfRowSuccessMessage.innerHTML = '';
65
+ };
66
+ this.setSuccess = (msg) => {
67
+ this._SfRowError.style.display = 'none';
68
+ this._SfRowErrorMessage.innerHTML = '';
69
+ this._SfRowSuccess.style.display = 'flex';
70
+ this._SfRowSuccessMessage.innerHTML = msg;
71
+ };
72
+ this.getLastDayOfLastMonth = (month, year) => {
73
+ const date = new Date(year, month, 0);
74
+ console.log('last date of last month', month, date.getDate());
75
+ return date.getDate();
76
+ };
77
+ this.getLastDayOfMonth = (month, year) => {
78
+ const date = new Date(year, month + 1, 0);
79
+ return date.getDate();
80
+ };
81
+ this.getBlanks = (month, year) => {
82
+ const date = new Date(("0" + (month + 1)).slice(-2) + '/01/' + year);
83
+ const day = date.getDay();
84
+ return day;
85
+ };
86
+ this.insertDates = (month, year) => {
87
+ var html = "";
88
+ html += '<div class="d-flex align-center flex-grow flex-wrap">';
89
+ const dateNumber = this.getLastDayOfLastMonth(month, year);
90
+ for (var i = 0; i < this.getBlanks(month, year); i++) {
91
+ html += '<div class="day-item date-item-before">';
92
+ html += dateNumber - (this.getBlanks(month, year) - i - 1);
93
+ html += '</div>';
94
+ }
95
+ for (i = 0; i < this.getLastDayOfMonth(month, year); i++) {
96
+ const mmdd = ("0" + month).slice(-2) + "/" + ("0" + (i + 1)).slice(-2);
97
+ if (this.events[mmdd] != null) {
98
+ console.log('found not null event');
99
+ html += '<div class="day-item date-item-selected">';
100
+ html += (i + 1);
101
+ html += '</div>';
102
+ }
103
+ else {
104
+ html += '<div class="day-item date-item">';
105
+ html += (i + 1);
106
+ html += '</div>';
107
+ }
108
+ }
109
+ for (i = 0; i < 42 - (this.getBlanks(month, year) + this.getLastDayOfMonth(month, year)); i++) {
110
+ html += '<div class="day-item date-item-before">';
111
+ html += (i + 1);
112
+ html += '</div>';
113
+ }
114
+ html += '</div>';
115
+ return html;
116
+ };
117
+ this.insertDayNames = () => {
118
+ var html = "";
119
+ html += '<div class="d-flex align-center flex-grow">';
120
+ html += '<div class="day-item">';
121
+ html += 'S';
122
+ html += '</div>';
123
+ html += '<div class="day-item">';
124
+ html += 'M';
125
+ html += '</div>';
126
+ html += '<div class="day-item">';
127
+ html += 'T';
128
+ html += '</div>';
129
+ html += '<div class="day-item">';
130
+ html += 'W';
131
+ html += '</div>';
132
+ html += '<div class="day-item">';
133
+ html += 'T';
134
+ html += '</div>';
135
+ html += '<div class="day-item">';
136
+ html += 'F';
137
+ html += '</div>';
138
+ html += '<div class="day-item">';
139
+ html += 'S';
140
+ html += '</div>';
141
+ html += '</div>';
142
+ return html;
143
+ };
144
+ this.renderCalendar = () => {
145
+ console.log('redering calendar', this.events);
146
+ var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);
147
+ var html = '';
148
+ for (var i = 0; i < 12; i++) {
149
+ html += '<div class="calendar-item d-flex flex-col flex-grow">';
150
+ html += '<div class="d-flex">';
151
+ html += '<div class="title-item">' + this.monthNames[startDate.getMonth()] + '&nbsp;&nbsp;' + startDate.getFullYear() + '</div>';
152
+ html += '</div>';
153
+ html += this.insertDayNames();
154
+ html += this.insertDates(startDate.getMonth(), startDate.getFullYear());
155
+ html += '</div>';
156
+ startDate.setMonth(startDate.getMonth() + 1);
157
+ }
158
+ this._SfCalendarContainer.innerHTML = html;
159
+ };
160
+ this.processEvent = (value) => {
161
+ console.log('processing due date', value.duedate.replace(/['"]+/g, ''));
162
+ const duedateArr = value.duedate.replace(/['"]+/g, '').split(",");
163
+ const startMonth = parseInt(this.calendarStartMM) - 1;
164
+ for (var i = 0; i < duedateArr.length; i++) {
165
+ const dateArr = duedateArr[i].split("/");
166
+ console.log('datearr', dateArr);
167
+ if (dateArr[2] == "*") {
168
+ if (dateArr[1] == "*") {
169
+ var j = startMonth;
170
+ while (true) {
171
+ if (j === (startMonth - 1)) {
172
+ break;
173
+ }
174
+ const mmdd = ("0" + j).slice(-2) + "/" + ("0" + dateArr[0]).slice(-2);
175
+ if (this.events == null) {
176
+ this.events = {};
177
+ }
178
+ this.events[mmdd] = value;
179
+ j++;
180
+ if (j === 12) {
181
+ j = 0;
182
+ }
183
+ }
184
+ }
185
+ else {
186
+ const mmdd = ("0" + dateArr[1]).slice(-2) + "/" + ("0" + dateArr[0]).slice(-2);
187
+ if (this.events == null) {
188
+ this.events = {};
189
+ }
190
+ this.events[mmdd] = value;
191
+ }
192
+ }
193
+ }
194
+ console.log('calendar processed', this.calendar);
195
+ console.log('event processed', this.events);
196
+ };
197
+ this.fetchDetail = async (value) => {
198
+ const body = this.getApiBodyList();
199
+ body.id = value;
200
+ console.log('detail', value, body);
201
+ let url = "https://" + this.apiIdDetail + ".execute-api.us-east-1.amazonaws.com/test/" + this.apiMethodDetail;
202
+ const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
203
+ const xhr = (await this.prepareXhr(body, url, this._SfLoader, authorization));
204
+ this._SfLoader.innerHTML = '';
205
+ if (xhr.status == 200) {
206
+ const jsonRespose = JSON.parse(xhr.responseText);
207
+ console.log('jsonResponse', jsonRespose);
208
+ this.processEvent(jsonRespose.data.value);
209
+ }
210
+ else {
211
+ const jsonRespose = JSON.parse(xhr.responseText);
212
+ this.setError(jsonRespose.error);
213
+ }
214
+ };
215
+ this.fetchList = async () => {
216
+ const body = this.getApiBodyList();
217
+ let url = "https://" + this.apiIdList + ".execute-api.us-east-1.amazonaws.com/test/" + this.apiMethodList;
218
+ const authorization = btoa(Util.readCookie('email') + ":" + Util.readCookie('accessToken'));
219
+ const xhr = (await this.prepareXhr(body, url, this._SfLoader, authorization));
220
+ this._SfLoader.innerHTML = '';
221
+ if (xhr.status == 200) {
222
+ const jsonRespose = JSON.parse(xhr.responseText);
223
+ const fieldArr = JSON.parse(jsonRespose.data.value[this.apiResponseFieldList]);
224
+ for (var i = 0; i < fieldArr.length; i++) {
225
+ console.log(fieldArr[i]);
226
+ await this.fetchDetail(fieldArr[i]);
227
+ }
228
+ }
229
+ else {
230
+ const jsonRespose = JSON.parse(xhr.responseText);
231
+ this.setError(jsonRespose.error);
232
+ }
233
+ };
234
+ this.initCalendar = async () => {
235
+ var newDate = null;
236
+ var newMonth = null;
237
+ var newYear = null;
238
+ var startDate = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);
239
+ console.log('startDate', startDate);
240
+ do {
241
+ this.calendar.push(startDate);
242
+ startDate.setDate(startDate.getDate() + 1);
243
+ newDate = ("0" + startDate.getDate()).slice(-2);
244
+ newMonth = ("0" + startDate.getMonth()).slice(-2);
245
+ newYear = (startDate.getFullYear());
246
+ } while (!(newDate == this.calendarStartDD && newMonth == (("0" + ((parseInt(this.calendarStartMM) - 1) + "")).slice(-2)) && newYear === (parseInt(this.calendarStartYYYY) + 1)));
247
+ console.log(this.calendar);
248
+ };
249
+ this.initInputs = () => {
250
+ this.calendarStartDD = ("0" + this.calendarStartDD).slice(-2);
251
+ this.calendarStartMM = ("0" + this.calendarStartMM).slice(-2);
252
+ };
253
+ this.loadMode = async () => {
254
+ this.initInputs();
255
+ this.initCalendar();
256
+ await this.fetchList();
257
+ this.renderCalendar();
258
+ };
259
+ }
260
+ firstUpdated(_changedProperties) {
261
+ this.loadMode();
262
+ }
263
+ connectedCallback() {
264
+ super.connectedCallback();
265
+ }
266
+ render() {
267
+ return html `
268
+
269
+ <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
270
+ <div class="SfIEventsC">
271
+
272
+ <div class="d-flex justify-center">
273
+ <div class="loader-element"></div>
274
+ </div>
275
+ <div class="d-flex justify-center">
276
+ <div class="lb"></div>
277
+ <div class="d-flex flex-grow flex-wrap justify-center align-start" id="calendar-container">
278
+
279
+ </div>
280
+ <div class="rb"></div>
281
+ </div>
282
+ <div class="d-flex justify-between">
283
+ <div class="lb"></div>
284
+ <div>
285
+ <div class="div-row-error div-row-submit gone">
286
+ <div part="errormsg" class="div-row-error-message"></div>
287
+ </div>
288
+ <div class="div-row-success div-row-submit gone">
289
+ <div part="successmsg" class="div-row-success-message"></div>
290
+ </div>
291
+ </div>
292
+ <div class="rb"></div>
293
+ </div>
294
+ </div>
295
+
296
+ `;
297
+ }
298
+ };
299
+ SfIEvents.styles = css `
300
+
301
+
302
+ .SfIEventsC {
303
+ display: flex;
304
+ flex-direction: column;
305
+ align-items: stretch;
306
+ justify-content: space-between;
307
+ }
308
+
309
+ .flex-grow {
310
+ flex-grow: 1;
311
+ }
312
+
313
+ .flex-wrap {
314
+ flex-wrap: wrap;
315
+ }
316
+
317
+ .left-sticky {
318
+ left: 0px;
319
+ position: sticky;
320
+ }
321
+
322
+ .link {
323
+ text-decoration: underline;
324
+ cursor: pointer;
325
+ }
326
+
327
+ .gone {
328
+ display: none
329
+ }
330
+
331
+ .loader-element {
332
+ position: fixed;
333
+ right: 10px;
334
+ top: 10px;
335
+ margin-left: 5px;
336
+ }
337
+
338
+ #calendar-container {
339
+ width: 90%;
340
+ }
341
+
342
+ .day-item {
343
+ width: 14%;
344
+ margin-bottom: 5px;
345
+ text-align: center;
346
+ }
347
+
348
+ .date-item {
349
+ font-size: 80%;
350
+ color: #333;
351
+ }
352
+
353
+ .date-item-before {
354
+ font-size: 80%;
355
+ color: #999;
356
+ }
357
+
358
+ .date-item-selected {
359
+ color: white;
360
+ background-color: #cd0078;
361
+ border-radius: 8px;
362
+ }
363
+
364
+ .title-item {
365
+ margin-bottom: 10px;
366
+ }
367
+
368
+ .calendar-item {
369
+ width: 90%;
370
+ margin-bottom: 20px;
371
+ }
372
+
373
+ .td-head {
374
+ text-transform: capitalize;
375
+ }
376
+
377
+ .td-body {
378
+ padding: 5px;
379
+ }
380
+
381
+ .td-dark {
382
+ background-color: #e9e9e9;
383
+ }
384
+
385
+ .td-highlight {
386
+ background-color: black;
387
+ color: white;
388
+ }
389
+
390
+ .td-light {
391
+ background-color: #f6f6f6;
392
+ }
393
+
394
+ td {
395
+ white-space: nowrap;
396
+ }
397
+
398
+ .align-start {
399
+ align-items: flex-start;
400
+ }
401
+
402
+ .align-end {
403
+ align-items: flex-end;
404
+ }
405
+
406
+ .align-center {
407
+ align-items: center;
408
+ }
409
+
410
+ .lds-dual-ring {
411
+ display: inline-block;
412
+ width: 50px;
413
+ height: 50px;
414
+ }
415
+ .lds-dual-ring:after {
416
+ content: " ";
417
+ display: block;
418
+ width: 50px;
419
+ height: 50px;
420
+ margin: 0px;
421
+ border-radius: 50%;
422
+ border: 2px solid #fff;
423
+ border-color: #888 #ddd #888 #ddd;
424
+ background-color: white;
425
+ animation: lds-dual-ring 0.8s linear infinite;
426
+ }
427
+
428
+ .lds-dual-ring-lg {
429
+ display: inline-block;
430
+ width: 30px;
431
+ height: 30px;
432
+ }
433
+ .lds-dual-ring-lg:after {
434
+ content: " ";
435
+ display: block;
436
+ width: 30px;
437
+ height: 30px;
438
+ margin: 0px;
439
+ border-radius: 50%;
440
+ border: 3px solid #fff;
441
+ border-color: #888 #ddd #888 #ddd;
442
+ animation: lds-dual-ring 0.8s linear infinite;
443
+ }
444
+
445
+ .div-row-error {
446
+ display: flex;
447
+ justify-content: center;
448
+ position: fixed;
449
+ position: fixed;
450
+ top: 0px;
451
+ right: 0px;
452
+ margin-top: 20px;
453
+ margin-right: 20px;
454
+ display: none;
455
+ align-items:center;
456
+ background-color: white;
457
+ border: dashed 1px red;
458
+ padding: 20px;
459
+ }
460
+
461
+ .div-row-error-message {
462
+ color: red;
463
+ padding: 5px;
464
+ background-color: white;
465
+ text-align: center;
466
+ }
467
+
468
+ .div-row-success {
469
+ display: flex;
470
+ justify-content: center;
471
+ position: fixed;
472
+ top: 0px;
473
+ right: 0px;
474
+ margin-top: 20px;
475
+ margin-right: 20px;
476
+ display: none;
477
+ align-items:center;
478
+ background-color: white;
479
+ border: dashed 1px green;
480
+ padding: 20px;
481
+ }
482
+
483
+ .div-row-success-message {
484
+ color: green;
485
+ padding: 5px;
486
+ background-color: white;
487
+ text-align: center;
488
+ }
489
+
490
+ .d-flex {
491
+ display: flex;
492
+ }
493
+
494
+ .flex-col {
495
+ flex-direction: column;
496
+ }
497
+
498
+ .justify-center {
499
+ justify-content: center;
500
+ }
501
+
502
+ .justify-between {
503
+ justify-content: space-between;
504
+ }
505
+
506
+ .justify-end {
507
+ justify-content: flex-end;
508
+ }
509
+
510
+ @keyframes lds-dual-ring {
511
+ 0% {
512
+ transform: rotate(0deg);
513
+ }
514
+ 100% {
515
+ transform: rotate(360deg);
516
+ }
517
+ }
518
+
519
+ .hide {
520
+ display: none;
521
+ }
522
+
523
+ .lb {
524
+ width: 5%
525
+ }
526
+ .rb {
527
+ width: 5%
528
+ }
529
+
530
+ @media (orientation: landscape) {
531
+
532
+ .lb {
533
+ width: 30%
534
+ }
535
+ .rb {
536
+ width: 30%
537
+ }
538
+
539
+ #calendar-container {
540
+ width: 40%;
541
+ }
542
+
543
+ .calendar-item {
544
+ width: 25%;
545
+ }
546
+
547
+ }
548
+
549
+ `;
550
+ __decorate([
551
+ property()
552
+ ], SfIEvents.prototype, "apiIdList", void 0);
553
+ __decorate([
554
+ property()
555
+ ], SfIEvents.prototype, "apiIdDetail", void 0);
556
+ __decorate([
557
+ property()
558
+ ], SfIEvents.prototype, "apiMethodList", void 0);
559
+ __decorate([
560
+ property()
561
+ ], SfIEvents.prototype, "apiMethodDetail", void 0);
562
+ __decorate([
563
+ property()
564
+ ], SfIEvents.prototype, "apiBodyList", void 0);
565
+ __decorate([
566
+ property()
567
+ ], SfIEvents.prototype, "apiBodyDetail", void 0);
568
+ __decorate([
569
+ property()
570
+ ], SfIEvents.prototype, "apiResponseFieldList", void 0);
571
+ __decorate([
572
+ property()
573
+ ], SfIEvents.prototype, "calendarStartDD", void 0);
574
+ __decorate([
575
+ property()
576
+ ], SfIEvents.prototype, "calendarStartMM", void 0);
577
+ __decorate([
578
+ property()
579
+ ], SfIEvents.prototype, "calendarStartYYYY", void 0);
580
+ __decorate([
581
+ property()
582
+ ], SfIEvents.prototype, "calendar", void 0);
583
+ __decorate([
584
+ property()
585
+ ], SfIEvents.prototype, "monthNames", void 0);
586
+ __decorate([
587
+ property()
588
+ ], SfIEvents.prototype, "events", void 0);
589
+ __decorate([
590
+ property()
591
+ ], SfIEvents.prototype, "mode", void 0);
592
+ __decorate([
593
+ property()
594
+ ], SfIEvents.prototype, "flow", void 0);
595
+ __decorate([
596
+ query('.div-row-error')
597
+ ], SfIEvents.prototype, "_SfRowError", void 0);
598
+ __decorate([
599
+ query('.div-row-error-message')
600
+ ], SfIEvents.prototype, "_SfRowErrorMessage", void 0);
601
+ __decorate([
602
+ query('.div-row-success')
603
+ ], SfIEvents.prototype, "_SfRowSuccess", void 0);
604
+ __decorate([
605
+ query('.div-row-success-message')
606
+ ], SfIEvents.prototype, "_SfRowSuccessMessage", void 0);
607
+ __decorate([
608
+ query('.loader-element')
609
+ ], SfIEvents.prototype, "_SfLoader", void 0);
610
+ __decorate([
611
+ query('#calendar-container')
612
+ ], SfIEvents.prototype, "_SfCalendarContainer", void 0);
613
+ SfIEvents = __decorate([
614
+ customElement('sf-i-events')
615
+ ], SfIEvents);
616
+ export { SfIEvents };
617
+ //# sourceMappingURL=sf-i-events.js.map
@@ -0,0 +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 getApiBodyList = () => {\n return JSON.parse(this.apiBodyList);\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 .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 .date-item-selected {\n color: white;\n background-color: #cd0078;\n border-radius: 8px;\n }\n\n .title-item {\n margin-bottom: 10px;\n }\n\n .calendar-item {\n width: 90%;\n margin-bottom: 20px;\n }\n\n .td-head {\n text-transform: capitalize;\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 .align-start {\n align-items: flex-start;\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: 25%;\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 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 console.log('last date of last month', month, date.getDate());\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-center 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\">';\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).slice(-2) + \"/\" + (\"0\" + (i+1)).slice(-2);\n\n if(this.events[mmdd] != null) {\n\n console.log('found not null event');\n\n html += '<div class=\"day-item date-item-selected\">';\n html += (i + 1);\n html += '</div>'; \n \n } else {\n\n html += '<div class=\"day-item date-item\">';\n html += (i + 1);\n html += '</div>'; \n \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\">';\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 class=\"day-item\">';\n html += 'S';\n html += '</div>';\n\n html += '<div class=\"day-item\">';\n html += 'M';\n html += '</div>';\n\n html += '<div class=\"day-item\">';\n html += 'T';\n html += '</div>';\n\n html += '<div class=\"day-item\">';\n html += 'W';\n html += '</div>';\n\n html += '<div class=\"day-item\">';\n html += 'T';\n html += '</div>';\n\n html += '<div class=\"day-item\">';\n html += 'F';\n html += '</div>';\n\n html += '<div class=\"day-item\">';\n html += 'S';\n html += '</div>';\n\n html += '</div>';\n\n return html;\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\">';\n html += '<div class=\"d-flex\">';\n html += '<div class=\"title-item\">' + this.monthNames[startDate.getMonth()] + '&nbsp;&nbsp;' + startDate.getFullYear() + '</div>';\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 }\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) - 1;\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 if(j === (startMonth - 1)) {\n break;\n }\n\n const mmdd = (\"0\" +j).slice(-2) + \"/\" + (\"0\" + dateArr[0]).slice(-2);\n\n if(this.events == null) {\n this.events = {};\n }\n this.events[mmdd] = value;\n\n j++;\n\n if(j === 12) {\n j = 0;\n }\n\n } \n\n } else {\n\n const mmdd = (\"0\" +dateArr[1]).slice(-2) + \"/\" + (\"0\" + dateArr[0]).slice(-2);\n\n if(this.events == null) {\n this.events = {};\n }\n this.events[mmdd] = 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 const body: any = this.getApiBodyList();\n let url = \"https://\"+this.apiIdList+\".execute-api.us-east-1.amazonaws.com/test/\" + this.apiMethodList;\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(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 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 loadMode = async () => {\n\n this.initInputs();\n this.initCalendar();\n await this.fetchList();\n this.renderCalendar();\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\">\n <div class=\"lb\"></div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-start\" id=\"calendar-container\">\n \n </div>\n <div class=\"rb\"></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\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sf-i-events': SfIEvents;\n }\n}\n"]}