sf-i-events 1.0.39 → 1.0.40

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.39",
4
+ "version": "1.0.40",
5
5
  "description": "Superflows Navigation Component",
6
6
  "main": "sf-i-events.js",
7
7
  "module": "sf-i-events.js",
package/sf-i-events.js CHANGED
@@ -1163,7 +1163,7 @@ let SfIEvents = class SfIEvents extends LitElement {
1163
1163
  html += this.getEventTexts(Object.keys(events[index])[k], JSON.parse(events[index][Object.keys(events[index])[k]]), events[index]);
1164
1164
  }
1165
1165
  else {
1166
- html += events[index][Object.keys(events[index])[k]].replace(/"/g, "");
1166
+ html += '<sf-i-elastic-text text="' + events[index][Object.keys(events[index])[k]].replace(/"/g, "") + '" minLength="20"></sf-i-elastic-text>';
1167
1167
  }
1168
1168
  html += '</td>';
1169
1169
  }
@@ -1311,7 +1311,7 @@ let SfIEvents = class SfIEvents extends LitElement {
1311
1311
  html += this.getEventTexts(Object.keys(unmappedEvents[i])[k], JSON.parse(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]]), unmappedEvents[i]);
1312
1312
  }
1313
1313
  else {
1314
- html += unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].replace(/"/g, "");
1314
+ html += ' <sf-i-elastic-text text="' + unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].replace(/"/g, "") + '" minLength="20"></sf-i-elastic-text>';
1315
1315
  }
1316
1316
  html += '</td>';
1317
1317
  }
@@ -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';\nimport {customElement, query, queryAssignedElements, property} from 'lit/decorators.js';\n// import {customElement, query, property} from 'lit/decorators.js';\nimport Util from './util';\nimport {SfIForm} from 'sf-i-form';\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 TAB_THIS = \"this\";\n TAB_PAST = \"past\";\n TAB_CUSTOM = \"custom\";\n TAB_REPORTER = \"reporter\";\n TAB_APPROVER = \"approver\";\n\n @property()\n name!: string;\n\n @property()\n apiId!: string;\n\n @property()\n apiIdList!: string;\n\n @property()\n apiIdDetail!: string;\n\n @property()\n apiIdUsers!: string;\n\n @property()\n apiIdTags!: 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 myRole: string = this.TAB_REPORTER;\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 mappedValuesDueDates: any = {};\n\n @property()\n mappedValuesUsers: any = {};\n\n @property()\n mappedValuesTags: any = {};\n\n @property()\n unmappedEvents: any = null;\n\n @property()\n mappings: any = null;\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 eventPreviewFields: any = null;\n\n getEventPreviewFields = () => {\n return JSON.parse(this.eventPreviewFields);\n }\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 .invisible {\n visibility: hidden;\n }\n\n .pr-5 {\n padding-right: 5px;\n }\n\n .pt-5 {\n padding-top: 5px;\n }\n\n .pb-5 {\n padding-bottom: 5px;\n }\n\n .text-start {\n text-align: start;\n }\n\n .mb-100 {\n margin-bottom: 100px;\n }\n\n #button-back-add-mapping {\n bottom: 10px;\n z-index: 98;\n position: sticky;\n width: 96%;\n margin-left: 2%;\n margin-right: 2%;\n }\n\n .fixed-bottom {\n position: fixed;\n bottom: 0px;\n left: 0px;\n width: 100%;\n z-index: 99;\n }\n\n .div-graph-complete {\n background-color: #64a692;\n height: 100%;\n width: 0%;\n }\n\n .div-graph-pending {\n background-color: #f49315;\n height: 100%;\n width: 100%;\n }\n\n input {\n\n border-width: 0px; \n border-radius: 5px;\n color: #666;\n background: #efefef;\n box-shadow: 1px 1px 10px 0 rgba(0, 0, 0, 0.25), -1px -1px 10px 0 rgba(255, 255, 255, 0.6);\n border-top: solid 1px rgba(255, 255, 255, 0.3);\n border-left: solid 1px rgba(255, 255, 255, 0.3);\n border-bottom: solid 1px rgba(0, 0, 0, 0.1);\n border-right: solid 1px rgba(0, 0, 0, 0.1);\n padding: 10px;\n\n }\n\n .bg-pending {\n background-color: #f49315;\n }\n\n .bg-done {\n background-color: #64a692;\n }\n\n .color-pending {\n color: #f49315;\n }\n\n .color-done {\n color: #64a692;\n }\n\n .pr-10 {\n padding-right: 10px;\n }\n\n .pt-10 {\n padding-top: 10px;\n }\n\n .pb-10 {\n padding-bottom: 10px;\n }\n\n .bg-left {\n border-top: solid 1px #dcdcdc;\n padding-right: 5px;\n }\n\n .m-0 {\n margin: 0px;\n }\n\n .ml-10 {\n margin-left: 10px;\n }\n\n .mt-20 {\n margin-top: 20px;\n }\n\n .mb-20 {\n margin-bottom: 20px;\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 .mr-10 {\n margin-right: 10px;\n }\n\n .pl-5 {\n padding-left: 5px;\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 #row-unmapped-graph {\n width: 300px;\n height: 10px;\n }\n\n #stream-container {\n padding: 2%;\n }\n\n #custom-container {\n padding: 2%;\n }\n\n #upcoming-container {\n padding: 2%;\n }\n\n .container-mapping-event {\n overflow-x: auto;\n }\n\n #this-container {\n padding: 2%;\n }\n\n #past-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: 100%\n }\n .stream-event-list-container {\n width: 200px;\n }\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 .title-item-date {\n padding-right: 5px;\n margin-bottom: 20px;\n }\n\n .calendar-item {\n width: 90%;\n margin-bottom: 20px;\n }\n\n .muted {\n color: gray;\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 .main-container {\n width: 90%;\n overflow-x: auto;\n }\n\n @media (orientation: landscape) {\n\n .lb {\n width: 30%\n }\n .rb {\n width: 30%\n }\n\n\n .calendar-item {\n width: 20%;\n margin: 2%;\n padding: 1%;\n }\n\n .main-container {\n width: 40%;\n }\n\n }\n\n `;\n \n @query('.SfIEventsC')\n _SfIEventsC: any;\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('#button-generate')\n _SfButtonGenerate: any;\n\n @query('#button-sync-chosen-project')\n _SfButtonSyncChosenProject: any;\n\n @query('#button-map-chosen-project')\n _SfButtonMapChosenProject: any;\n\n @query('#button-back-chosen-project')\n _SfButtonBackChosenProject: any;\n\n @query('#button-back-calendar-mapping')\n _SfButtonBackCalendarMapping: any;\n\n @query('#button-back-sync-mapping')\n _SfButtonBackSyncMapping: any;\n\n @query('#button-back-chosen-mapping')\n _SfButtonBackChosenMapping: any;\n\n @query('#title-chosen-project')\n _SfTitleChosenProject: any;\n\n @query('#title-chosen-mapping')\n _SfTitleChosenMapping: any;\n\n @query('#container-chosen-project')\n _SfContainerChosenProject: any;\n\n @query('#container-project-select')\n _SfContainerProjectSelect: any;\n\n @query('#container-project-actions')\n _SfContainerProjectActions: any;\n\n @query('#stream-container')\n _SfStreamContainer: any;\n\n @query('#upcoming-container')\n _SfUpcomingContainer: any;\n\n @query('#this-container')\n _SfThisContainer: any;\n\n @query('#past-container')\n _SfPastContainer: any;\n\n @query('#custom-container')\n _SfCustomContainer: any;\n\n @query('#mapping-container')\n _SfMappingContainer: any;\n\n @query('#stream-event-status')\n _SfStreamEventStatus: any;\n\n @query('#tab-container')\n _SfTabContainer: any;\n\n @query('#mapping-tab-container')\n _SfMappingTabContainer: any;\n\n @queryAssignedElements({slot: 'project'})\n _SfProject: 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 (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer 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 (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer 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 (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer as HTMLDivElement).style.display = 'none';\n }\n\n enableThis() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n (this._SfThisContainer as HTMLDivElement).style.display = 'flex';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer as HTMLDivElement).style.display = 'none';\n }\n\n enablePast() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'flex';\n (this._SfCustomContainer as HTMLDivElement).style.display = 'none';\n }\n\n enableCustom() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer 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): number => {\n const date = new Date(year, month + 1, 0);\n return date.getDate()\n }\n\n getFirstDateOfLastWeek = (startDate: Date) : Date => {\n\n const sd = new Date(startDate.getTime());\n var first = sd.getDate() - sd.getDay();\n var firstday = new Date(sd.setDate(first));\n for(var i = 0; i < 7; i++) {\n firstday.setDate(firstday.getDate() - 1);\n }\n return firstday;\n\n }\n\n getFirstDayOfLastMonth(yourDate: Date) {\n var d = new Date(yourDate);\n d.setDate(1);\n d.setMonth(d.getMonth() - 1);\n return d;\n}\n \n getFirstDateOfWeek = (startDate: Date) : Date => {\n\n const sd = new Date(startDate.getTime());\n var first = sd.getDate() - sd.getDay();\n var firstday = new Date(sd.setDate(first));\n return firstday;\n\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 = \"event-calendar-day-with-event\";\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=\"event-date-indicator-primary\" class=\"dot\"></div>'\n html += '</div>'\n html += '</div>'; \n } else {\n partName = \"event-calendar-day-without-event\";\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 var total = 0;\n\n for(var i = 1; i <= lastDay; i++) {\n\n const mmdd = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + i).slice(-2);\n if(this.events[mmdd] != null) {\n total++;\n }\n\n }\n\n html += '<div id=\"stream-event-summary\" part=\"stream-event-total\">';\n html += 'Total: <strong>'+total+'</strong>';\n html += '</div>';\n\n for(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 total++;\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 html += '<div class=\"stream-event-list-container flex-grow\">'\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 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 html += '<div class=\"stream-event-list-container flex-grow\">'\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 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 renderThisEvents = (index: number, startDate: Date) => {\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n var firstDate = new Date();\n var count = 7;\n\n console.log('this start date', startDate);\n\n if(index === 0) {\n\n firstDate = (this.getFirstDateOfWeek(startDate) as Date);\n console.log('this first date', firstDate);\n count = 7;\n\n }\n\n if(index === 1) {\n\n firstDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n count = this.getLastDayOfMonth(startDate.getFullYear(), startDate.getMonth());\n\n }\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (firstDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + firstDate.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(firstDate.getTime());\n startNextDate.setDate(firstDate.getDate() + 1);\n\n const startPrevDate = new Date(firstDate.getTime());\n startPrevDate.setDate(firstDate.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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.getMonth()+1)+' |</div>';\n html += '<div class=\"stream-event-list-container flex-grow\">'\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 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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.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 firstDate.setDate(firstDate.getDate() + 1);\n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderPastEvents = (index: number, startDate: Date) => {\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n var firstDate = new Date();\n var count = 7;\n\n console.log('this start date', startDate, index);\n\n if(index === 0) {\n\n firstDate = (this.getFirstDateOfLastWeek(startDate) as Date);\n console.log('this first date', firstDate);\n count = 7;\n\n }\n\n if(index === 1) {\n\n firstDate = (this.getFirstDayOfLastMonth(startDate) as Date);\n count = this.getLastDayOfLastMonth(startDate.getMonth(), startDate.getFullYear());\n\n console.log('this start date', firstDate);\n console.log('this start date', count);\n\n }\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (firstDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + firstDate.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(firstDate.getTime());\n startNextDate.setDate(firstDate.getDate() + 1);\n\n const startPrevDate = new Date(firstDate.getTime());\n startPrevDate.setDate(firstDate.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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.getMonth()+1)+' |</div>';\n html += '<div class=\"stream-event-list-container flex-grow\">'\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 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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.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 firstDate.setDate(firstDate.getDate() + 1);\n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderRangeEvents = (firstDate: Date, count: number) => {\n\n var html = '<div id=\"stream-event-0\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (firstDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + firstDate.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(firstDate.getTime());\n startNextDate.setDate(firstDate.getDate() + 1);\n\n const startPrevDate = new Date(firstDate.getTime());\n startPrevDate.setDate(firstDate.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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.getMonth()+1)+' |</div>';\n html += '<div class=\"stream-event-list-container flex-grow\">'\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 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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.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 firstDate.setDate(firstDate.getDate() + 1);\n\n }\n\n\n html += '</div>';\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('.calendar-right-data')!.innerHTML = html;\n\n }\n\n checkStartDateEarliness = (value: string) => {\n\n var startDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n var startDateChosen = new Date(value);\n\n if(startDateChosen.getTime() > startDateCalendar.getTime()) {\n return true;\n } else {\n return false;\n }\n }\n\n checkEndDateLateness = (value: string) => {\n\n var endDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + (parseInt(this.calendarStartYYYY) + 1));\n var endDateChosen = new Date(value);\n\n console.log('end date calendar', endDateCalendar);\n console.log('end date chosen', endDateChosen);\n\n if(endDateChosen.getTime() > endDateCalendar.getTime()) {\n return false;\n } else {\n return true;\n }\n }\n\n processDateSelection = () => {\n\n var startDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n var endDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + (parseInt(this.calendarStartYYYY) + 1));\n\n const valueStart = ((this._SfCustomContainer as HTMLDivElement).querySelector('#stream-start-date') as HTMLInputElement).value;\n const valueEnd = ((this._SfCustomContainer as HTMLDivElement).querySelector('#stream-end-date') as HTMLInputElement).value;\n\n if(valueStart != \"\" && valueEnd != \"\") {\n this.initCustomRightCol();\n if(!this.checkStartDateEarliness(valueStart)) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen Start Date cannot be earlier than \" + startDateCalendar;\n return;\n }\n if(!this.checkEndDateLateness(valueEnd)) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen End Date cannot be later than \" + endDateCalendar;\n return;\n }\n if(new Date(valueStart).getTime() > new Date(valueEnd).getTime()) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen End Date cannot be earlier than chosen Start Date\";\n return;\n }\n if((new Date(valueEnd).getTime() - new Date(valueStart).getTime())/(1000*60*60*24) > 90) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen time window cannot be greater than 90 days\";\n return;\n }\n this.renderRangeEvents(new Date(valueStart), (new Date(valueEnd).getTime() - new Date(valueStart).getTime())/(1000*60*60*24));\n } else if(valueStart != \"\" && valueEnd == \"\") {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Please select End Date\";\n } else if(valueStart == \"\" && valueEnd != \"\") {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Please select Start Date\";\n } else {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Please select Start Date and End Date\";\n }\n\n }\n\n initCustomRightCol = () => {\n\n var html = \"\";\n\n html += '<div id=\"stream-event-0\" part=\"stream-event-list\" class=\"stream-event-list\">';\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected\">';\n html += '<div><h2 id=\"stream-event-status\">Please select Start Date and End Date</h2></div>';\n html += '</div>';\n html += '</div>';\n\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('.calendar-right-data')!.innerHTML = html\n\n }\n\n checkAndShowBulk = () => {\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-checkbox') as NodeListOf<HTMLInputElement>;\n\n var checked = 0;\n\n console.log('checkAndShowBulk', inputArr.length);\n\n for(var i = 0; i < inputArr.length; i++) {\n\n console.log(inputArr[i].checked);\n if(inputArr[i].checked) {\n checked++;\n }\n \n }\n\n console.log('checkAndShowBulk', checked);\n\n if(checked > 1) {\n return true;\n }\n\n return false;\n\n }\n\n calculateAndShowSummary = () => {\n\n console.log('showing summary');\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-users');\n var mapped = 0;\n for(var i = 0; i < Object.keys(this.mappedValuesUsers).length; i++) {\n if(this.mappedValuesUsers[Object.keys(this.mappedValuesUsers)[i]].length > 0) {\n mapped++;\n }\n }\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-summary')!.innerHTML = 'Completed ' + mapped + ' / ' + inputArr.length;\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-graph')!.querySelector('.div-graph-pending')! as HTMLDivElement).style.width = ((inputArr.length - mapped)*100/(inputArr.length)) + '%';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-graph')!.querySelector('.div-graph-complete')! as HTMLDivElement).style.width = ((mapped)*100/(inputArr.length)) + '%';\n\n console.log('showing summary', mapped, Object.keys(this.mappedValuesUsers).length);\n\n if(mapped == inputArr.length) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#button-back-add-mapping') as HTMLButtonElement)!.style.visibility = 'visible';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#button-back-add-mapping') as HTMLButtonElement)!.style.visibility = 'hidden';\n }\n }\n\n showAllEvents = () => {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement)!.checked = true;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement)!.checked = false;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement)!.checked = false;\n //this.renderMapping(this.unmappedEvents)\n this.applyFilter();\n this.calculateAndShowSummary();\n \n }\n\n showMappedEvents = () => {\n\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement)!.checked = false;\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement)!.checked = true;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement)!.checked = false;\n //this.renderMapping(this.unmappedEvents)\n this.applyFilter(\"mapped\")\n\n }\n\n showUnmappedEvents = () => {\n\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement)!.checked = false;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement)!.checked = false;\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement)!.checked = true;\n //this.renderMapping(this.unmappedEvents)\n this.applyFilter(\"unmapped\")\n\n }\n\n updateInAllSelections = (param: string, value: any) => {\n\n console.log('updateinallselections', param, value);\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-checkbox') as NodeListOf<HTMLInputElement>;\n const inputDatesArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-dates') as NodeListOf<HTMLInputElement>;\n const divDatesArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.div-dates') as NodeListOf<HTMLDivElement>;\n const inputTagsArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-tags') as NodeListOf<SfIForm>;\n const divTagsArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.div-tags') as NodeListOf<HTMLDivElement>;\n const inputUsersArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-users') as NodeListOf<SfIForm>;\n const divUsersArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.div-users') as NodeListOf<HTMLDivElement>;\n\n for(var i = 0; i < inputArr.length; i++) {\n console.log('updateinallselections', i);\n if(inputArr[i].checked) {\n if(param == \"duedate\") {\n inputDatesArr[i].value = value;\n divDatesArr[i].innerHTML = value;\n this.mappedValuesDueDates[i] = value;\n }\n if(param == \"tags\") {\n inputTagsArr[i].preselectedValues = JSON.stringify(value);\n inputTagsArr[i].populatePreselected();\n divTagsArr[i].innerHTML = '';\n var html = '';\n for(var j = 0; j < value.length; j++) {\n html += value[j];\n if(j < (value.length - 1)) {\n html += \",\";\n }\n }\n divTagsArr[i].innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesTags[i] = value;\n }\n if(param == \"users\") {\n // inputUsersArr[i].value = value;\n // divUsersArr[i].innerHTML = value;\n // this.mappedValuesUsers[i] = value;\n inputUsersArr[i].preselectedValues = JSON.stringify(value);\n inputUsersArr[i].populatePreselected();\n divUsersArr[i].innerHTML = '';\n var html = '';\n for(var j = 0; j < value.length; j++) {\n html += value[j];\n if(j < (value.length - 1)) {\n html += \",\";\n }\n }\n divUsersArr[i].innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesUsers[i] = value;\n this.updateMappingStatus(value, i);\n this.calculateAndShowSummary();\n }\n }\n }\n\n }\n\n updateMappingStatus = (value: any, clickIndex: number) => {\n console.log('clickindex', clickIndex);\n if(value.length > 0) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+clickIndex) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-done\">check_circle</done>'\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+clickIndex) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-pending\">pending</done>'\n }\n }\n\n renderCustom = () => {\n\n var html = '';\n\n html += '<div class=\"d-flex flex-grow\">';\n html += '<div class=\"d-flex calendar-left-col flex-col align-end\">';\n\n html += '<div class=\"title-item-date\">';\n html += '<label part=\"input-label\">Start Date</label><br />'\n html += '<input id=\"stream-start-date\" part=\"input\" type=\"date\" />'\n html += '</div>';\n html += '<div class=\"title-item-date\">';\n html += '<label part=\"input-label\">End Date</label><br />'\n html += '<input id=\"stream-end-date\" part=\"input\" type=\"date\" />'\n html += '</div>';\n\n html += '</div>';\n\n html += '<div class=\"calendar-right-data\">';\n\n html += '</div>';\n html += '</div>';\n\n (this._SfCustomContainer as HTMLDivElement).innerHTML = html;\n\n this.initCustomRightCol();\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('#stream-start-date')?.addEventListener('change', (ev: any) => {\n console.log('start-date', ev);\n this.processDateSelection();\n });\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('#stream-end-date')?.addEventListener('change', (ev: any) => {\n console.log('end-date', ev);\n this.processDateSelection();\n });\n \n\n // for(var i = 0; i < 3; i++) {\n // (this._SfCustomContainer 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.renderPast(target);\n // })\n // }\n }\n\n renderPast = (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+'\">Week</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+'\">Month</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 html += this.renderPastEvents(index, startDate);\n startDate.setDate(startDate.getDate() + 1);\n \n html += '</div>';\n html += '</div>';\n\n (this._SfPastContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 3; i++) {\n (this._SfPastContainer 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.renderPast(target);\n })\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 renderThis = (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+'\">Week</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+'\">Month</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 html += this.renderThisEvents(index, startDate);\n startDate.setDate(startDate.getDate() + 1);\n \n html += '</div>';\n html += '</div>';\n\n (this._SfThisContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 3; i++) {\n (this._SfThisContainer 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.renderThis(target);\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 this.clearAllCalendars();\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 html += '<button class=\"tab-button\" id=\"calendar-tab-this\" part=\"'+(selectedTab == this.TAB_THIS ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Current</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-past\" part=\"'+(selectedTab == this.TAB_PAST ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Past</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-custom\" part=\"'+(selectedTab == this.TAB_CUSTOM ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Range</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 this.renderStream();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-upcoming')?.addEventListener('click', () => {\n this.enableUpcoming();\n this.renderTabs(this.TAB_UPCOMING);\n this.renderUpcoming();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-this')?.addEventListener('click', () => {\n this.enableThis();\n this.renderTabs(this.TAB_THIS);\n this.renderThis();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-past')?.addEventListener('click', () => {\n this.enablePast();\n this.renderTabs(this.TAB_PAST);\n this.renderPast();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-custom')?.addEventListener('click', () => {\n this.enableCustom();\n this.renderTabs(this.TAB_CUSTOM);\n this.renderCustom();\n });\n\n }\n\n renderMappingTabs = (selectedTab: string) => {\n\n var html = '';\n\n html += '<button class=\"tab-button\" id=\"mapping-tab-reporter\" part=\"'+(selectedTab == this.TAB_REPORTER ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Reporter</button>';\n html += '<button class=\"tab-button\" id=\"mapping-tab-approver\" part=\"'+(selectedTab == this.TAB_APPROVER ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Approver</button>';\n\n (this._SfMappingTabContainer as HTMLDivElement).innerHTML = html;\n\n (this._SfMappingTabContainer as HTMLDivElement).querySelector('#mapping-tab-reporter')?.addEventListener('click', () => {\n this.myRole = this.TAB_REPORTER;\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_REPORTER)\n });\n\n (this._SfMappingTabContainer as HTMLDivElement).querySelector('#mapping-tab-approver')?.addEventListener('click', () => {\n this.myRole = this.TAB_APPROVER;\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_APPROVER)\n });\n\n }\n\n renderExpandEvent = (events:any, index: any) => {\n\n var html = '';\n\n for(var k = 0; k < Object.keys(events[index]).length; k++) {\n if(!this.getEventPreviewFields().includes(Object.keys(events[index])[k])) {\n\n html += '<td part=\"td-body\">';\n if(events[index][Object.keys(events[index])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(events[index])[k], JSON.parse(events[index][Object.keys(events[index])[k]]), events[index]);\n } else {\n html += events[index][Object.keys(events[index])[k]].replace(/\"/g, \"\");\n }\n html += '</td>';\n \n }\n }\n\n console.log((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-'+index)!.innerHTML);\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-'+index)!.insertAdjacentHTML('beforeend', html);\n\n html = '';\n for(var k = 0; k < Object.keys(events[index]).length; k++) {\n if(!this.getEventPreviewFields().includes(Object.keys(events[index])[k])) {\n html += '<th part=\"td-head\" class=\"bg-left\">';\n html += Object.keys(events[index])[k];\n html += '</th>';\n }\n }\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-head-'+index)!.insertAdjacentHTML('beforeend', html);\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#th-expand-'+index) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#td-expand-'+index) as HTMLElement).style.display = 'none';\n\n }\n\n renderMapping = (unmappedEvents: any) => {\n\n this.mappedValuesDueDates = {};\n this.mappedValuesTags = {};\n this.mappedValuesUsers = {};\n\n console.log('rendering mapping', unmappedEvents, this.mappedValuesDueDates, this.mappedValuesUsers, this.mappedValuesTags)\n\n var html = '';\n\n html += '<div class=\"d-flex align-center mt-20\">';\n html += '<div id=\"row-unmapped-graph\" class=\"d-flex flex-grow\"><div class=\"div-graph-complete\"></div><div class=\"div-graph-pending\"></div></div>';\n html += '<div id=\"row-unmapped-summary\" part=\"filter-title\" class=\"ml-10\">Completed 0</div>';\n html += '</div>';\n\n html += '<table part=\"button\" id=\"row-unmapped-table-multi-entry\" class=\"hide fixed-bottom justify-center\">';\n html += '<tr>';\n html += '</tr>';\n html += '<tr>';\n html += '<th part=\"td-head\" class=\"col-date\">';\n html += 'Duedate';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"col-tags\">';\n html += 'Tags';\n html += '</th>';\n html += '<th part=\"td-head\">';\n html += 'Users';\n html += '</th>';\n html += '<th class=\"d-flex\">';\n html += '<button id=\"row-unmapped-table-multi-entry-cancel\" part=\"button-icon-small\" class=\"material-icons\">close</button>';\n html += '</th>';\n html += '</tr>';\n html += '<tr>';\n html += '<td class=\"col-date\">';\n html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-multi-entry-date\" />';\n html += '</td>';\n html += '<td part=\"td-head\" class=\"col-tags\">';\n html += '<sf-i-form id=\"row-unmapped-input-multi-entry-tags\" name=\"Tags\" label=\"Select Tags\" apiId=\"'+this.apiIdTags+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-multi-entry-tags\" />';\n html += '</td>';\n html += '<td part=\"td-head\">';\n html += '<sf-i-form id=\"row-unmapped-input-multi-entry-users\" name=\"Users\" label=\"Select Users\" apiId=\"'+this.apiIdUsers+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-multi-entry-users\" />';\n html += '</td>';\n html += '<td>';\n html += '</td>';\n html += '</tr>';\n html += '</table>';\n\n html += '<div class=\"d-flex align-center mt-20 mb-20\">';\n html += '<div class=\"mr-10\" part=\"filter-title\">Filter</div>';\n html += '<div class=\"pr-10 pt-5 pb-5\" part=\"filter-title\"><label><input name=\"row-unmapped-filter\" id=\"row-unmapped-filter-all\" type=\"radio\"/>All</label></div>'\n html += '<div class=\"pr-10 pt-5 pb-5\" part=\"filter-title\"><label><input name=\"row-unmapped-filter\" id=\"row-unmapped-filter-mapped\" type=\"radio\"/>Mapped</label></div>'\n html += '<div class=\"pr-10 pt-5 pb-5\" part=\"filter-title\"><label><input name=\"row-unmapped-filter\" id=\"row-unmapped-filter-unmapped\" type=\"radio\"/>Un-mapped</label></div>'\n html += '</div>'\n\n html += '<div class=\"container-mapping-event\">';\n\n for(var i = 0; i < unmappedEvents.length; i++) {\n\n // var moveOn = false;\n\n // if(filter != \"all\") {\n // if(filter == \"mapped\") {\n // if(this.mappedValuesUsers[i] == null || this.mappedValuesUsers[i] == \"\") {\n // moveOn = true;\n // }\n // }\n // if(filter == \"unmapped\") {\n // if(this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") {\n // moveOn = true;\n // }\n // }\n // }\n\n // if(moveOn) {\n // continue;\n // }\n\n console.log(unmappedEvents[i]);\n html += '<table id=\"row-unmapped-table'+i+'\">';\n html += '<thead>';\n html += '<tr id=\"row-unmapped-head-'+i+'\">';\n html += '<th part=\"td-head\" class=\"left-sticky bg-left\">';\n html += 'Select';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left '+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? 'color-done' : 'color-pending')+'\">';\n html += 'Status';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left col-date-head-'+i+'\">';\n html += 'Duedate';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left col-tags-head-'+i+'\">';\n html += 'Tags';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left\">';\n html += 'Users';\n html += '</th>';\n for(var k = 0; k < Object.keys(unmappedEvents[i]).length; k++) {\n if(this.getEventPreviewFields().includes(Object.keys(unmappedEvents[i])[k])) {\n html += '<th part=\"td-head\" class=\"bg-left\">';\n html += Object.keys(unmappedEvents[i])[k];\n html += '</th>';\n }\n }\n html += '<th id=\"th-expand-'+i+'\" part=\"td-head\">';\n html += '</th>';\n html += '</tr>';\n html += '</thead>';\n html += '<tbody>';\n html += '<tr id=\"row-unmapped-'+i+'\">';\n html += '<td part=\"td-body\" class=\"left-sticky\">';\n html += '<input type=\"checkbox\" class=\"input-checkbox\" id=\"row-unmapped-select-'+i+'\"/>'\n html += '</td>';\n html += '<td part=\"td-body\" class=\"\" id=\"row-unmapped-status-'+i+'\">';\n html += '<span class=\"material-icons '+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? 'color-done' : 'color-pending')+'\">'+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? 'check_circle' : 'pending')+'</span>';\n html += '</td>';\n html += '<td part=\"td-body\" class=\"col-date-'+i+'\">';\n html += '<div class=\"d-flex align-center\">';\n html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-override-date-input-'+i+'\" class=\"hide input-dates\" value=\"'+(this.mappedValuesDueDates[i] != null ? this.mappedValuesDueDates[i] : '')+'\"/>';\n html += '<div id=\"row-unmapped-override-date-div-'+i+'\" class=\"div-dates\">'+((this.mappedValuesDueDates[i] != null && this.mappedValuesDueDates[i] != \"\") ? this.mappedValuesDueDates[i] : '')+'</div>';\n html += '</div>';\n html += '</td>';\n html += '<td part=\"td-body\" class=\"col-tags-'+i+'\">';\n html += '<sf-i-form id=\"row-unmapped-input-tags-'+i+'\" class=\"hide input-tags\" name=\"Tags\" label=\"Select Tags\" apiId=\"'+this.apiIdTags+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-tags-'+i+'\" class=\"hide input-tags\" value=\"'+((this.mappedValuesTags[i] != null && this.mappedValuesTags[i] != \"\") ? this.mappedValuesTags[i] : '')+'\"/>';\n html += '<div id=\"row-unmapped-div-tags-'+i+'\" class=\"div-tags\">'+((this.mappedValuesTags[i] != null && this.mappedValuesTags[i] != \"\") ? this.mappedValuesTags[i] : '')+'</div>';\n html += '</td>';\n html += '<td part=\"td-body\" class=\"\">';\n html += '<sf-i-form id=\"row-unmapped-input-users-'+i+'\" class=\"hide input-users\" name=\"Users\" label=\"Select Users\" apiId=\"'+this.apiIdUsers+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-users-'+i+'\" class=\"hide input-users\" value=\"'+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? this.mappedValuesUsers[i] : '')+'\"/>';\n html += '<div id=\"row-unmapped-div-users-'+i+'\" class=\"div-users\">'+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? this.mappedValuesUsers[i] : '')+'</div>';\n html += '</td>';\n for(var k = 0; k < Object.keys(unmappedEvents[i]).length; k++) {\n if(this.getEventPreviewFields().includes(Object.keys(unmappedEvents[i])[k])) {\n\n html += '<td part=\"td-body\">';\n if(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(unmappedEvents[i])[k], JSON.parse(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]]), unmappedEvents[i]);\n } else {\n html += unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].replace(/\"/g, \"\");\n }\n html += '</td>';\n \n }\n }\n html += '<td id=\"td-expand-'+i+'\" part=\"td-body\">';\n html += '<button id=\"button-unmapped-expand-'+i+'\" part=\"button-icon-small\" class=\"material-icons\">chevron_right</button>'\n html += '</td>';\n html += '</tr>';\n html += '</tbody>';\n html += '</table>';\n }\n\n html += '</div>';\n\n html += '<button id=\"button-back-add-mapping\" part=\"button\" class=\"invisible mb-20 mt-20\">Save</button>';\n\n (this._SfMappingContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < unmappedEvents.length; i++) {\n\n // var moveOn = false;\n\n // if(filter != \"all\") {\n // if(filter == \"mapped\") {\n // if(this.mappedValuesUsers[i] == null || this.mappedValuesUsers[i] == \"\") {\n // moveOn = true;\n // }\n // }\n // if(filter == \"unmapped\") {\n // if(this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") {\n // moveOn = true;\n // }\n // }\n // }\n\n // if(moveOn) {\n // continue;\n // }\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#button-unmapped-expand-'+i)?.addEventListener('click', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[3];\n console.log('clickindex', clickIndex)\n this.renderExpandEvent(unmappedEvents, clickIndex);\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-select-'+i) as HTMLInputElement).addEventListener('change', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[3];\n console.log('clickcheckbox', clickIndex)\n if(((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-select-'+clickIndex) as HTMLInputElement).checked) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+clickIndex) as HTMLInputElement).style.display = 'none';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+clickIndex) as HTMLInputElement).style.display = 'block';\n }\n if(this.checkAndShowBulk()) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry') as HTMLElement).style.display = 'flex';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry') as HTMLElement).style.display = 'none';\n }\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+i)?.addEventListener('keyup', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[5];\n const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+clickIndex) as HTMLDivElement);\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+clickIndex) as HTMLInputElement);\n div.innerHTML = input.value;\n this.mappedValuesDueDates[clickIndex] = input.value;\n \n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+i)?.addEventListener('valueChanged', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[4];\n const form = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as SfIForm);\n const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLDivElement);\n div.innerHTML = '';\n var html = '';\n for(var i = 0; i < form.selectedValues().length; i++) {\n html += form.selectedValues()[i];\n if(i < (form.selectedValues().length - 1)) {\n html += \",\";\n }\n }\n div.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesTags[clickIndex] = form.selectedValues();\n\n // const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLDivElement);\n // const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as HTMLInputElement);\n // div.innerHTML = input.value;\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+i)?.addEventListener('valueChanged', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[4];\n const form = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+clickIndex) as SfIForm);\n console.log('valuechanged called', form.selectedValues());\n const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+clickIndex) as HTMLDivElement);\n div.innerHTML = '';\n var html = '';\n for(var i = 0; i < form.selectedValues().length; i++) {\n html += form.selectedValues()[i];\n if(i < (form.selectedValues().length - 1)) {\n html += \",\";\n }\n }\n div.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesUsers[clickIndex] = form.selectedValues();\n this.updateMappingStatus(form.selectedValues(), clickIndex);\n this.calculateAndShowSummary(); \n\n });\n\n }\n\n \n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-users')?.addEventListener('valueChanged', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-users') as SfIForm);\n console.log('valuechanged users', input.selectedValues());\n this.updateInAllSelections(\"users\", input.selectedValues());\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-date')?.addEventListener('keyup', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-date') as HTMLInputElement);\n this.updateInAllSelections(\"duedate\", input.value)\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-tags')?.addEventListener('valueChanged', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-tags') as SfIForm);\n this.updateInAllSelections(\"tags\", input.selectedValues());\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement).addEventListener('change', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement);\n if(input.checked) {\n this.showAllEvents();\n }\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement).addEventListener('change', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement);\n if(input.checked) {\n this.showMappedEvents();\n }\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement).addEventListener('change', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement);\n if(input.checked) {\n this.showUnmappedEvents();\n }\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry-cancel') as HTMLInputElement).addEventListener('click', () => {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry') as HTMLElement).style.display = 'none';\n this.clearAllMappingSelections();\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#button-back-add-mapping') as HTMLButtonElement)!.addEventListener('click', async () => {\n this.uploadMapping();\n });\n \n }\n\n applyFilter = (filter: string = \"all\") => {\n\n for(var i = 0; i < this.unmappedEvents.length; i++) {\n\n if(filter == \"mapped\") {\n\n\n if(this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'block';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'none';\n }\n\n }\n\n if(filter == \"unmapped\") {\n\n if(this.mappedValuesUsers[i] == null || this.mappedValuesUsers[i] == \"\") {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'block';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'none';\n }\n\n }\n\n if(filter == \"all\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'block';\n\n }\n\n if(this.myRole == this.TAB_APPROVER) {\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[0].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[1].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-'+i) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-head-'+i) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[0].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[1].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-'+i) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-head-'+i) as HTMLElement).style.display = 'none';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[0].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[1].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-'+i) as HTMLElement).style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-head-'+i) as HTMLElement).style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[0].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[1].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-'+i) as HTMLElement).style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-head-'+i) as HTMLElement).style.display = 'table-cell';\n }\n\n\n }\n\n if(filter == \"all\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement).checked = true;\n\n }\n\n\n if(filter == \"mapped\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement).checked = true;\n\n }\n\n if(filter == \"unmapped\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement).checked = true;\n\n }\n\n }\n\n getIndexFromId = (id: string) => {\n\n for(var i = 0; i < this.unmappedEvents.length; i++) {\n\n if(this.unmappedEvents[i].id == id) {\n return i;\n }\n\n }\n\n return -1;\n }\n\n prepopulateMapping = (mappings: any) => {\n\n console.log('mappings', mappings);\n\n if(mappings == null) {\n return;\n }\n\n for(var i = 0; i < Object.keys(mappings.duedates).length; i++) {\n const eventId = Object.keys(mappings.duedates)[i];\n const index = this.getIndexFromId(eventId);\n this.mappedValuesDueDates[index] = mappings.duedates[eventId];\n }\n\n for(var i = 0; i < Object.keys(mappings.tags).length; i++) {\n const eventId = Object.keys(mappings.tags)[i];\n const index = this.getIndexFromId(eventId);\n this.mappedValuesTags[index] = mappings.tags[eventId];\n }\n\n for(var i = 0; i < Object.keys(mappings.users).length; i++) {\n const eventId = Object.keys(mappings.users)[i];\n const index = this.getIndexFromId(eventId);\n this.mappedValuesUsers[index] = mappings.users[eventId];\n }\n\n console.log(this.mappedValuesDueDates);\n console.log(this.mappedValuesTags);\n console.log(this.mappedValuesUsers);\n\n for(var i = 0; i < this.unmappedEvents.length; i++) {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+i) as HTMLDivElement)!.innerHTML = (this.mappedValuesDueDates[i] != null && this.mappedValuesDueDates[i] != \"\") ? this.mappedValuesDueDates[i] : \"\";\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+i) as HTMLInputElement)!.value = (this.mappedValuesDueDates[i] != null && this.mappedValuesDueDates[i] != \"\") ? this.mappedValuesDueDates[i] : \"\";\n \n if(this.mappedValuesTags[i] != null) {\n var html = '';\n for(var j = 0; j < this.mappedValuesTags[i].length; j++) {\n html += this.mappedValuesTags[i][j];\n if(j < (this.mappedValuesTags[i].length - 1)) {\n html += ',';\n }\n }\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+i) as HTMLDivElement)!.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+i) as SfIForm)!.preselectedValues = JSON.stringify(this.mappedValuesTags[i]);\n //((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+i) as SfIForm)!.populatePreselected();\n }\n \n\n if(this.mappedValuesUsers[i] != null) {\n html = '';\n for(var j = 0; j < this.mappedValuesUsers[i].length; j++) {\n html += this.mappedValuesUsers[i][j];\n if(j < (this.mappedValuesUsers[i].length - 1)) {\n html += ',';\n }\n }\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+i) as HTMLDivElement)!.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+i) as SfIForm)!.preselectedValues = JSON.stringify(this.mappedValuesUsers[i]);\n //((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+i) as SfIForm)!.populatePreselected();\n }\n\n if(this.mappedValuesUsers[i] != null) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+i) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-done\">check_circle</span>';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+i) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-pending\">pending</span>';\n }\n \n\n }\n\n this.calculateAndShowSummary();\n\n }\n\n clearAllMappingSelections = () => {\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-checkbox') as NodeListOf<HTMLInputElement>;\n for(var i = 0; i < inputArr.length; i++) {\n\n if(inputArr[i].checked) {\n inputArr[i].checked = false;\n inputArr[i].dispatchEvent(new Event('change'));\n }\n \n }\n\n }\n\n clearAllCalendars = () => {\n\n (this._SfCalendarContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfStreamContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfUpcomingContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfThisContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfPastContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfCustomContainer as HTMLDivElement).innerHTML = \"\";\n\n }\n\n transformMappingsForUpload = (mapping: any) => {\n\n const duedates = mapping.duedates;\n const tags = mapping.tags;\n const users = mapping.users;\n\n const transformedDuedates : any = {};\n const transformedTags : any = {};\n const transformedUsers : any = {};\n\n console.log('unmappedevents[i] duedates',duedates);\n\n for(var i = 0; i < Object.keys(duedates).length; i++) {\n\n console.log('unmappedevents[i]',i,this.unmappedEvents[i]);\n\n const index = Object.keys(duedates)[i];\n const eventId = this.unmappedEvents[i].id;\n transformedDuedates[eventId] = duedates[index];\n\n }\n\n for(var i = 0; i < Object.keys(tags).length; i++) {\n\n const index = Object.keys(tags)[i];\n const eventId = this.unmappedEvents[i].id;\n transformedTags[eventId] = tags[index];\n\n }\n\n for(var i = 0; i < Object.keys(users).length; i++) {\n\n const index = Object.keys(users)[i];\n const eventId = this.unmappedEvents[i].id;\n transformedUsers[eventId] = users[index];\n\n }\n\n return {\n duedates: transformedDuedates,\n tags: transformedTags,\n users: transformedUsers\n }\n\n }\n\n uploadMapping = async () => {\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/mapevents\";\n\n const mapping = this.transformMappingsForUpload({\n duedates: this.mappedValuesDueDates,\n tags: this.mappedValuesTags,\n users: this.mappedValuesUsers\n });\n\n const body = { \"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0], \"role\": this.myRole, \"mapping\": JSON.stringify(mapping)} \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 sync', jsonRespose);\n this.setSuccess(\"Mapping uploaded successfully!\");\n setTimeout(() => {\n this.clearMessages()\n this.showChosenMapping();\n this.fetchEventMap();\n if(this.myRole == this.TAB_REPORTER) {\n this.renderMappingTabs(this.TAB_REPORTER);\n } else {\n this.renderMappingTabs(this.TAB_APPROVER);\n }\n }, 2000);\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n uploadEvents = async () => {\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/synccalendar\";\n\n const body = { \"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0], \"events\": JSON.stringify(this.events)} \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 sync', jsonRespose);\n this.loadMode();\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n }\n\n processEvent = (value: any) => {\n\n console.log('processing due date', value);\n console.log('processing due date', value.duedate.replace(/['\"]+/g, ''));\n console.log('processing due date', this.mappings);\n\n var duedate = value.duedate;\n\n if(this.mappings.duedates[value.id] != null && this.mappings.duedates[value.id] != \"\") {\n duedate = this.mappings.duedates[value.id];\n }\n\n const duedateArr = 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 renderChosenProject = (events: any = null) => {\n\n if(events == null) {\n\n var html = '';\n\n html += '<div class=\"lb\"></div>';\n html += '<div class=\"d-flex justify-between align-center\">';\n html += '<div class=\"muted\">Calender doesn\\'t exist! &nbsp; &nbsp;</div>';\n html += '<button id=\"button-generate-chosen-project\" part=\"button\">Generate</button>';\n html += '</div>';\n html += '<div class=\"rb\"></div>';\n\n (this._SfContainerChosenProject as HTMLDivElement).innerHTML = html;\n\n (((this._SfContainerChosenProject as HTMLDivElement) as HTMLDivElement).querySelector('#button-generate-chosen-project') as HTMLButtonElement).addEventListener('click', async () => {\n await this.fetchList();\n });\n \n } else {\n\n }\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 fetchCalendar = async() => {\n\n this.apiBodyList = '{\"id\": \"' +(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0]+ '\"}'\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/getcalendar\";\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr({\"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0]}, url, this._SfLoader, authorization)) as any;\n this._SfLoader.innerHTML = '';\n if(xhr.status == 200) {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n this.showChosenProject();\n (this._SfTitleChosenProject as HTMLElement).innerHTML = this.truncate((this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0], 20, true);\n this.events = JSON.parse(jsonRespose.data.value.events)\n // console.log(events);\n if(this.events != null) {\n this.renderTabs(this.TAB_YEAR);\n this.renderCalendar();\n }\n // this.renderChosenProject(events);\n \n } else {\n\n if(xhr.status === 404) {\n\n this.showChosenProject();\n (this._SfTitleChosenProject as HTMLElement).innerHTML = (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0];\n this.renderChosenProject();\n\n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n }\n\n fetchEventMap = async () => {\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/getunmappedevents\";\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr({\"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0], \"role\": this.myRole}, 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(jsonRespose);\n this.unmappedEvents = jsonRespose.data.unmappedEvents;\n this.mappings = jsonRespose.data.mappings;\n this.renderMapping( this.unmappedEvents)\n this.prepopulateMapping(this.mappings);\n this.applyFilter();\n if(jsonRespose.data.mappings != null) {\n (this._SfButtonBackCalendarMapping as HTMLButtonElement).style.visibility = 'visible';\n } else {\n (this._SfButtonBackCalendarMapping as HTMLButtonElement).style.visibility = 'hidden';\n }\n \n } else {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n\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 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\n console.log('list response', JSON.stringify(jsonRespose));\n\n const fieldArr = JSON.parse(jsonRespose.data.value[this.apiResponseFieldList]) as Array<string>;\n this.events = null;\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 console.log('all events processed');\n this.uploadEvents();\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 showChooseProject = () => {\n\n var elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.choose-project') as NodeListOf<HTMLElement>;\n var index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'flex'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-project') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-mapping') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n }\n\n showChosenProject = () => {\n\n var elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.choose-project') as NodeListOf<HTMLElement>;\n var index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-project') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'flex'\n }\n\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-mapping') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n \n }\n\n showChosenMapping = () => {\n\n var elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.choose-project') as NodeListOf<HTMLElement>;\n var index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-project') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-mapping') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'flex'\n }\n \n }\n\n truncate = ( str: string, n: number, useWordBoundary: boolean ) => {\n if (str.length <= n) { return str; }\n const subString = str.slice(0, n-1); // the original check\n return (useWordBoundary \n ? subString.slice(0, subString.lastIndexOf(\" \")) \n : subString) + \"&hellip;\";\n };\n\n initListenersAdmin = () => {\n\n var old_element = null;\n var new_element = null;\n\n old_element = (this._SfProject[0].querySelector('#sf-i-project') as SfIForm);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n this._SfProject[0].querySelector('#sf-i-project').addEventListener('valueChanged', async () => {\n (this._SfTitleChosenMapping as HTMLElement).innerHTML = this.truncate((this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0], 20, true);\n this.showChosenMapping();\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_REPORTER);\n }); \n\n old_element = (this._SfButtonBackChosenProject as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackChosenProject as HTMLButtonElement).addEventListener('click', async () => {\n this.loadMode();\n });\n\n old_element = (this._SfButtonSyncChosenProject as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonSyncChosenProject as HTMLButtonElement).addEventListener('click', async () => {\n this.fetchList();\n });\n\n old_element = (this._SfButtonBackChosenMapping as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackChosenMapping as HTMLButtonElement).addEventListener('click', async () => {\n this.loadMode();\n });\n\n old_element = (this._SfButtonMapChosenProject as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonMapChosenProject as HTMLButtonElement).addEventListener('click', async () => {\n (this._SfTitleChosenMapping as HTMLElement).innerHTML = this.truncate((this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0], 20, true);\n this.showChosenMapping();\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_REPORTER);\n });\n\n \n old_element = (this._SfButtonBackCalendarMapping as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackCalendarMapping as HTMLButtonElement).addEventListener('click', async () => {\n this.fetchCalendar()\n });\n\n old_element = (this._SfButtonBackSyncMapping as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackSyncMapping as HTMLButtonElement).addEventListener('click', async () => {\n this.fetchList();\n });\n \n }\n\n loadMode = async () => {\n\n if(this.mode == \"admin\") {\n\n this.showChooseProject();\n this.initListenersAdmin();\n\n } else {\n\n this.enableCalendar();\n this.initInputs();\n this.initCalendar();\n\n await this.fetchList();\n \n if(this.events != null) {\n this.renderTabs(this.TAB_YEAR);\n this.renderCalendar();\n }\n \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 if(this.mode == \"admin\") {\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 <h1 part=\"title\">${this.name}</h1>\n </div>\n <div class=\"d-flex justify-center\">\n <div part=\"badge\" class=\"badge\">Admin</div>\n </div>\n <br />\n <div class=\"loader-element\"></div>\n <div class=\"choose-project\" class=\"d-flex justify-center align-start\">\n <div class=\"d-flex flex-grow justify-center align-start\">\n <h3 part=\"results-title\" id=\"title-choose-project\" class=\"m-0\">Choose Project</h3>\n </div>\n </div>\n <div class=\"d-flex justify-between\">\n <div class=\"lb\"></div>\n <div class=\" main-container\">\n <div class=\"chosen-project\" class=\"d-flex justify-center align-start\">\n <div class=\"d-flex flex-grow justify-between align-start\">\n <div class=\"d-flex justify-center\">\n &nbsp;<button id=\"button-back-chosen-project\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\n &nbsp;<button part=\"button-icon\" class=\"invisible button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\n </div>\n <h3 part=\"results-title\" id=\"title-chosen-project\" class=\"m-0\">Project Name</h3>\n <div class=\"d-flex justify-center\">\n <button id=\"button-sync-chosen-project\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">sync</span></button>\n &nbsp;\n <button id=\"button-map-chosen-project\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">person_add</span></button>\n &nbsp;\n </div>\n </div>\n </div>\n <div class=\"chosen-mapping\" class=\"d-flex justify-center align-center\">\n <div class=\"d-flex flex-grow justify-between align-start\">\n <div>\n &nbsp;\n <button id=\"button-back-chosen-mapping\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\n <button part=\"button-icon\" class=\"invisible button-icon\"><span class=\"material-icons\">calendar_month</span></button>\n </div>\n <h3 part=\"results-title\" id=\"title-chosen-mapping\" class=\"m-0\">Project Name</h3>\n <div>\n <button id=\"button-back-sync-mapping\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">sync</span></button>\n <button id=\"button-back-calendar-mapping\" part=\"button-icon\" class=\"invisible button-icon\"><span class=\"material-icons\">calendar_month</span></button>\n &nbsp;\n </div>\n </div>\n </div>\n <div class=\"choose-project\" class=\"d-flex justify-center align-start\">\n <div class=\" mt-20\">\n <slot name=\"project\"></slot>\n </div>\n </div>\n <div id=\"container-chosen-project\" class=\"chosen-project hide d-flex justify-center align-start mt-20\">\n \n </div>\n <div class=\"chosen-project d-flex justify-center\" id=\"tab-container\">\n\n </div>\n \n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"calendar-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"stream-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"upcoming-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"this-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"past-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"custom-container\">\n \n </div>\n\n <div class=\"chosen-mapping d-flex justify-center mt-20\" id=\"mapping-tab-container\">\n\n </div>\n <div class=\"chosen-mapping d-flex flex-col mb-100\" id=\"mapping-container\">\n </div>\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 } else {\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 class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"this-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"past-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"custom-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}\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":"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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';\nimport {customElement, query, queryAssignedElements, property} from 'lit/decorators.js';\n// import {customElement, query, property} from 'lit/decorators.js';\nimport Util from './util';\nimport {SfIForm} from 'sf-i-form';\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 TAB_THIS = \"this\";\n TAB_PAST = \"past\";\n TAB_CUSTOM = \"custom\";\n TAB_REPORTER = \"reporter\";\n TAB_APPROVER = \"approver\";\n\n @property()\n name!: string;\n\n @property()\n apiId!: string;\n\n @property()\n apiIdList!: string;\n\n @property()\n apiIdDetail!: string;\n\n @property()\n apiIdUsers!: string;\n\n @property()\n apiIdTags!: 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 myRole: string = this.TAB_REPORTER;\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 mappedValuesDueDates: any = {};\n\n @property()\n mappedValuesUsers: any = {};\n\n @property()\n mappedValuesTags: any = {};\n\n @property()\n unmappedEvents: any = null;\n\n @property()\n mappings: any = null;\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 eventPreviewFields: any = null;\n\n getEventPreviewFields = () => {\n return JSON.parse(this.eventPreviewFields);\n }\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 .invisible {\n visibility: hidden;\n }\n\n .pr-5 {\n padding-right: 5px;\n }\n\n .pt-5 {\n padding-top: 5px;\n }\n\n .pb-5 {\n padding-bottom: 5px;\n }\n\n .text-start {\n text-align: start;\n }\n\n .mb-100 {\n margin-bottom: 100px;\n }\n\n #button-back-add-mapping {\n bottom: 10px;\n z-index: 98;\n position: sticky;\n width: 96%;\n margin-left: 2%;\n margin-right: 2%;\n }\n\n .fixed-bottom {\n position: fixed;\n bottom: 0px;\n left: 0px;\n width: 100%;\n z-index: 99;\n }\n\n .div-graph-complete {\n background-color: #64a692;\n height: 100%;\n width: 0%;\n }\n\n .div-graph-pending {\n background-color: #f49315;\n height: 100%;\n width: 100%;\n }\n\n input {\n\n border-width: 0px; \n border-radius: 5px;\n color: #666;\n background: #efefef;\n box-shadow: 1px 1px 10px 0 rgba(0, 0, 0, 0.25), -1px -1px 10px 0 rgba(255, 255, 255, 0.6);\n border-top: solid 1px rgba(255, 255, 255, 0.3);\n border-left: solid 1px rgba(255, 255, 255, 0.3);\n border-bottom: solid 1px rgba(0, 0, 0, 0.1);\n border-right: solid 1px rgba(0, 0, 0, 0.1);\n padding: 10px;\n\n }\n\n .bg-pending {\n background-color: #f49315;\n }\n\n .bg-done {\n background-color: #64a692;\n }\n\n .color-pending {\n color: #f49315;\n }\n\n .color-done {\n color: #64a692;\n }\n\n .pr-10 {\n padding-right: 10px;\n }\n\n .pt-10 {\n padding-top: 10px;\n }\n\n .pb-10 {\n padding-bottom: 10px;\n }\n\n .bg-left {\n border-top: solid 1px #dcdcdc;\n padding-right: 5px;\n }\n\n .m-0 {\n margin: 0px;\n }\n\n .ml-10 {\n margin-left: 10px;\n }\n\n .mt-20 {\n margin-top: 20px;\n }\n\n .mb-20 {\n margin-bottom: 20px;\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 .mr-10 {\n margin-right: 10px;\n }\n\n .pl-5 {\n padding-left: 5px;\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 #row-unmapped-graph {\n width: 300px;\n height: 10px;\n }\n\n #stream-container {\n padding: 2%;\n }\n\n #custom-container {\n padding: 2%;\n }\n\n #upcoming-container {\n padding: 2%;\n }\n\n .container-mapping-event {\n overflow-x: auto;\n }\n\n #this-container {\n padding: 2%;\n }\n\n #past-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: 100%\n }\n .stream-event-list-container {\n width: 200px;\n }\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 .title-item-date {\n padding-right: 5px;\n margin-bottom: 20px;\n }\n\n .calendar-item {\n width: 90%;\n margin-bottom: 20px;\n }\n\n .muted {\n color: gray;\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 .main-container {\n width: 90%;\n overflow-x: auto;\n }\n\n @media (orientation: landscape) {\n\n .lb {\n width: 30%\n }\n .rb {\n width: 30%\n }\n\n\n .calendar-item {\n width: 20%;\n margin: 2%;\n padding: 1%;\n }\n\n .main-container {\n width: 40%;\n }\n\n }\n\n `;\n \n @query('.SfIEventsC')\n _SfIEventsC: any;\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('#button-generate')\n _SfButtonGenerate: any;\n\n @query('#button-sync-chosen-project')\n _SfButtonSyncChosenProject: any;\n\n @query('#button-map-chosen-project')\n _SfButtonMapChosenProject: any;\n\n @query('#button-back-chosen-project')\n _SfButtonBackChosenProject: any;\n\n @query('#button-back-calendar-mapping')\n _SfButtonBackCalendarMapping: any;\n\n @query('#button-back-sync-mapping')\n _SfButtonBackSyncMapping: any;\n\n @query('#button-back-chosen-mapping')\n _SfButtonBackChosenMapping: any;\n\n @query('#title-chosen-project')\n _SfTitleChosenProject: any;\n\n @query('#title-chosen-mapping')\n _SfTitleChosenMapping: any;\n\n @query('#container-chosen-project')\n _SfContainerChosenProject: any;\n\n @query('#container-project-select')\n _SfContainerProjectSelect: any;\n\n @query('#container-project-actions')\n _SfContainerProjectActions: any;\n\n @query('#stream-container')\n _SfStreamContainer: any;\n\n @query('#upcoming-container')\n _SfUpcomingContainer: any;\n\n @query('#this-container')\n _SfThisContainer: any;\n\n @query('#past-container')\n _SfPastContainer: any;\n\n @query('#custom-container')\n _SfCustomContainer: any;\n\n @query('#mapping-container')\n _SfMappingContainer: any;\n\n @query('#stream-event-status')\n _SfStreamEventStatus: any;\n\n @query('#tab-container')\n _SfTabContainer: any;\n\n @query('#mapping-tab-container')\n _SfMappingTabContainer: any;\n\n @queryAssignedElements({slot: 'project'})\n _SfProject: 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 (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer 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 (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer 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 (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer as HTMLDivElement).style.display = 'none';\n }\n\n enableThis() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n (this._SfThisContainer as HTMLDivElement).style.display = 'flex';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer as HTMLDivElement).style.display = 'none';\n }\n\n enablePast() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'flex';\n (this._SfCustomContainer as HTMLDivElement).style.display = 'none';\n }\n\n enableCustom() {\n (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\n (this._SfStreamContainer as HTMLDivElement).style.display = 'none';\n (this._SfUpcomingContainer as HTMLDivElement).style.display = 'none';\n (this._SfThisContainer as HTMLDivElement).style.display = 'none';\n (this._SfPastContainer as HTMLDivElement).style.display = 'none';\n (this._SfCustomContainer 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): number => {\n const date = new Date(year, month + 1, 0);\n return date.getDate()\n }\n\n getFirstDateOfLastWeek = (startDate: Date) : Date => {\n\n const sd = new Date(startDate.getTime());\n var first = sd.getDate() - sd.getDay();\n var firstday = new Date(sd.setDate(first));\n for(var i = 0; i < 7; i++) {\n firstday.setDate(firstday.getDate() - 1);\n }\n return firstday;\n\n }\n\n getFirstDayOfLastMonth(yourDate: Date) {\n var d = new Date(yourDate);\n d.setDate(1);\n d.setMonth(d.getMonth() - 1);\n return d;\n}\n \n getFirstDateOfWeek = (startDate: Date) : Date => {\n\n const sd = new Date(startDate.getTime());\n var first = sd.getDate() - sd.getDay();\n var firstday = new Date(sd.setDate(first));\n return firstday;\n\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 = \"event-calendar-day-with-event\";\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=\"event-date-indicator-primary\" class=\"dot\"></div>'\n html += '</div>'\n html += '</div>'; \n } else {\n partName = \"event-calendar-day-without-event\";\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 var total = 0;\n\n for(var i = 1; i <= lastDay; i++) {\n\n const mmdd = (\"0\" + (month+1)).slice(-2) + \"/\" + (\"0\" + i).slice(-2);\n if(this.events[mmdd] != null) {\n total++;\n }\n\n }\n\n html += '<div id=\"stream-event-summary\" part=\"stream-event-total\">';\n html += 'Total: <strong>'+total+'</strong>';\n html += '</div>';\n\n for(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 total++;\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 html += '<div class=\"stream-event-list-container flex-grow\">'\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 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 html += '<div class=\"stream-event-list-container flex-grow\">'\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 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 renderThisEvents = (index: number, startDate: Date) => {\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n var firstDate = new Date();\n var count = 7;\n\n console.log('this start date', startDate);\n\n if(index === 0) {\n\n firstDate = (this.getFirstDateOfWeek(startDate) as Date);\n console.log('this first date', firstDate);\n count = 7;\n\n }\n\n if(index === 1) {\n\n firstDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n count = this.getLastDayOfMonth(startDate.getFullYear(), startDate.getMonth());\n\n }\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (firstDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + firstDate.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(firstDate.getTime());\n startNextDate.setDate(firstDate.getDate() + 1);\n\n const startPrevDate = new Date(firstDate.getTime());\n startPrevDate.setDate(firstDate.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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.getMonth()+1)+' |</div>';\n html += '<div class=\"stream-event-list-container flex-grow\">'\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 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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.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 firstDate.setDate(firstDate.getDate() + 1);\n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderPastEvents = (index: number, startDate: Date) => {\n\n var html = '<div id=\"stream-event-'+index+'\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n var firstDate = new Date();\n var count = 7;\n\n console.log('this start date', startDate, index);\n\n if(index === 0) {\n\n firstDate = (this.getFirstDateOfLastWeek(startDate) as Date);\n console.log('this first date', firstDate);\n count = 7;\n\n }\n\n if(index === 1) {\n\n firstDate = (this.getFirstDayOfLastMonth(startDate) as Date);\n count = this.getLastDayOfLastMonth(startDate.getMonth(), startDate.getFullYear());\n\n console.log('this start date', firstDate);\n console.log('this start date', count);\n\n }\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (firstDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + firstDate.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(firstDate.getTime());\n startNextDate.setDate(firstDate.getDate() + 1);\n\n const startPrevDate = new Date(firstDate.getTime());\n startPrevDate.setDate(firstDate.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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.getMonth()+1)+' |</div>';\n html += '<div class=\"stream-event-list-container flex-grow\">'\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 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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.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 firstDate.setDate(firstDate.getDate() + 1);\n\n }\n\n html += '</div>'\n\n return html;\n\n }\n\n renderRangeEvents = (firstDate: Date, count: number) => {\n\n var html = '<div id=\"stream-event-0\" part=\"stream-event-list\" class=\"stream-event-list\">';\n\n for(var i = 1; i <= count; i++) {\n\n const mmdd = (\"0\" + (firstDate.getMonth()+1)).slice(-2) + \"/\" + (\"0\" + firstDate.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(firstDate.getTime());\n startNextDate.setDate(firstDate.getDate() + 1);\n\n const startPrevDate = new Date(firstDate.getTime());\n startPrevDate.setDate(firstDate.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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.getMonth()+1)+' |</div>';\n html += '<div class=\"stream-event-list-container flex-grow\">'\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 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\" + firstDate.getDate()).slice(-2)+'/'+(firstDate.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 firstDate.setDate(firstDate.getDate() + 1);\n\n }\n\n\n html += '</div>';\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('.calendar-right-data')!.innerHTML = html;\n\n }\n\n checkStartDateEarliness = (value: string) => {\n\n var startDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n var startDateChosen = new Date(value);\n\n if(startDateChosen.getTime() > startDateCalendar.getTime()) {\n return true;\n } else {\n return false;\n }\n }\n\n checkEndDateLateness = (value: string) => {\n\n var endDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + (parseInt(this.calendarStartYYYY) + 1));\n var endDateChosen = new Date(value);\n\n console.log('end date calendar', endDateCalendar);\n console.log('end date chosen', endDateChosen);\n\n if(endDateChosen.getTime() > endDateCalendar.getTime()) {\n return false;\n } else {\n return true;\n }\n }\n\n processDateSelection = () => {\n\n var startDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + this.calendarStartYYYY);\n var endDateCalendar = new Date(this.calendarStartMM + '/' + this.calendarStartDD + '/' + (parseInt(this.calendarStartYYYY) + 1));\n\n const valueStart = ((this._SfCustomContainer as HTMLDivElement).querySelector('#stream-start-date') as HTMLInputElement).value;\n const valueEnd = ((this._SfCustomContainer as HTMLDivElement).querySelector('#stream-end-date') as HTMLInputElement).value;\n\n if(valueStart != \"\" && valueEnd != \"\") {\n this.initCustomRightCol();\n if(!this.checkStartDateEarliness(valueStart)) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen Start Date cannot be earlier than \" + startDateCalendar;\n return;\n }\n if(!this.checkEndDateLateness(valueEnd)) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen End Date cannot be later than \" + endDateCalendar;\n return;\n }\n if(new Date(valueStart).getTime() > new Date(valueEnd).getTime()) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen End Date cannot be earlier than chosen Start Date\";\n return;\n }\n if((new Date(valueEnd).getTime() - new Date(valueStart).getTime())/(1000*60*60*24) > 90) {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Chosen time window cannot be greater than 90 days\";\n return;\n }\n this.renderRangeEvents(new Date(valueStart), (new Date(valueEnd).getTime() - new Date(valueStart).getTime())/(1000*60*60*24));\n } else if(valueStart != \"\" && valueEnd == \"\") {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Please select End Date\";\n } else if(valueStart == \"\" && valueEnd != \"\") {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Please select Start Date\";\n } else {\n (this._SfStreamEventStatus as HTMLDivElement).innerHTML = \"Please select Start Date and End Date\";\n }\n\n }\n\n initCustomRightCol = () => {\n\n var html = \"\";\n\n html += '<div id=\"stream-event-0\" part=\"stream-event-list\" class=\"stream-event-list\">';\n html += '<div part=\"stream-event-not-selected\" class=\"d-flex stream-event-not-selected\">';\n html += '<div><h2 id=\"stream-event-status\">Please select Start Date and End Date</h2></div>';\n html += '</div>';\n html += '</div>';\n\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('.calendar-right-data')!.innerHTML = html\n\n }\n\n checkAndShowBulk = () => {\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-checkbox') as NodeListOf<HTMLInputElement>;\n\n var checked = 0;\n\n console.log('checkAndShowBulk', inputArr.length);\n\n for(var i = 0; i < inputArr.length; i++) {\n\n console.log(inputArr[i].checked);\n if(inputArr[i].checked) {\n checked++;\n }\n \n }\n\n console.log('checkAndShowBulk', checked);\n\n if(checked > 1) {\n return true;\n }\n\n return false;\n\n }\n\n calculateAndShowSummary = () => {\n\n console.log('showing summary');\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-users');\n var mapped = 0;\n for(var i = 0; i < Object.keys(this.mappedValuesUsers).length; i++) {\n if(this.mappedValuesUsers[Object.keys(this.mappedValuesUsers)[i]].length > 0) {\n mapped++;\n }\n }\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-summary')!.innerHTML = 'Completed ' + mapped + ' / ' + inputArr.length;\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-graph')!.querySelector('.div-graph-pending')! as HTMLDivElement).style.width = ((inputArr.length - mapped)*100/(inputArr.length)) + '%';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-graph')!.querySelector('.div-graph-complete')! as HTMLDivElement).style.width = ((mapped)*100/(inputArr.length)) + '%';\n\n console.log('showing summary', mapped, Object.keys(this.mappedValuesUsers).length);\n\n if(mapped == inputArr.length) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#button-back-add-mapping') as HTMLButtonElement)!.style.visibility = 'visible';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#button-back-add-mapping') as HTMLButtonElement)!.style.visibility = 'hidden';\n }\n }\n\n showAllEvents = () => {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement)!.checked = true;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement)!.checked = false;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement)!.checked = false;\n //this.renderMapping(this.unmappedEvents)\n this.applyFilter();\n this.calculateAndShowSummary();\n \n }\n\n showMappedEvents = () => {\n\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement)!.checked = false;\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement)!.checked = true;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement)!.checked = false;\n //this.renderMapping(this.unmappedEvents)\n this.applyFilter(\"mapped\")\n\n }\n\n showUnmappedEvents = () => {\n\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement)!.checked = false;\n // ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement)!.checked = false;\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement)!.checked = true;\n //this.renderMapping(this.unmappedEvents)\n this.applyFilter(\"unmapped\")\n\n }\n\n updateInAllSelections = (param: string, value: any) => {\n\n console.log('updateinallselections', param, value);\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-checkbox') as NodeListOf<HTMLInputElement>;\n const inputDatesArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-dates') as NodeListOf<HTMLInputElement>;\n const divDatesArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.div-dates') as NodeListOf<HTMLDivElement>;\n const inputTagsArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-tags') as NodeListOf<SfIForm>;\n const divTagsArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.div-tags') as NodeListOf<HTMLDivElement>;\n const inputUsersArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-users') as NodeListOf<SfIForm>;\n const divUsersArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.div-users') as NodeListOf<HTMLDivElement>;\n\n for(var i = 0; i < inputArr.length; i++) {\n console.log('updateinallselections', i);\n if(inputArr[i].checked) {\n if(param == \"duedate\") {\n inputDatesArr[i].value = value;\n divDatesArr[i].innerHTML = value;\n this.mappedValuesDueDates[i] = value;\n }\n if(param == \"tags\") {\n inputTagsArr[i].preselectedValues = JSON.stringify(value);\n inputTagsArr[i].populatePreselected();\n divTagsArr[i].innerHTML = '';\n var html = '';\n for(var j = 0; j < value.length; j++) {\n html += value[j];\n if(j < (value.length - 1)) {\n html += \",\";\n }\n }\n divTagsArr[i].innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesTags[i] = value;\n }\n if(param == \"users\") {\n // inputUsersArr[i].value = value;\n // divUsersArr[i].innerHTML = value;\n // this.mappedValuesUsers[i] = value;\n inputUsersArr[i].preselectedValues = JSON.stringify(value);\n inputUsersArr[i].populatePreselected();\n divUsersArr[i].innerHTML = '';\n var html = '';\n for(var j = 0; j < value.length; j++) {\n html += value[j];\n if(j < (value.length - 1)) {\n html += \",\";\n }\n }\n divUsersArr[i].innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesUsers[i] = value;\n this.updateMappingStatus(value, i);\n this.calculateAndShowSummary();\n }\n }\n }\n\n }\n\n updateMappingStatus = (value: any, clickIndex: number) => {\n console.log('clickindex', clickIndex);\n if(value.length > 0) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+clickIndex) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-done\">check_circle</done>'\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+clickIndex) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-pending\">pending</done>'\n }\n }\n\n renderCustom = () => {\n\n var html = '';\n\n html += '<div class=\"d-flex flex-grow\">';\n html += '<div class=\"d-flex calendar-left-col flex-col align-end\">';\n\n html += '<div class=\"title-item-date\">';\n html += '<label part=\"input-label\">Start Date</label><br />'\n html += '<input id=\"stream-start-date\" part=\"input\" type=\"date\" />'\n html += '</div>';\n html += '<div class=\"title-item-date\">';\n html += '<label part=\"input-label\">End Date</label><br />'\n html += '<input id=\"stream-end-date\" part=\"input\" type=\"date\" />'\n html += '</div>';\n\n html += '</div>';\n\n html += '<div class=\"calendar-right-data\">';\n\n html += '</div>';\n html += '</div>';\n\n (this._SfCustomContainer as HTMLDivElement).innerHTML = html;\n\n this.initCustomRightCol();\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('#stream-start-date')?.addEventListener('change', (ev: any) => {\n console.log('start-date', ev);\n this.processDateSelection();\n });\n\n (this._SfCustomContainer as HTMLDivElement).querySelector('#stream-end-date')?.addEventListener('change', (ev: any) => {\n console.log('end-date', ev);\n this.processDateSelection();\n });\n \n\n // for(var i = 0; i < 3; i++) {\n // (this._SfCustomContainer 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.renderPast(target);\n // })\n // }\n }\n\n renderPast = (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+'\">Week</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+'\">Month</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 html += this.renderPastEvents(index, startDate);\n startDate.setDate(startDate.getDate() + 1);\n \n html += '</div>';\n html += '</div>';\n\n (this._SfPastContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 3; i++) {\n (this._SfPastContainer 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.renderPast(target);\n })\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 renderThis = (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+'\">Week</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+'\">Month</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 html += this.renderThisEvents(index, startDate);\n startDate.setDate(startDate.getDate() + 1);\n \n html += '</div>';\n html += '</div>';\n\n (this._SfThisContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < 3; i++) {\n (this._SfThisContainer 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.renderThis(target);\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 this.clearAllCalendars();\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 html += '<button class=\"tab-button\" id=\"calendar-tab-this\" part=\"'+(selectedTab == this.TAB_THIS ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Current</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-past\" part=\"'+(selectedTab == this.TAB_PAST ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Past</button>';\n html += '<button class=\"tab-button\" id=\"calendar-tab-custom\" part=\"'+(selectedTab == this.TAB_CUSTOM ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Range</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 this.renderStream();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-upcoming')?.addEventListener('click', () => {\n this.enableUpcoming();\n this.renderTabs(this.TAB_UPCOMING);\n this.renderUpcoming();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-this')?.addEventListener('click', () => {\n this.enableThis();\n this.renderTabs(this.TAB_THIS);\n this.renderThis();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-past')?.addEventListener('click', () => {\n this.enablePast();\n this.renderTabs(this.TAB_PAST);\n this.renderPast();\n });\n\n (this._SfTabContainer as HTMLDivElement).querySelector('#calendar-tab-custom')?.addEventListener('click', () => {\n this.enableCustom();\n this.renderTabs(this.TAB_CUSTOM);\n this.renderCustom();\n });\n\n }\n\n renderMappingTabs = (selectedTab: string) => {\n\n var html = '';\n\n html += '<button class=\"tab-button\" id=\"mapping-tab-reporter\" part=\"'+(selectedTab == this.TAB_REPORTER ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Reporter</button>';\n html += '<button class=\"tab-button\" id=\"mapping-tab-approver\" part=\"'+(selectedTab == this.TAB_APPROVER ? 'calendar-tab-button-selected' : 'calendar-tab-button-not-selected')+'\">Approver</button>';\n\n (this._SfMappingTabContainer as HTMLDivElement).innerHTML = html;\n\n (this._SfMappingTabContainer as HTMLDivElement).querySelector('#mapping-tab-reporter')?.addEventListener('click', () => {\n this.myRole = this.TAB_REPORTER;\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_REPORTER)\n });\n\n (this._SfMappingTabContainer as HTMLDivElement).querySelector('#mapping-tab-approver')?.addEventListener('click', () => {\n this.myRole = this.TAB_APPROVER;\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_APPROVER)\n });\n\n }\n\n renderExpandEvent = (events:any, index: any) => {\n\n var html = '';\n\n for(var k = 0; k < Object.keys(events[index]).length; k++) {\n if(!this.getEventPreviewFields().includes(Object.keys(events[index])[k])) {\n\n html += '<td part=\"td-body\">';\n if(events[index][Object.keys(events[index])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(events[index])[k], JSON.parse(events[index][Object.keys(events[index])[k]]), events[index]);\n } else {\n html += '<sf-i-elastic-text text=\"'+events[index][Object.keys(events[index])[k]].replace(/\"/g, \"\")+'\" minLength=\"20\"></sf-i-elastic-text>';\n }\n html += '</td>';\n \n }\n }\n\n console.log((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-'+index)!.innerHTML);\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-'+index)!.insertAdjacentHTML('beforeend', html);\n\n html = '';\n for(var k = 0; k < Object.keys(events[index]).length; k++) {\n if(!this.getEventPreviewFields().includes(Object.keys(events[index])[k])) {\n html += '<th part=\"td-head\" class=\"bg-left\">';\n html += Object.keys(events[index])[k];\n html += '</th>';\n }\n }\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-head-'+index)!.insertAdjacentHTML('beforeend', html);\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#th-expand-'+index) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#td-expand-'+index) as HTMLElement).style.display = 'none';\n\n }\n\n renderMapping = (unmappedEvents: any) => {\n\n this.mappedValuesDueDates = {};\n this.mappedValuesTags = {};\n this.mappedValuesUsers = {};\n\n console.log('rendering mapping', unmappedEvents, this.mappedValuesDueDates, this.mappedValuesUsers, this.mappedValuesTags)\n\n var html = '';\n\n html += '<div class=\"d-flex align-center mt-20\">';\n html += '<div id=\"row-unmapped-graph\" class=\"d-flex flex-grow\"><div class=\"div-graph-complete\"></div><div class=\"div-graph-pending\"></div></div>';\n html += '<div id=\"row-unmapped-summary\" part=\"filter-title\" class=\"ml-10\">Completed 0</div>';\n html += '</div>';\n\n html += '<table part=\"button\" id=\"row-unmapped-table-multi-entry\" class=\"hide fixed-bottom justify-center\">';\n html += '<tr>';\n html += '</tr>';\n html += '<tr>';\n html += '<th part=\"td-head\" class=\"col-date\">';\n html += 'Duedate';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"col-tags\">';\n html += 'Tags';\n html += '</th>';\n html += '<th part=\"td-head\">';\n html += 'Users';\n html += '</th>';\n html += '<th class=\"d-flex\">';\n html += '<button id=\"row-unmapped-table-multi-entry-cancel\" part=\"button-icon-small\" class=\"material-icons\">close</button>';\n html += '</th>';\n html += '</tr>';\n html += '<tr>';\n html += '<td class=\"col-date\">';\n html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-multi-entry-date\" />';\n html += '</td>';\n html += '<td part=\"td-head\" class=\"col-tags\">';\n html += '<sf-i-form id=\"row-unmapped-input-multi-entry-tags\" name=\"Tags\" label=\"Select Tags\" apiId=\"'+this.apiIdTags+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-multi-entry-tags\" />';\n html += '</td>';\n html += '<td part=\"td-head\">';\n html += '<sf-i-form id=\"row-unmapped-input-multi-entry-users\" name=\"Users\" label=\"Select Users\" apiId=\"'+this.apiIdUsers+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-multi-entry-users\" />';\n html += '</td>';\n html += '<td>';\n html += '</td>';\n html += '</tr>';\n html += '</table>';\n\n html += '<div class=\"d-flex align-center mt-20 mb-20\">';\n html += '<div class=\"mr-10\" part=\"filter-title\">Filter</div>';\n html += '<div class=\"pr-10 pt-5 pb-5\" part=\"filter-title\"><label><input name=\"row-unmapped-filter\" id=\"row-unmapped-filter-all\" type=\"radio\"/>All</label></div>'\n html += '<div class=\"pr-10 pt-5 pb-5\" part=\"filter-title\"><label><input name=\"row-unmapped-filter\" id=\"row-unmapped-filter-mapped\" type=\"radio\"/>Mapped</label></div>'\n html += '<div class=\"pr-10 pt-5 pb-5\" part=\"filter-title\"><label><input name=\"row-unmapped-filter\" id=\"row-unmapped-filter-unmapped\" type=\"radio\"/>Un-mapped</label></div>'\n html += '</div>'\n\n html += '<div class=\"container-mapping-event\">';\n\n for(var i = 0; i < unmappedEvents.length; i++) {\n\n // var moveOn = false;\n\n // if(filter != \"all\") {\n // if(filter == \"mapped\") {\n // if(this.mappedValuesUsers[i] == null || this.mappedValuesUsers[i] == \"\") {\n // moveOn = true;\n // }\n // }\n // if(filter == \"unmapped\") {\n // if(this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") {\n // moveOn = true;\n // }\n // }\n // }\n\n // if(moveOn) {\n // continue;\n // }\n\n console.log(unmappedEvents[i]);\n html += '<table id=\"row-unmapped-table'+i+'\">';\n html += '<thead>';\n html += '<tr id=\"row-unmapped-head-'+i+'\">';\n html += '<th part=\"td-head\" class=\"left-sticky bg-left\">';\n html += 'Select';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left '+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? 'color-done' : 'color-pending')+'\">';\n html += 'Status';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left col-date-head-'+i+'\">';\n html += 'Duedate';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left col-tags-head-'+i+'\">';\n html += 'Tags';\n html += '</th>';\n html += '<th part=\"td-head\" class=\"bg-left\">';\n html += 'Users';\n html += '</th>';\n for(var k = 0; k < Object.keys(unmappedEvents[i]).length; k++) {\n if(this.getEventPreviewFields().includes(Object.keys(unmappedEvents[i])[k])) {\n html += '<th part=\"td-head\" class=\"bg-left\">';\n html += Object.keys(unmappedEvents[i])[k];\n html += '</th>';\n }\n }\n html += '<th id=\"th-expand-'+i+'\" part=\"td-head\">';\n html += '</th>';\n html += '</tr>';\n html += '</thead>';\n html += '<tbody>';\n html += '<tr id=\"row-unmapped-'+i+'\">';\n html += '<td part=\"td-body\" class=\"left-sticky\">';\n html += '<input type=\"checkbox\" class=\"input-checkbox\" id=\"row-unmapped-select-'+i+'\"/>'\n html += '</td>';\n html += '<td part=\"td-body\" class=\"\" id=\"row-unmapped-status-'+i+'\">';\n html += '<span class=\"material-icons '+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? 'color-done' : 'color-pending')+'\">'+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? 'check_circle' : 'pending')+'</span>';\n html += '</td>';\n html += '<td part=\"td-body\" class=\"col-date-'+i+'\">';\n html += '<div class=\"d-flex align-center\">';\n html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-override-date-input-'+i+'\" class=\"hide input-dates\" value=\"'+(this.mappedValuesDueDates[i] != null ? this.mappedValuesDueDates[i] : '')+'\"/>';\n html += '<div id=\"row-unmapped-override-date-div-'+i+'\" class=\"div-dates\">'+((this.mappedValuesDueDates[i] != null && this.mappedValuesDueDates[i] != \"\") ? this.mappedValuesDueDates[i] : '')+'</div>';\n html += '</div>';\n html += '</td>';\n html += '<td part=\"td-body\" class=\"col-tags-'+i+'\">';\n html += '<sf-i-form id=\"row-unmapped-input-tags-'+i+'\" class=\"hide input-tags\" name=\"Tags\" label=\"Select Tags\" apiId=\"'+this.apiIdTags+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-tags-'+i+'\" class=\"hide input-tags\" value=\"'+((this.mappedValuesTags[i] != null && this.mappedValuesTags[i] != \"\") ? this.mappedValuesTags[i] : '')+'\"/>';\n html += '<div id=\"row-unmapped-div-tags-'+i+'\" class=\"div-tags\">'+((this.mappedValuesTags[i] != null && this.mappedValuesTags[i] != \"\") ? this.mappedValuesTags[i] : '')+'</div>';\n html += '</td>';\n html += '<td part=\"td-body\" class=\"\">';\n html += '<sf-i-form id=\"row-unmapped-input-users-'+i+'\" class=\"hide input-users\" name=\"Users\" label=\"Select Users\" apiId=\"'+this.apiIdUsers+'\" mode=\"multiselect-dropdown\" searchPhrase=\"'+(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0]+'\" selectProjection=\"name\" mandatory></sf-i-form>';\n //html += '<input part=\"input\" type=\"text\" id=\"row-unmapped-input-users-'+i+'\" class=\"hide input-users\" value=\"'+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? this.mappedValuesUsers[i] : '')+'\"/>';\n html += '<div id=\"row-unmapped-div-users-'+i+'\" class=\"div-users\">'+((this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") ? this.mappedValuesUsers[i] : '')+'</div>';\n html += '</td>';\n for(var k = 0; k < Object.keys(unmappedEvents[i]).length; k++) {\n if(this.getEventPreviewFields().includes(Object.keys(unmappedEvents[i])[k])) {\n\n html += '<td part=\"td-body\">';\n if(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].indexOf(\"[\") >= 0) {\n html += this.getEventTexts(Object.keys(unmappedEvents[i])[k], JSON.parse(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]]), unmappedEvents[i]);\n } else {\n html += ' <sf-i-elastic-text text=\"'+unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].replace(/\"/g, \"\")+'\" minLength=\"20\"></sf-i-elastic-text>';\n }\n html += '</td>';\n \n }\n }\n html += '<td id=\"td-expand-'+i+'\" part=\"td-body\">';\n html += '<button id=\"button-unmapped-expand-'+i+'\" part=\"button-icon-small\" class=\"material-icons\">chevron_right</button>'\n html += '</td>';\n html += '</tr>';\n html += '</tbody>';\n html += '</table>';\n }\n\n html += '</div>';\n\n html += '<button id=\"button-back-add-mapping\" part=\"button\" class=\"invisible mb-20 mt-20\">Save</button>';\n\n (this._SfMappingContainer as HTMLDivElement).innerHTML = html;\n\n for(var i = 0; i < unmappedEvents.length; i++) {\n\n // var moveOn = false;\n\n // if(filter != \"all\") {\n // if(filter == \"mapped\") {\n // if(this.mappedValuesUsers[i] == null || this.mappedValuesUsers[i] == \"\") {\n // moveOn = true;\n // }\n // }\n // if(filter == \"unmapped\") {\n // if(this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") {\n // moveOn = true;\n // }\n // }\n // }\n\n // if(moveOn) {\n // continue;\n // }\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#button-unmapped-expand-'+i)?.addEventListener('click', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[3];\n console.log('clickindex', clickIndex)\n this.renderExpandEvent(unmappedEvents, clickIndex);\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-select-'+i) as HTMLInputElement).addEventListener('change', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[3];\n console.log('clickcheckbox', clickIndex)\n if(((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-select-'+clickIndex) as HTMLInputElement).checked) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+clickIndex) as HTMLInputElement).style.display = 'none';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLInputElement).style.display = 'block';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+clickIndex) as HTMLInputElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+clickIndex) as HTMLInputElement).style.display = 'block';\n }\n if(this.checkAndShowBulk()) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry') as HTMLElement).style.display = 'flex';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry') as HTMLElement).style.display = 'none';\n }\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+i)?.addEventListener('keyup', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[5];\n const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+clickIndex) as HTMLDivElement);\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+clickIndex) as HTMLInputElement);\n div.innerHTML = input.value;\n this.mappedValuesDueDates[clickIndex] = input.value;\n \n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+i)?.addEventListener('valueChanged', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[4];\n const form = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as SfIForm);\n const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLDivElement);\n div.innerHTML = '';\n var html = '';\n for(var i = 0; i < form.selectedValues().length; i++) {\n html += form.selectedValues()[i];\n if(i < (form.selectedValues().length - 1)) {\n html += \",\";\n }\n }\n div.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesTags[clickIndex] = form.selectedValues();\n\n // const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+clickIndex) as HTMLDivElement);\n // const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+clickIndex) as HTMLInputElement);\n // div.innerHTML = input.value;\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+i)?.addEventListener('valueChanged', (ev: any) => {\n\n const clickIndex = ev.target.id.split(\"-\")[4];\n const form = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+clickIndex) as SfIForm);\n console.log('valuechanged called', form.selectedValues());\n const div = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+clickIndex) as HTMLDivElement);\n div.innerHTML = '';\n var html = '';\n for(var i = 0; i < form.selectedValues().length; i++) {\n html += form.selectedValues()[i];\n if(i < (form.selectedValues().length - 1)) {\n html += \",\";\n }\n }\n div.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n this.mappedValuesUsers[clickIndex] = form.selectedValues();\n this.updateMappingStatus(form.selectedValues(), clickIndex);\n this.calculateAndShowSummary(); \n\n });\n\n }\n\n \n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-users')?.addEventListener('valueChanged', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-users') as SfIForm);\n console.log('valuechanged users', input.selectedValues());\n this.updateInAllSelections(\"users\", input.selectedValues());\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-date')?.addEventListener('keyup', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-date') as HTMLInputElement);\n this.updateInAllSelections(\"duedate\", input.value)\n\n });\n\n (this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-tags')?.addEventListener('valueChanged', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-multi-entry-tags') as SfIForm);\n this.updateInAllSelections(\"tags\", input.selectedValues());\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement).addEventListener('change', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement);\n if(input.checked) {\n this.showAllEvents();\n }\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement).addEventListener('change', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement);\n if(input.checked) {\n this.showMappedEvents();\n }\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement).addEventListener('change', () => {\n\n const input = ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement);\n if(input.checked) {\n this.showUnmappedEvents();\n }\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry-cancel') as HTMLInputElement).addEventListener('click', () => {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table-multi-entry') as HTMLElement).style.display = 'none';\n this.clearAllMappingSelections();\n\n });\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#button-back-add-mapping') as HTMLButtonElement)!.addEventListener('click', async () => {\n this.uploadMapping();\n });\n \n }\n\n applyFilter = (filter: string = \"all\") => {\n\n for(var i = 0; i < this.unmappedEvents.length; i++) {\n\n if(filter == \"mapped\") {\n\n\n if(this.mappedValuesUsers[i] != null && this.mappedValuesUsers[i] != \"\") {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'block';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'none';\n }\n\n }\n\n if(filter == \"unmapped\") {\n\n if(this.mappedValuesUsers[i] == null || this.mappedValuesUsers[i] == \"\") {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'block';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'none';\n }\n\n }\n\n if(filter == \"all\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-table'+i) as HTMLElement).style.display = 'block';\n\n }\n\n if(this.myRole == this.TAB_APPROVER) {\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[0].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[1].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-'+i) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-head-'+i) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[0].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[1].style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-'+i) as HTMLElement).style.display = 'none';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-head-'+i) as HTMLElement).style.display = 'none';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[0].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-date') as NodeListOf<HTMLElement>)[1].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-'+i) as HTMLElement).style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-date-head-'+i) as HTMLElement).style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[0].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelectorAll('.col-tags') as NodeListOf<HTMLElement>)[1].style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-'+i) as HTMLElement).style.display = 'table-cell';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('.col-tags-head-'+i) as HTMLElement).style.display = 'table-cell';\n }\n\n\n }\n\n if(filter == \"all\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-all') as HTMLInputElement).checked = true;\n\n }\n\n\n if(filter == \"mapped\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-mapped') as HTMLInputElement).checked = true;\n\n }\n\n if(filter == \"unmapped\") {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-filter-unmapped') as HTMLInputElement).checked = true;\n\n }\n\n }\n\n getIndexFromId = (id: string) => {\n\n for(var i = 0; i < this.unmappedEvents.length; i++) {\n\n if(this.unmappedEvents[i].id == id) {\n return i;\n }\n\n }\n\n return -1;\n }\n\n prepopulateMapping = (mappings: any) => {\n\n console.log('mappings', mappings);\n\n if(mappings == null) {\n return;\n }\n\n for(var i = 0; i < Object.keys(mappings.duedates).length; i++) {\n const eventId = Object.keys(mappings.duedates)[i];\n const index = this.getIndexFromId(eventId);\n this.mappedValuesDueDates[index] = mappings.duedates[eventId];\n }\n\n for(var i = 0; i < Object.keys(mappings.tags).length; i++) {\n const eventId = Object.keys(mappings.tags)[i];\n const index = this.getIndexFromId(eventId);\n this.mappedValuesTags[index] = mappings.tags[eventId];\n }\n\n for(var i = 0; i < Object.keys(mappings.users).length; i++) {\n const eventId = Object.keys(mappings.users)[i];\n const index = this.getIndexFromId(eventId);\n this.mappedValuesUsers[index] = mappings.users[eventId];\n }\n\n console.log(this.mappedValuesDueDates);\n console.log(this.mappedValuesTags);\n console.log(this.mappedValuesUsers);\n\n for(var i = 0; i < this.unmappedEvents.length; i++) {\n\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-div-'+i) as HTMLDivElement)!.innerHTML = (this.mappedValuesDueDates[i] != null && this.mappedValuesDueDates[i] != \"\") ? this.mappedValuesDueDates[i] : \"\";\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-override-date-input-'+i) as HTMLInputElement)!.value = (this.mappedValuesDueDates[i] != null && this.mappedValuesDueDates[i] != \"\") ? this.mappedValuesDueDates[i] : \"\";\n \n if(this.mappedValuesTags[i] != null) {\n var html = '';\n for(var j = 0; j < this.mappedValuesTags[i].length; j++) {\n html += this.mappedValuesTags[i][j];\n if(j < (this.mappedValuesTags[i].length - 1)) {\n html += ',';\n }\n }\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-tags-'+i) as HTMLDivElement)!.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+i) as SfIForm)!.preselectedValues = JSON.stringify(this.mappedValuesTags[i]);\n //((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-tags-'+i) as SfIForm)!.populatePreselected();\n }\n \n\n if(this.mappedValuesUsers[i] != null) {\n html = '';\n for(var j = 0; j < this.mappedValuesUsers[i].length; j++) {\n html += this.mappedValuesUsers[i][j];\n if(j < (this.mappedValuesUsers[i].length - 1)) {\n html += ',';\n }\n }\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-div-users-'+i) as HTMLDivElement)!.innerHTML = '<sf-i-elastic-text text=\"'+html+'\" minLength=\"20\"></sf-i-elastic-text>';\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+i) as SfIForm)!.preselectedValues = JSON.stringify(this.mappedValuesUsers[i]);\n //((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-input-users-'+i) as SfIForm)!.populatePreselected();\n }\n\n if(this.mappedValuesUsers[i] != null) {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+i) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-done\">check_circle</span>';\n } else {\n ((this._SfMappingContainer as HTMLDivElement).querySelector('#row-unmapped-status-'+i) as HTMLDivElement).innerHTML = '<span class=\"material-icons color-pending\">pending</span>';\n }\n \n\n }\n\n this.calculateAndShowSummary();\n\n }\n\n clearAllMappingSelections = () => {\n\n const inputArr = (this._SfMappingContainer as HTMLDivElement).querySelectorAll('.input-checkbox') as NodeListOf<HTMLInputElement>;\n for(var i = 0; i < inputArr.length; i++) {\n\n if(inputArr[i].checked) {\n inputArr[i].checked = false;\n inputArr[i].dispatchEvent(new Event('change'));\n }\n \n }\n\n }\n\n clearAllCalendars = () => {\n\n (this._SfCalendarContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfStreamContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfUpcomingContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfThisContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfPastContainer as HTMLDivElement).innerHTML = \"\";\n (this._SfCustomContainer as HTMLDivElement).innerHTML = \"\";\n\n }\n\n transformMappingsForUpload = (mapping: any) => {\n\n const duedates = mapping.duedates;\n const tags = mapping.tags;\n const users = mapping.users;\n\n const transformedDuedates : any = {};\n const transformedTags : any = {};\n const transformedUsers : any = {};\n\n console.log('unmappedevents[i] duedates',duedates);\n\n for(var i = 0; i < Object.keys(duedates).length; i++) {\n\n console.log('unmappedevents[i]',i,this.unmappedEvents[i]);\n\n const index = Object.keys(duedates)[i];\n const eventId = this.unmappedEvents[i].id;\n transformedDuedates[eventId] = duedates[index];\n\n }\n\n for(var i = 0; i < Object.keys(tags).length; i++) {\n\n const index = Object.keys(tags)[i];\n const eventId = this.unmappedEvents[i].id;\n transformedTags[eventId] = tags[index];\n\n }\n\n for(var i = 0; i < Object.keys(users).length; i++) {\n\n const index = Object.keys(users)[i];\n const eventId = this.unmappedEvents[i].id;\n transformedUsers[eventId] = users[index];\n\n }\n\n return {\n duedates: transformedDuedates,\n tags: transformedTags,\n users: transformedUsers\n }\n\n }\n\n uploadMapping = async () => {\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/mapevents\";\n\n const mapping = this.transformMappingsForUpload({\n duedates: this.mappedValuesDueDates,\n tags: this.mappedValuesTags,\n users: this.mappedValuesUsers\n });\n\n const body = { \"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0], \"role\": this.myRole, \"mapping\": JSON.stringify(mapping)} \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 sync', jsonRespose);\n this.setSuccess(\"Mapping uploaded successfully!\");\n setTimeout(() => {\n this.clearMessages()\n this.showChosenMapping();\n this.fetchEventMap();\n if(this.myRole == this.TAB_REPORTER) {\n this.renderMappingTabs(this.TAB_REPORTER);\n } else {\n this.renderMappingTabs(this.TAB_APPROVER);\n }\n }, 2000);\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n uploadEvents = async () => {\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/synccalendar\";\n\n const body = { \"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0], \"events\": JSON.stringify(this.events)} \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 sync', jsonRespose);\n this.loadMode();\n \n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n }\n\n processEvent = (value: any) => {\n\n console.log('processing due date', value);\n console.log('processing due date', value.duedate.replace(/['\"]+/g, ''));\n console.log('processing due date', this.mappings);\n\n var duedate = value.duedate;\n\n if(this.mappings.duedates[value.id] != null && this.mappings.duedates[value.id] != \"\") {\n duedate = this.mappings.duedates[value.id];\n }\n\n const duedateArr = 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 renderChosenProject = (events: any = null) => {\n\n if(events == null) {\n\n var html = '';\n\n html += '<div class=\"lb\"></div>';\n html += '<div class=\"d-flex justify-between align-center\">';\n html += '<div class=\"muted\">Calender doesn\\'t exist! &nbsp; &nbsp;</div>';\n html += '<button id=\"button-generate-chosen-project\" part=\"button\">Generate</button>';\n html += '</div>';\n html += '<div class=\"rb\"></div>';\n\n (this._SfContainerChosenProject as HTMLDivElement).innerHTML = html;\n\n (((this._SfContainerChosenProject as HTMLDivElement) as HTMLDivElement).querySelector('#button-generate-chosen-project') as HTMLButtonElement).addEventListener('click', async () => {\n await this.fetchList();\n });\n \n } else {\n\n }\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 fetchCalendar = async() => {\n\n this.apiBodyList = '{\"id\": \"' +(this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0]+ '\"}'\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/getcalendar\";\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr({\"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0]}, url, this._SfLoader, authorization)) as any;\n this._SfLoader.innerHTML = '';\n if(xhr.status == 200) {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n this.showChosenProject();\n (this._SfTitleChosenProject as HTMLElement).innerHTML = this.truncate((this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0], 20, true);\n this.events = JSON.parse(jsonRespose.data.value.events)\n // console.log(events);\n if(this.events != null) {\n this.renderTabs(this.TAB_YEAR);\n this.renderCalendar();\n }\n // this.renderChosenProject(events);\n \n } else {\n\n if(xhr.status === 404) {\n\n this.showChosenProject();\n (this._SfTitleChosenProject as HTMLElement).innerHTML = (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0];\n this.renderChosenProject();\n\n } else {\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n }\n\n }\n\n }\n\n fetchEventMap = async () => {\n\n let url = \"https://\"+this.apiId+\".execute-api.us-east-1.amazonaws.com/test/getunmappedevents\";\n\n const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\n const xhr : any = (await this.prepareXhr({\"projectid\": (this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedValues()[0], \"role\": this.myRole}, 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(jsonRespose);\n this.unmappedEvents = jsonRespose.data.unmappedEvents;\n this.mappings = jsonRespose.data.mappings;\n this.renderMapping( this.unmappedEvents)\n this.prepopulateMapping(this.mappings);\n this.applyFilter();\n if(jsonRespose.data.mappings != null) {\n (this._SfButtonBackCalendarMapping as HTMLButtonElement).style.visibility = 'visible';\n } else {\n (this._SfButtonBackCalendarMapping as HTMLButtonElement).style.visibility = 'hidden';\n }\n \n } else {\n\n const jsonRespose = JSON.parse(xhr.responseText);\n this.setError(jsonRespose.error);\n\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 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\n console.log('list response', JSON.stringify(jsonRespose));\n\n const fieldArr = JSON.parse(jsonRespose.data.value[this.apiResponseFieldList]) as Array<string>;\n this.events = null;\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 console.log('all events processed');\n this.uploadEvents();\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 showChooseProject = () => {\n\n var elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.choose-project') as NodeListOf<HTMLElement>;\n var index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'flex'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-project') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-mapping') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n }\n\n showChosenProject = () => {\n\n var elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.choose-project') as NodeListOf<HTMLElement>;\n var index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-project') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'flex'\n }\n\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-mapping') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n \n }\n\n showChosenMapping = () => {\n\n var elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.choose-project') as NodeListOf<HTMLElement>;\n var index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-project') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'none'\n }\n\n\n elems = (this._SfIEventsC as HTMLDivElement).querySelectorAll('.chosen-mapping') as NodeListOf<HTMLElement>;\n index = 0, length = elems.length;\n for ( ; index < length; index++) {\n elems[index].style.display = 'flex'\n }\n \n }\n\n truncate = ( str: string, n: number, useWordBoundary: boolean ) => {\n if (str.length <= n) { return str; }\n const subString = str.slice(0, n-1); // the original check\n return (useWordBoundary \n ? subString.slice(0, subString.lastIndexOf(\" \")) \n : subString) + \"&hellip;\";\n };\n\n initListenersAdmin = () => {\n\n var old_element = null;\n var new_element = null;\n\n old_element = (this._SfProject[0].querySelector('#sf-i-project') as SfIForm);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n this._SfProject[0].querySelector('#sf-i-project').addEventListener('valueChanged', async () => {\n (this._SfTitleChosenMapping as HTMLElement).innerHTML = this.truncate((this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0], 20, true);\n this.showChosenMapping();\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_REPORTER);\n }); \n\n old_element = (this._SfButtonBackChosenProject as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackChosenProject as HTMLButtonElement).addEventListener('click', async () => {\n this.loadMode();\n });\n\n old_element = (this._SfButtonSyncChosenProject as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonSyncChosenProject as HTMLButtonElement).addEventListener('click', async () => {\n this.fetchList();\n });\n\n old_element = (this._SfButtonBackChosenMapping as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackChosenMapping as HTMLButtonElement).addEventListener('click', async () => {\n this.loadMode();\n });\n\n old_element = (this._SfButtonMapChosenProject as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonMapChosenProject as HTMLButtonElement).addEventListener('click', async () => {\n (this._SfTitleChosenMapping as HTMLElement).innerHTML = this.truncate((this._SfProject[0].querySelector('#sf-i-project') as SfIForm).selectedTexts()[0], 20, true);\n this.showChosenMapping();\n this.fetchEventMap();\n this.renderMappingTabs(this.TAB_REPORTER);\n });\n\n \n old_element = (this._SfButtonBackCalendarMapping as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackCalendarMapping as HTMLButtonElement).addEventListener('click', async () => {\n this.fetchCalendar()\n });\n\n old_element = (this._SfButtonBackSyncMapping as HTMLButtonElement);\n new_element = old_element!.cloneNode(true);\n old_element?.parentElement?.replaceChild(new_element, old_element!);\n (this._SfButtonBackSyncMapping as HTMLButtonElement).addEventListener('click', async () => {\n this.fetchList();\n });\n \n }\n\n loadMode = async () => {\n\n if(this.mode == \"admin\") {\n\n this.showChooseProject();\n this.initListenersAdmin();\n\n } else {\n\n this.enableCalendar();\n this.initInputs();\n this.initCalendar();\n\n await this.fetchList();\n \n if(this.events != null) {\n this.renderTabs(this.TAB_YEAR);\n this.renderCalendar();\n }\n \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 if(this.mode == \"admin\") {\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 <h1 part=\"title\">${this.name}</h1>\n </div>\n <div class=\"d-flex justify-center\">\n <div part=\"badge\" class=\"badge\">Admin</div>\n </div>\n <br />\n <div class=\"loader-element\"></div>\n <div class=\"choose-project\" class=\"d-flex justify-center align-start\">\n <div class=\"d-flex flex-grow justify-center align-start\">\n <h3 part=\"results-title\" id=\"title-choose-project\" class=\"m-0\">Choose Project</h3>\n </div>\n </div>\n <div class=\"d-flex justify-between\">\n <div class=\"lb\"></div>\n <div class=\" main-container\">\n <div class=\"chosen-project\" class=\"d-flex justify-center align-start\">\n <div class=\"d-flex flex-grow justify-between align-start\">\n <div class=\"d-flex justify-center\">\n &nbsp;<button id=\"button-back-chosen-project\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\n &nbsp;<button part=\"button-icon\" class=\"invisible button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\n </div>\n <h3 part=\"results-title\" id=\"title-chosen-project\" class=\"m-0\">Project Name</h3>\n <div class=\"d-flex justify-center\">\n <button id=\"button-sync-chosen-project\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">sync</span></button>\n &nbsp;\n <button id=\"button-map-chosen-project\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">person_add</span></button>\n &nbsp;\n </div>\n </div>\n </div>\n <div class=\"chosen-mapping\" class=\"d-flex justify-center align-center\">\n <div class=\"d-flex flex-grow justify-between align-start\">\n <div>\n &nbsp;\n <button id=\"button-back-chosen-mapping\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\n <button part=\"button-icon\" class=\"invisible button-icon\"><span class=\"material-icons\">calendar_month</span></button>\n </div>\n <h3 part=\"results-title\" id=\"title-chosen-mapping\" class=\"m-0\">Project Name</h3>\n <div>\n <button id=\"button-back-sync-mapping\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">sync</span></button>\n <button id=\"button-back-calendar-mapping\" part=\"button-icon\" class=\"invisible button-icon\"><span class=\"material-icons\">calendar_month</span></button>\n &nbsp;\n </div>\n </div>\n </div>\n <div class=\"choose-project\" class=\"d-flex justify-center align-start\">\n <div class=\" mt-20\">\n <slot name=\"project\"></slot>\n </div>\n </div>\n <div id=\"container-chosen-project\" class=\"chosen-project hide d-flex justify-center align-start mt-20\">\n \n </div>\n <div class=\"chosen-project d-flex justify-center\" id=\"tab-container\">\n\n </div>\n \n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"calendar-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"stream-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"upcoming-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"this-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"past-container\">\n \n </div>\n <div class=\"chosen-project d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"custom-container\">\n \n </div>\n\n <div class=\"chosen-mapping d-flex justify-center mt-20\" id=\"mapping-tab-container\">\n\n </div>\n <div class=\"chosen-mapping d-flex flex-col mb-100\" id=\"mapping-container\">\n </div>\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 } else {\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 class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"this-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"past-container\">\n \n </div>\n <div class=\"d-flex flex-grow flex-wrap justify-center align-stretch\" id=\"custom-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}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sf-i-events': SfIEvents;\n }\n}\n"]}
@@ -2174,7 +2174,7 @@ export class SfIEvents extends LitElement {
2174
2174
  if(events[index][Object.keys(events[index])[k]].indexOf("[") >= 0) {
2175
2175
  html += this.getEventTexts(Object.keys(events[index])[k], JSON.parse(events[index][Object.keys(events[index])[k]]), events[index]);
2176
2176
  } else {
2177
- html += events[index][Object.keys(events[index])[k]].replace(/"/g, "");
2177
+ html += '<sf-i-elastic-text text="'+events[index][Object.keys(events[index])[k]].replace(/"/g, "")+'" minLength="20"></sf-i-elastic-text>';
2178
2178
  }
2179
2179
  html += '</td>';
2180
2180
 
@@ -2341,7 +2341,7 @@ export class SfIEvents extends LitElement {
2341
2341
  if(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].indexOf("[") >= 0) {
2342
2342
  html += this.getEventTexts(Object.keys(unmappedEvents[i])[k], JSON.parse(unmappedEvents[i][Object.keys(unmappedEvents[i])[k]]), unmappedEvents[i]);
2343
2343
  } else {
2344
- html += unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].replace(/"/g, "");
2344
+ html += ' <sf-i-elastic-text text="'+unmappedEvents[i][Object.keys(unmappedEvents[i])[k]].replace(/"/g, "")+'" minLength="20"></sf-i-elastic-text>';
2345
2345
  }
2346
2346
  html += '</td>';
2347
2347